aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/co/fantabos
diff options
context:
space:
mode:
author alemidev <me@alemi.dev>2023-01-29 05:03:01 +0100
committer alemidev <me@alemi.dev>2023-01-29 05:03:01 +0100
commit4b6bab1e8b3d50ccb67fa8380c591a5b0c00b16f (patch)
tree8a12363a1546e476cccd083c50c77787393960d6 /src/main/java/co/fantabos
parent93ceec462e6750929c25a2606d4b601171939dac (diff)
fix: load mods early and check config on setup
Diffstat (limited to 'src/main/java/co/fantabos')
-rw-r--r--src/main/java/co/fantabos/bscv/BoSCoVicino.java97
1 files changed, 46 insertions, 51 deletions
diff --git a/src/main/java/co/fantabos/bscv/BoSCoVicino.java b/src/main/java/co/fantabos/bscv/BoSCoVicino.java
index 7e6527e..2f2fed9 100644
--- a/src/main/java/co/fantabos/bscv/BoSCoVicino.java
+++ b/src/main/java/co/fantabos/bscv/BoSCoVicino.java
@@ -6,12 +6,19 @@ import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.player.ClientPlayerEntity;
import net.minecraft.command.CommandSource;
import net.minecraft.command.Commands;
+import net.minecraft.util.text.Color;
import net.minecraft.util.text.StringTextComponent;
+import net.minecraft.util.text.Style;
+import net.minecraft.util.text.TextComponent;
+import net.minecraft.util.text.event.HoverEvent;
import net.minecraftforge.client.event.ClientChatEvent;
+import net.minecraftforge.client.event.RenderGameOverlayEvent;
+import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegisterCommandsEvent;
import net.minecraftforge.event.RegistryEvent;
+import net.minecraftforge.event.world.WorldEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.InterModComms;
import net.minecraftforge.fml.ModLoadingContext;
@@ -41,7 +48,7 @@ import co.fantabos.bscv.modules.*;
@Mod("bscv")
public class BoSCoVicino {
// Directly reference a log4j logger.
- private static final Logger LOGGER = LogManager.getLogger();
+ public static final Logger LOGGER = LogManager.getLogger();
public static Minecraft minecraft;
@@ -51,23 +58,17 @@ public class BoSCoVicino {
public BoSCoVicino() {
// Register the setup method for modloading
- FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
- // Register the enqueueIMC method for modloading
- FMLJavaModLoadingContext.get().getModEventBus().addListener(this::enqueueIMC);
- // Register the processIMC method for modloading
- FMLJavaModLoadingContext.get().getModEventBus().addListener(this::processIMC);
- // Register the doClientStuff method for modloading
- FMLJavaModLoadingContext.get().getModEventBus().addListener(this::doClientStuff);
-
+ FMLJavaModLoadingContext.get().getModEventBus().addListener(this::clientSetup);
// Store minecraft instance
BoSCoVicino.minecraft = Minecraft.getInstance();
- ForgeConfigSpec.Builder builder = new ForgeConfigSpec.Builder();
-
// load and register mods
BoSCoVicino.mods = new ArrayList<Module>();
+ ForgeConfigSpec.Builder builder = new ForgeConfigSpec.Builder();
+
+ BoSCoVicino.mods.add(new Hud(builder, this.dispatcher));
BoSCoVicino.mods.add(new Fullbright(builder, this.dispatcher));
BoSCoVicino.mods.add(new VanillaFlight(builder, this.dispatcher));
@@ -76,9 +77,24 @@ public class BoSCoVicino {
// register config handler
ModLoadingContext.get().registerConfig(Type.CLIENT, spec, "bscv.toml");
+ // Register ourselves for server and other game events we are interested in
+ MinecraftForge.EVENT_BUS.register(this);
+ }
+
+ public static void log(String message) {
+ BoSCoVicino.minecraft.gui.getChat().addMessage(new StringTextComponent(message));
+ }
+
+ private void clientSetup(final FMLClientSetupEvent event) {
+ LOGGER.info("Initializing modules");
+
+ for (Module m : BoSCoVicino.mods) {
+ if (m.enabled.get()) m.enable();
+ }
+
// TEMPORARY! add command to regenerate suggestions
dispatcher.register(
- Commands.literal("rebuild_hints")
+ Commands.literal("hints")
.executes(ctx -> {
ClientPlayerEntity player = BoSCoVicino.minecraft.player;
if (player != null) {
@@ -105,43 +121,8 @@ public class BoSCoVicino {
}
})
);
-
- // Register ourselves for server and other game events we are interested in
- MinecraftForge.EVENT_BUS.register(this);
- }
-
- public static void log(String message) {
- BoSCoVicino.minecraft.gui.getChat().addMessage(new StringTextComponent(message));
- }
-
- private void setup(final FMLCommonSetupEvent event) {
- // some preinit code
- LOGGER.info("HELLO FROM PREINIT");
- LOGGER.info("DIRT BLOCK >> {}", Blocks.DIRT.getRegistryName());
- }
-
- private void doClientStuff(final FMLClientSetupEvent event) {
- // do something that can only be done on the client
- LOGGER.info("Got game settings {}", event.getMinecraftSupplier().get().options);
}
- private void enqueueIMC(final InterModEnqueueEvent event) {
- // some example code to dispatch IMC to another mod
- InterModComms.sendTo("bscv", "helloworld", () -> { LOGGER.info("Hello world from the MDK"); return "Hello world";});
- }
-
- private void processIMC(final InterModProcessEvent event) {
- // some example code to receive and process InterModComms from other mods
- LOGGER.info("Got IMC {}", event.getIMCStream().
- map(m->m.getMessageSupplier().get()).
- collect(Collectors.toList()));
- }
-
- // @SubscribeEvent
- // public void onRegisterCommand(RegisterCommandsEvent event) {
- // this.dispatcher.
- // }
-
@SubscribeEvent
public void onClientChatEvent(ClientChatEvent event) {
if (event.getMessage().startsWith("/")) {
@@ -157,11 +138,25 @@ public class BoSCoVicino {
}
}
- // You can use SubscribeEvent and let the Event Bus discover methods to call
@SubscribeEvent
- public void onServerStarting(FMLServerStartingEvent event) {
- // do something when the server starts
- LOGGER.info("HELLO from server starting");
+ public void onWorldLoad(WorldEvent.Load event) {
+ // TEMPORARY! add command to regenerate suggestions
+ ClientPlayerEntity player = BoSCoVicino.minecraft.player;
+ if (player != null) {
+ try {
+ Field commands = player.connection.getClass().getDeclaredField("field_195517_n"); // "commands", it's obfuscated
+ commands.setAccessible(true);
+ commands.set(player.connection, this.dispatcher);
+ LOGGER.info("Rebuild HINTS");
+ log("> rebuilt hints");
+ } catch (NoSuchFieldException e) {
+ LOGGER.error("No such field Exception while rebuilding hints");
+ } catch (IllegalAccessException e) {
+ LOGGER.error("Illegal Access Exception while rebuilding hints");
+ }
+ } else {
+ LOGGER.error("Local player is NULL");
+ }
}
// You can use EventBusSubscriber to automatically subscribe events on the contained class (this is subscribing to the MOD