-
-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathFBP.java
More file actions
145 lines (109 loc) · 7.22 KB
/
FBP.java
File metadata and controls
145 lines (109 loc) · 7.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
package dev.redstudio.fbp;
import dev.redstudio.fbp.block.AnimationDummyBlock;
import dev.redstudio.fbp.handlers.*;
import dev.redstudio.fbp.keys.KeyBindings;
import dev.redstudio.fbp.particles.FBPParticleManager;
import meldexun.matrixutil.MathUtil;
import net.jafama.FastMath;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.client.particle.ParticleManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.client.renderer.vertex.VertexFormat;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.IRenderHandler;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import java.io.File;
import java.util.*;
import static dev.redstudio.fbp.ProjectConstants.*;
// /$$$$$$$$ /$$ /$$$$$$$ /$$ /$$ /$$$$$$$ /$$ /$$ /$$
// | $$_____/ |__/ | $$__ $$| $$ | $$ | $$__ $$ | $$ |__/ | $$
// | $$ /$$$$$$ /$$$$$$$ /$$$$$$$ /$$ /$$$$$$ /$$$$$$ | $$ \ $$| $$ /$$$$$$ /$$$$$$$| $$ /$$ | $$ \ $$ /$$$$$$ /$$$$$$ /$$$$$$ /$$ /$$$$$$$| $$ /$$$$$$ /$$$$$$$
// | $$$$$|____ $$| $$__ $$ /$$_____/| $$ /$$__ $$ /$$__ $$ | $$$$$$$ | $$ /$$__ $$ /$$_____/| $$ /$$/ | $$$$$$$/|____ $$ /$$__ $$|_ $$_/ | $$ /$$_____/| $$ /$$__ $$ /$$_____/
// | $$__/ /$$$$$$$| $$ \ $$| $$ | $$| $$$$$$$$| $$ \__/ | $$__ $$| $$| $$ \ $$| $$ | $$$$$$/ | $$____/ /$$$$$$$| $$ \__/ | $$ | $$| $$ | $$| $$$$$$$$| $$$$$$
// | $$ /$$__ $$| $$ | $$| $$ | $$| $$_____/| $$ | $$ \ $$| $$| $$ | $$| $$ | $$_ $$ | $$ /$$__ $$| $$ | $$ /$$| $$| $$ | $$| $$_____/ \____ $$
// | $$ | $$$$$$$| $$ | $$| $$$$$$$| $$| $$$$$$$| $$ | $$$$$$$/| $$| $$$$$$/| $$$$$$$| $$ \ $$ | $$ | $$$$$$$| $$ | $$$$/| $$| $$$$$$$| $$| $$$$$$$ /$$$$$$$/
// |__/ \_______/|__/ |__/ \_______/|__/ \_______/|__/ |_______/ |__/ \______/ \_______/|__/ \__/ |__/ \_______/|__/ \___/ |__/ \_______/|__/ \_______/|_______/
@Mod(clientSideOnly = true, modid = ID, name = NAME, version = VERSION, dependencies = "required-after:mixinbooter@[10.7,);required-after:redcore@[0.6,)", guiFactory = "dev.redstudio.fbp.config.FBPConfigGuiFactory", updateJSON = "https://forge.curseupdate.com/666575/" + ID)
public final class FBP {
public static final Minecraft MC = Minecraft.getMinecraft();
public static final ResourceLocation PARTICLES_TEXTURE = new ResourceLocation("textures/particle/particles.png");
public static File mainConfigFile, floatingMaterialsFile, animBlacklistFile, particleBlacklistFile;
public static File oldMainConfigFile, oldFloatingMaterialsFile, oldParticleBlacklistFile, oldAnimBlacklistFile;
public static File oldNewMainConfigFile;
public static boolean enabled, frozen, showInMillis, infiniteDuration, randomRotation, spawnWhileFrozen, randomizedScale, randomFadingSpeed, entityCollision, bounceOffWalls, lowTraction, smartBreaking, fancyFlame, fancySmoke, waterPhysics;
public static boolean fancyPlaceAnim, spawnPlaceParticles;
public static boolean fancyWeather, dynamicWeather;
public static boolean experiments;
public static boolean debug;
public static int minAge, maxAge, particlesPerAxis;
public static float scaleMult, gravityMult, rotationMult;
public static float weatherParticleDensity, weatherRenderDistance;
public static List<Material> floatingMaterials = new ArrayList<>();
public static List<String> blockParticleBlacklist = new ArrayList<>();
public static List<String> blockAnimBlacklist = new ArrayList<>();
public static final SplittableRandom RANDOM = new SplittableRandom();
public static IRenderHandler fancyWeatherRenderer, originalWeatherRenderer;
public static FBPParticleManager fancyEffectRenderer;
public static ParticleManager originalEffectRenderer;
public static final AnimationDummyBlock DUMMY_BLOCK = new AnimationDummyBlock();
public static final VertexFormat VERTEX_FORMAT = new VertexFormat();
public static final boolean IS_CELERITASDYNAMICLIGHTS_LOADED = Loader.isModLoaded("celeritasdynamiclights");
@Mod.EventHandler
public void preInit(FMLPreInitializationEvent preInitializationEvent) {
oldMainConfigFile = new File(preInitializationEvent.getModConfigurationDirectory() + "/fbp/Particle.properties");
oldFloatingMaterialsFile = new File(preInitializationEvent.getModConfigurationDirectory() + "/fbp/FloatingMaterials.txt");
oldAnimBlacklistFile = new File(preInitializationEvent.getModConfigurationDirectory() + "/fbp/AnimBlockBlacklist.txt");
oldParticleBlacklistFile = new File(preInitializationEvent.getModConfigurationDirectory() + "/fbp/ParticleBlockBlacklist.txt");
oldNewMainConfigFile = new File(preInitializationEvent.getModConfigurationDirectory() + "/fbp/Config.txt");
mainConfigFile = new File(preInitializationEvent.getModConfigurationDirectory() + "/fbp/Config.yaml");
floatingMaterialsFile = new File(preInitializationEvent.getModConfigurationDirectory() + "/fbp/Floating Materials.txt");
animBlacklistFile = new File(preInitializationEvent.getModConfigurationDirectory() + "/fbp/Animation Block Blacklist.txt");
particleBlacklistFile = new File(preInitializationEvent.getModConfigurationDirectory() + "/fbp/Particle Block Blacklist.txt");
ConfigHandler.init();
MathUtil.setSinFunc(FastMath::sin);
MathUtil.setCosFunc(FastMath::cos);
}
@Mod.EventHandler
public void init(FMLInitializationEvent initializationEvent) {
KeyBindings.init();
MinecraftForge.EVENT_BUS.register(new EventHandler());
MinecraftForge.EVENT_BUS.register(new GuiHandler());
MinecraftForge.EVENT_BUS.register(KeyInputHandler.class);
VERTEX_FORMAT.addElement(DefaultVertexFormats.POSITION_3F);
VERTEX_FORMAT.addElement(DefaultVertexFormats.TEX_2F);
VERTEX_FORMAT.addElement(DefaultVertexFormats.COLOR_4UB);
VERTEX_FORMAT.addElement(DefaultVertexFormats.TEX_2S);
VERTEX_FORMAT.addElement(DefaultVertexFormats.NORMAL_3B);
}
/// Enable or disable FBP
///
/// Currently, not really documented as it probably won't exist at least not like this when the separation from MC particle system is done
public static void setEnabled(boolean newState) {
if (enabled != newState) {
if (newState) {
if (fancyEffectRenderer != null)
fancyEffectRenderer.carryOver();
MC.effectRenderer = fancyEffectRenderer;
if (MC.world != null && fancyWeather)
MC.world.provider.setWeatherRenderer(fancyWeatherRenderer);
} else {
MC.effectRenderer = originalEffectRenderer;
if (MC.world != null)
MC.world.provider.setWeatherRenderer(originalWeatherRenderer);
frozen = false;
}
}
enabled = newState;
}
public static void updateDebugHandler() {
if (debug)
MinecraftForge.EVENT_BUS.register(DebugHandler.class);
else
MinecraftForge.EVENT_BUS.unregister(DebugHandler.class);
}
}