diff --git a/build.properties b/build.properties index b56c513..dc36927 100644 --- a/build.properties +++ b/build.properties @@ -5,5 +5,5 @@ mod_name=Zeta mc_version=1.20.1 mapping_channel=official mod_id=zeta -build_number=20-event23 +build_number=20-event27 dir_output=../Build Output/Zeta/ diff --git a/src/main/java/org/violetmoon/zeta/event/play/loading/ZGatherAdditionalFlags.java b/src/main/java/org/violetmoon/zeta/event/play/loading/ZGatherAdditionalFlags.java index 7e65d48..a1b60ce 100644 --- a/src/main/java/org/violetmoon/zeta/event/play/loading/ZGatherAdditionalFlags.java +++ b/src/main/java/org/violetmoon/zeta/event/play/loading/ZGatherAdditionalFlags.java @@ -1,11 +1,8 @@ package org.violetmoon.zeta.event.play.loading; -import net.minecraftforge.eventbus.api.Event; import org.violetmoon.zeta.config.ConfigFlagManager; import org.violetmoon.zeta.event.bus.IZetaPlayEvent; -import java.util.Objects; - public interface ZGatherAdditionalFlags extends IZetaPlayEvent { ConfigFlagManager flagManager(); diff --git a/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZClientTick.java b/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZClientTick.java index 60b5b5c..a950ad9 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZClientTick.java +++ b/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZClientTick.java @@ -5,7 +5,7 @@ import net.minecraftforge.event.TickEvent.ClientTickEvent; public class ForgeZClientTick implements ZClientTick { - private final ClientTickEvent e; + public final ClientTickEvent e; public ForgeZClientTick(ClientTickEvent e) { this.e = e; diff --git a/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZRenderGuiOverlay.java b/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZRenderGuiOverlay.java index 2679201..6843279 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZRenderGuiOverlay.java +++ b/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZRenderGuiOverlay.java @@ -10,8 +10,8 @@ import net.minecraftforge.client.event.RenderGuiOverlayEvent; import net.minecraftforge.client.gui.overlay.ForgeGui; -public class ForgeZRenderGuiOverlay extends Event implements ZRenderGuiOverlay { - private final RenderGuiOverlayEvent e; +public class ForgeZRenderGuiOverlay implements ZRenderGuiOverlay { + public final RenderGuiOverlayEvent e; public ForgeZRenderGuiOverlay(RenderGuiOverlayEvent e) { this.e = e; diff --git a/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZRenderLiving.java b/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZRenderLiving.java index 23b6fd3..385a837 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZRenderLiving.java +++ b/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZRenderLiving.java @@ -8,7 +8,7 @@ import net.minecraftforge.client.event.RenderLivingEvent; public abstract class ForgeZRenderLiving implements ZRenderLiving { - protected final RenderLivingEvent e; + public final RenderLivingEvent e; public ForgeZRenderLiving(RenderLivingEvent e) { this.e = e; diff --git a/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZRenderPlayer.java b/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZRenderPlayer.java index 76019e1..2988bc1 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZRenderPlayer.java +++ b/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZRenderPlayer.java @@ -8,9 +8,10 @@ import net.minecraft.client.renderer.entity.player.PlayerRenderer; import net.minecraft.world.entity.player.Player; import net.minecraftforge.client.event.RenderPlayerEvent; +import org.violetmoon.zeta.event.bus.IZetaPlayEvent; public abstract class ForgeZRenderPlayer implements ZRenderPlayer { - private final RenderPlayerEvent e; + public final RenderPlayerEvent e; public ForgeZRenderPlayer(RenderPlayerEvent e) { this.e = e; @@ -35,12 +36,14 @@ public ForgeZRenderPlayer(RenderPlayerEvent e) { public Player getEntity() {return e.getEntity();} public static class Pre extends ForgeZRenderPlayer implements ZRenderPlayer.Pre { + public Pre(RenderPlayerEvent.Pre e) { super(e); } } - public static class Post extends ForgeZRenderPlayer implements ZRenderPlayer.Post { + public static class Post extends ForgeZRenderPlayer implements ZRenderPlayer.Post, IZetaPlayEvent { + public Post(RenderPlayerEvent.Post e) { super(e); } diff --git a/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZRenderTick.java b/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZRenderTick.java index 059d58d..d8611d3 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZRenderTick.java +++ b/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZRenderTick.java @@ -7,7 +7,7 @@ import java.util.Objects; public class ForgeZRenderTick implements ZRenderTick { - private final TickEvent.RenderTickEvent e; + public final TickEvent.RenderTickEvent e; public ForgeZRenderTick(TickEvent.RenderTickEvent e) { this.e = e; diff --git a/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZScreen.java b/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZScreen.java index 2348f3e..be632e2 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZScreen.java +++ b/src/main/java/org/violetmoon/zetaimplforge/client/event/play/ForgeZScreen.java @@ -10,7 +10,7 @@ import net.minecraftforge.client.event.ScreenEvent; public class ForgeZScreen implements ZScreen { - private final ScreenEvent e; + public final ScreenEvent e; public ForgeZScreen(ScreenEvent e) { this.e = e; @@ -58,7 +58,7 @@ public Post(ScreenEvent.Init.Post e) { } public static class Render extends ForgeZScreen implements ZScreen.Render { - private final ScreenEvent.Render e; + public final ScreenEvent.Render e; public Render(ScreenEvent.Render e) { super(e); diff --git a/src/main/java/org/violetmoon/zetaimplforge/event/ForgeEventsRemapper.java b/src/main/java/org/violetmoon/zetaimplforge/event/ForgeEventsRemapper.java index b7b127c..ca4a939 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/event/ForgeEventsRemapper.java +++ b/src/main/java/org/violetmoon/zetaimplforge/event/ForgeEventsRemapper.java @@ -1,6 +1,8 @@ package org.violetmoon.zetaimplforge.event; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; +import net.minecraftforge.client.event.RenderGuiOverlayEvent; +import net.minecraftforge.client.gui.overlay.VanillaGuiOverlay; import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.Event; import net.minecraftforge.eventbus.api.EventPriority; @@ -88,17 +90,41 @@ private F createForgeEvent(@NotNull Z event, Function Consumer createForgeConsumer( MethodHandle zetaEventConsumer, Function forgeToZetaFunc, Class zetaEventBaseClass, Class forgeEventClass) { + + //special cases fo forge events that are to be sub divided into phases + + // for gui overlay event + VanillaGuiOverlay overlay = guessGuiOverlayFromClassName(zetaEventBaseClass, forgeEventClass.getSuperclass()); + if (overlay != null) { + //here we know that phase must not be null + return event -> { + try { + RenderGuiOverlayEvent rge = (RenderGuiOverlayEvent) event; + if (rge.getOverlay() != overlay.type()) return; + zetaEventConsumer.invoke(forgeToZetaFunc.apply(event)); + } catch (Throwable e) { + throw new RuntimeException(e); + } + }; + } + //hack for tick events Phase phase = Phase.guessFromClassName(zetaEventBaseClass, forgeEventClass); + if (phase != Phase.NONE) { + return event -> { + try { + //luckily this phase madness will go away with new neoforge + TickEvent te = (TickEvent) event; + if ((phase == Phase.START) ^ (te.phase == TickEvent.Phase.START)) return; + zetaEventConsumer.invoke(forgeToZetaFunc.apply(event)); + } catch (Throwable e) { + throw new RuntimeException(e); + } + }; + } return event -> { try { - //luckily this phase madness will go away with new neoforge - if (phase != Phase.NONE) { - TickEvent te = (TickEvent) event; - if (phase == Phase.START && te.phase != TickEvent.Phase.START) return; - if (phase == Phase.END && te.phase != TickEvent.Phase.END) return; - } zetaEventConsumer.invoke(forgeToZetaFunc.apply(event)); } catch (Throwable e) { throw new RuntimeException(e); @@ -107,24 +133,47 @@ private Consumer createForgeConsumer( } // for generic events - public void registerSubClassWithGeneric(Class baseZetaEventClass, Class forgeZetaEventClass, Class genericClass) { - registerSubClass(baseZetaEventClass, forgeZetaEventClass); + // auto register ones are deprecated. Register manually, its faster and requires no reflection hacks + @Deprecated + public void registerWrapperWithGeneric(Class baseZetaEventClass, Class forgeZetaEventClass, Class genericClass) { + registerWrapper(baseZetaEventClass, forgeZetaEventClass); generics.put(baseZetaEventClass, genericClass); } - public void registerSubClass(Class baseZetaEventClass, Class forgeZetaEventClass) { + @Deprecated + public void registerWrapper(Class baseZetaEventClass, Class forgeZetaEventClass) { + + registerWrapper(baseZetaEventClass, forgeZetaEventClass, null); + } + + @Deprecated + public void registerWrapperWithGeneric(Class baseZetaEventClass, Class forgeZetaEventClass, + Function constructor, Class genericClass) { + registerWrapper(baseZetaEventClass, forgeZetaEventClass, constructor); + generics.put(baseZetaEventClass, genericClass); + } - registerSubClass(baseZetaEventClass, forgeZetaEventClass, null); + //register known ones + public void registerWrapper(Class baseZetaEventClass, Class forgeEventClass, + Function constructor, Function unwrapper) { + zetaToForgeEventClassHack.put(baseZetaEventClass, forgeEventClass); + forgeToZetaMap.put(baseZetaEventClass, constructor); + zetaToForgeMap.put(baseZetaEventClass, unwrapper); } - public void registerSubClassWithGeneric(Class baseZetaEventClass, Class forgeZetaEventClass, - Function constructor, Class genericClass) { - registerSubClass(baseZetaEventClass, forgeZetaEventClass, constructor); + public void registerWrapperWithGenerics(Class baseZetaEventClass, Class forgeEventClass, + Function constructor, Function unwrapper, + Class genericClass) { + zetaToForgeEventClassHack.put(baseZetaEventClass, forgeEventClass); + forgeToZetaMap.put(baseZetaEventClass, constructor); + zetaToForgeMap.put(baseZetaEventClass, unwrapper); generics.put(baseZetaEventClass, genericClass); } - public void registerSubClass(Class baseZetaEventClass, Class forgeZetaEventClass, - @Nullable Function constructor) { + + @Deprecated + public void registerWrapper(Class baseZetaEventClass, Class forgeZetaEventClass, + @Nullable Function constructor) { Object old1; Object old2 = null; boolean isNoWrapper = false; @@ -268,7 +317,7 @@ private Function findWrappedForgeEvent(Clas return null; } - throw new RuntimeException("No wrapped forge Event found for Zeta event class " + zetaEventClass); + throw new RuntimeException("No e forge Event found for Zeta event class " + zetaEventClass); } private Function findWrappedZetaEvent(Class zetaEventClass, Class baseZetaEventClass) { @@ -285,7 +334,7 @@ private Function findWrappedZetaEvent(Class }; } - throw new RuntimeException("No wrapped Zeta Event found for Zeta event class " + zetaEventClass); + throw new RuntimeException("No e Zeta Event found for Zeta event class " + zetaEventClass); } public static Field findFieldInClassHierarchy(Class clazz, Predicate predicate) { @@ -345,12 +394,28 @@ private static Phase guessFromClassName(Class zetaEventClass, Class forgeC } } + private static final Map, VanillaGuiOverlay> GUI_OVERLAY_CACHE = new ConcurrentHashMap<>(); - private static final Map, EventPriority> CACHE = new ConcurrentHashMap<>(); + @Nullable + private static VanillaGuiOverlay guessGuiOverlayFromClassName(Class zetaEventClass, Class forgeClass) { + if (forgeClass.isAssignableFrom(RenderGuiOverlayEvent.class)) return null; + return GUI_OVERLAY_CACHE.computeIfAbsent(zetaEventClass, zec -> { + String simpleName = zec.getSimpleName(); + for (VanillaGuiOverlay overlay : VanillaGuiOverlay.values()) { + if (simpleName.toUpperCase().equals(overlay.name().replace("_", ""))) { + return overlay; + } + } + return null; + }); + } + + + private static final Map, EventPriority> PRIORITY_CACHE = new ConcurrentHashMap<>(); private static EventPriority guessPriorityFromClassName(Class zetaEventClass) { - return CACHE.computeIfAbsent(zetaEventClass, cl -> { - String simpleName = zetaEventClass.getSimpleName(); + return PRIORITY_CACHE.computeIfAbsent(zetaEventClass, zec -> { + String simpleName = zec.getSimpleName(); for (EventPriority p : EventPriority.values()) { String name = WordUtils.capitalizeFully(p.name().toLowerCase()); if (simpleName.endsWith(name)) { diff --git a/src/main/java/org/violetmoon/zetaimplforge/event/ForgeZetaEventBus.java b/src/main/java/org/violetmoon/zetaimplforge/event/ForgeZetaEventBus.java index a0b62a9..84c807a 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/event/ForgeZetaEventBus.java +++ b/src/main/java/org/violetmoon/zetaimplforge/event/ForgeZetaEventBus.java @@ -6,10 +6,20 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.client.event.RenderGuiOverlayEvent; +import net.minecraftforge.client.event.RenderLivingEvent; +import net.minecraftforge.client.event.RenderPlayerEvent; +import net.minecraftforge.client.event.ScreenEvent; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.AttachCapabilitiesEvent; +import net.minecraftforge.event.TickEvent; +import net.minecraftforge.event.entity.EntityAttributeCreationEvent; +import net.minecraftforge.event.entity.living.*; +import net.minecraftforge.event.entity.player.ItemTooltipEvent; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.eventbus.api.Event; import net.minecraftforge.eventbus.api.IEventBus; +import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.loading.FMLEnvironment; import org.apache.logging.log4j.Logger; @@ -103,9 +113,9 @@ protected void subscribeMethod(Method method, Object receiver, Class owningCl if (receiver != null) handle = handle.bindTo(receiver); - var converted = remapper.remapAndRegister(forgeBus, owningClazz, handle, zetaEventClass); + Object convertedMethod = remapper.remapAndRegister(forgeBus, owningClazz, handle, zetaEventClass); //store here so we can unregister later - convertedHandlers.put(new Key(method, receiver, owningClazz), converted); + convertedHandlers.put(new Key(method, receiver, owningClazz), convertedMethod); } @Override @@ -134,29 +144,29 @@ public T fire(@NotNull T event, Class firedAs) { // all these are for bus specific events. The only bus that should have specific stuff is the play one // for generic events - public void registerSubClassWithGeneric(Class baseZetaEventClass, Class forgeZetaEventClass, Class genericClass) { + public void registerWrapperWithGenerics(Class baseZetaEventClass, Class forgeZetaEventClass, Class genericClass) { synchronized (remapper) { - remapper.registerSubClassWithGeneric(baseZetaEventClass, forgeZetaEventClass, genericClass); + remapper.registerWrapperWithGeneric(baseZetaEventClass, forgeZetaEventClass, genericClass); } } - public void registerSubClass(Class baseZetaEventClass, Class forgeZetaEventClass) { + public void registerWrapper(Class baseZetaEventClass, Class forgeZetaEventClass) { synchronized (remapper) { - remapper.registerSubClass(baseZetaEventClass, forgeZetaEventClass, null); + remapper.registerWrapper(baseZetaEventClass, forgeZetaEventClass, null); } } - public void registerSubClassWithGeneric(Class baseZetaEventClass, Class forgeZetaEventClass, + public void registerWrapperWithGenerics(Class baseZetaEventClass, Class forgeZetaEventClass, Function constructor, Class genericClass) { synchronized (remapper) { - remapper.registerSubClassWithGeneric(baseZetaEventClass, forgeZetaEventClass, constructor, genericClass); + remapper.registerWrapperWithGeneric(baseZetaEventClass, forgeZetaEventClass, constructor, genericClass); } } - public void registerSubClass(Class baseZetaEventClass, Class forgeZetaEventClass, - @Nullable Function constructor) { + public void registerWrapper(Class baseZetaEventClass, Class forgeZetaEventClass, + @Nullable Function constructor) { synchronized (remapper) { - remapper.registerSubClass(baseZetaEventClass, forgeZetaEventClass, constructor); + remapper.registerWrapper(baseZetaEventClass, forgeZetaEventClass, constructor); } } @@ -165,114 +175,134 @@ public void registerSubClass(Class baseZetaEven // instances so we don't create multiple as reflections take time and memory private static final ForgeEventsRemapper LOAD_EVENTS_REMAPPER = Util.make(new ForgeEventsRemapper<>(IZetaLoadEvent.class, Event.class), r -> { + //TODO: repace all these with explicit ones + // adds known events subclasses to the bus - r.registerSubClass(ZCommonSetup.class, ForgeZCommonSetup.class); - r.registerSubClass(ZEntityAttributeCreation.class, ForgeZEntityAttributeCreation.class); - r.registerSubClass(ZModulesReady.class, ForgeZModulesReady.class); - r.registerSubClass(ZRegister.class, ForgeZRegister.class); - r.registerSubClass(ZRegister.Post.class, ForgeZRegister.Post.class); - r.registerSubClass(ZConfigChanged.class, ForgeZConfigChange.class); - r.registerSubClass(ZLoadComplete.class, ForgeZLoadComplete.class); + r.registerWrapper(ZCommonSetup.class, FMLCommonSetupEvent.class, + ForgeZCommonSetup::new, ForgeZCommonSetup::e); + r.registerWrapper(ZEntityAttributeCreation.class, EntityAttributeCreationEvent.class, + ForgeZEntityAttributeCreation::new, ForgeZEntityAttributeCreation::e); + r.registerWrapper(ZModulesReady.class, ForgeZModulesReady.class); + r.registerWrapper(ZRegister.class, ForgeZRegister.class); + r.registerWrapper(ZRegister.Post.class, ForgeZRegister.Post.class); + r.registerWrapper(ZConfigChanged.class, ForgeZConfigChange.class); + r.registerWrapper(ZLoadComplete.class, ForgeZLoadComplete.class); //zeta own - r.registerSubClass(ZGatherAdvancementModifiers.class, ForgeZGatherAdvancementModifiers.class); + r.registerWrapper(ZGatherAdvancementModifiers.class, ForgeZGatherAdvancementModifiers.class); // client ones again? if (FMLEnvironment.dist == Dist.DEDICATED_SERVER) return; - r.registerSubClass(ZAddModels.class, ForgeZAddModels.class); - r.registerSubClass(ZAddModelLayers.class, ForgeZAddModelLayers.class); - r.registerSubClass(ZClientSetup.class, ForgeZClientSetup.class); - r.registerSubClass(ZKeyMapping.class, ForgeZKeyMapping.class); - r.registerSubClass(ZModel.RegisterGeometryLoaders.class, ForgeZModel.RegisterGeometryLoaders.class); - r.registerSubClass(ZModel.RegisterAdditional.class, ForgeZModel.RegisterAdditional.class); - r.registerSubClass(ZModel.BakingCompleted.class, ForgeZModel.BakingCompleted.class); - r.registerSubClass(ZModel.ModifyBakingResult.class, ForgeZModel.ModifyBakingResult.class); - r.registerSubClass(ZRegisterLayerDefinitions.class, ForgeZRegisterLayerDefinitions.class); - r.registerSubClass(ZTooltipComponents.class, ForgeZTooltipComponents.class); - r.registerSubClass(ZRegisterClientReloadListener.class, ForgeZRegisterClientReloadListener.class); - r.registerSubClass(ZFirstClientTick.class, ForgeZFirstClientTick.class); - - r.registerSubClass(ZAddBlockColorHandlers.class, ForgeZAddBlockColorHandlers.class); - r.registerSubClass(ZAddItemColorHandlers.class, ForgeZAddItemColorHandlers.class); + r.registerWrapper(ZAddModels.class, ForgeZAddModels.class); + r.registerWrapper(ZAddModelLayers.class, ForgeZAddModelLayers.class); + r.registerWrapper(ZClientSetup.class, ForgeZClientSetup.class); + r.registerWrapper(ZKeyMapping.class, ForgeZKeyMapping.class); + r.registerWrapper(ZModel.RegisterGeometryLoaders.class, ForgeZModel.RegisterGeometryLoaders.class); + r.registerWrapper(ZModel.RegisterAdditional.class, ForgeZModel.RegisterAdditional.class); + r.registerWrapper(ZModel.BakingCompleted.class, ForgeZModel.BakingCompleted.class); + r.registerWrapper(ZModel.ModifyBakingResult.class, ForgeZModel.ModifyBakingResult.class); + r.registerWrapper(ZRegisterLayerDefinitions.class, ForgeZRegisterLayerDefinitions.class); + r.registerWrapper(ZTooltipComponents.class, ForgeZTooltipComponents.class); + r.registerWrapper(ZRegisterClientReloadListener.class, ForgeZRegisterClientReloadListener.class); + r.registerWrapper(ZFirstClientTick.class, ForgeZFirstClientTick.class); + + r.registerWrapper(ZAddBlockColorHandlers.class, ForgeZAddBlockColorHandlers.class); + r.registerWrapper(ZAddItemColorHandlers.class, ForgeZAddItemColorHandlers.class); }); private static final ForgeEventsRemapper PLAY_EVENTS_REMAPPER = Util.make(new ForgeEventsRemapper<>(IZetaPlayEvent.class, Event.class), r -> { - r.registerSubClass(ZAnvilRepair.class, ForgeZAnvilRepair.class); - r.registerSubClass(ZAnvilUpdate.Highest.class, ForgeZAnvilUpdate.Highest.class); - r.registerSubClass(ZAnvilUpdate.Lowest.class, ForgeZAnvilUpdate.Lowest.class); - r.registerSubClass(ZTagsUpdated.class, ForgeZTagsUpdated.class); - r.registerSubClass(ZBabyEntitySpawn.Lowest.class, ForgeZBabyEntitySpawn.Lowest.class); - r.registerSubClass(ZBabyEntitySpawn.class, ForgeZBabyEntitySpawn.class); - r.registerSubClass(ZBlock.Break.class, ForgeZBlock.Break.class); - r.registerSubClass(ZBlock.EntityPlace.class, ForgeZBlock.EntityPlace.class); - r.registerSubClass(ZBlock.BlockToolModification.class, ForgeZBlock.BlockToolModification.class); - r.registerSubClass(ZBonemeal.class, ForgeZBonemeal.class); - r.registerSubClass(ZEntityConstruct.class, ForgeZEntityConstruct.class); - r.registerSubClass(ZEntityInteract.class, ForgeZEntityInteract.class); - r.registerSubClass(ZEntityItemPickup.class, ForgeZEntityItemPickup.class); - r.registerSubClass(ZEntityJoinLevel.class, ForgeZEntityJoinLevel.class); - r.registerSubClass(ZEntityMobGriefing.class, ForgeZEntityMobGriefing.class); - r.registerSubClass(ZEntityTeleport.class, ForgeZEntityTeleport.class); - r.registerSubClass(ZItemTooltip.class, ForgeZItemTooltip.class); - r.registerSubClass(ZLivingChangeTarget.class, ForgeZLivingChangeTarget.class); - r.registerSubClass(ZLivingConversion.class, ForgeZLivingConversion.class); - r.registerSubClass(ZLivingConversion.Pre.class, ForgeZLivingConversion.Pre.class); - r.registerSubClass(ZLivingConversion.Post.class, ForgeZLivingConversion.Post.class); - r.registerSubClass(ZLivingDeath.class, ForgeZLivingDeath.class); - r.registerSubClass(ZLivingDeath.Lowest.class, ForgeZLivingDeath.Lowest.class); - r.registerSubClass(ZLivingDrops.class, ForgeZLivingDrops.class); - r.registerSubClass(ZLivingDrops.Lowest.class, ForgeZLivingDrops.Lowest.class); - r.registerSubClass(ZLivingFall.class, ForgeZLivingFall.class); - r.registerSubClass(ZLivingTick.class, ForgeZLivingTick.class); - r.registerSubClass(ZMobSpawnEvent.class, ForgeZMobSpawnEvent.class); - r.registerSubClass(ZMobSpawnEvent.CheckSpawn.class, ForgeZMobSpawnEvent.FinalizeSpawn.class); - r.registerSubClass(ZMobSpawnEvent.CheckSpawn.Lowest.class, ForgeZMobSpawnEvent.FinalizeSpawn.Lowest.class); - r.registerSubClass(ZPlayNoteBlock.class, ForgeZPlayNoteBlock.class); - r.registerSubClass(ZPlayer.class, ForgeZPlayer.class); - r.registerSubClass(ZPlayer.BreakSpeed.class, ForgeZPlayer.BreakSpeed.class); - r.registerSubClass(ZPlayer.Clone.class, ForgeZPlayer.Clone.class); - r.registerSubClass(ZPlayerDestroyItem.class, ForgeZPlayerDestroyItem.class); - r.registerSubClass(ZPlayer.LoggedIn.class, ForgeZPlayer.LoggedIn.class); - r.registerSubClass(ZPlayer.LoggedOut.class, ForgeZPlayer.LoggedOut.class); - r.registerSubClass(ZPlayerTick.Start.class, ForgeZPlayerTick.Start.class); - r.registerSubClass(ZPlayerTick.End.class, ForgeZPlayerTick.End.class); - r.registerSubClass(ZPlayerInteract.class, ForgeZPlayerInteract.class); - r.registerSubClass(ZPlayerInteract.EntityInteractSpecific.class, ForgeZPlayerInteract.EntityInteractSpecific.class); - r.registerSubClass(ZPlayerInteract.EntityInteract.class, ForgeZPlayerInteract.EntityInteract.class); - r.registerSubClass(ZPlayerInteract.RightClickBlock.class, ForgeZPlayerInteract.RightClickBlock.class); - r.registerSubClass(ZPlayerInteract.RightClickItem.class, ForgeZPlayerInteract.RightClickItem.class); - r.registerSubClass(ZRightClickBlock.class, ForgeZRightClickBlock.class); - r.registerSubClass(ZRightClickBlock.Low.class, ForgeZRightClickBlock.Low.class); - r.registerSubClass(ZRightClickItem.class, ForgeZRightClickItem.class); - r.registerSubClass(ZLootTableLoad.class, ForgeZLootTableLoad.class); - r.registerSubClass(ZVillagerTrades.class, ForgeZVillagerTrades.class); - r.registerSubClass(ZWandererTrades.class, ForgeZWandererTrades.class); - r.registerSubClass(ZFurnaceFuelBurnTime.class, ForgeZFurnaceFuelBurnTime.class); - r.registerSubClass(ZGatherAdditionalFlags.class, ForgeZGatherAdditionalFlags.class); - r.registerSubClass(ZServerTick.Start.class, ForgeZServerTick.Start.class); - r.registerSubClass(ZServerTick.End.class, ForgeZServerTick.End.class); - r.registerSubClass(ZAddReloadListener.class, ForgeZAddReloadListener.class); - r.registerSubClass(ZGatherHints.class, ForgeZGatherHints.class); - r.registerSubClass(ZSleepingLocationCheck.class, ForgeZSleepingLocationCheck.class); - r.registerSubClass(ZAnimalTame.class, ForgeZAnimalTame.class); - r.registerSubClass(ZLevelTick.End.class, ForgeZLevelTick.End.class); - r.registerSubClass(ZLevelTick.Start.class, ForgeZLevelTick.Start.class); + r.registerWrapper(ZAnvilRepair.class, ForgeZAnvilRepair.class); + r.registerWrapper(ZAnvilUpdate.Highest.class, ForgeZAnvilUpdate.Highest.class); + r.registerWrapper(ZAnvilUpdate.Lowest.class, ForgeZAnvilUpdate.Lowest.class); + r.registerWrapper(ZTagsUpdated.class, ForgeZTagsUpdated.class); + r.registerWrapper(ZBabyEntitySpawn.Lowest.class, BabyEntitySpawnEvent.class, + ForgeZBabyEntitySpawn.Lowest::new, a -> a.wrapped); + r.registerWrapper(ZBabyEntitySpawn.class, BabyEntitySpawnEvent.class, + ForgeZBabyEntitySpawn::new, a -> a.wrapped); + r.registerWrapper(ZBlock.Break.class, ForgeZBlock.Break.class); + r.registerWrapper(ZBlock.EntityPlace.class, ForgeZBlock.EntityPlace.class); + r.registerWrapper(ZBlock.BlockToolModification.class, ForgeZBlock.BlockToolModification.class); + r.registerWrapper(ZBonemeal.class, ForgeZBonemeal.class); + r.registerWrapper(ZEntityConstruct.class, ForgeZEntityConstruct.class); + r.registerWrapper(ZEntityInteract.class, PlayerInteractEvent.EntityInteract.class, + ForgeZEntityInteract::new, ForgeZEntityInteract::e); + r.registerWrapper(ZEntityItemPickup.class, ForgeZEntityItemPickup.class); + r.registerWrapper(ZEntityJoinLevel.class, ForgeZEntityJoinLevel.class); + r.registerWrapper(ZEntityMobGriefing.class, ForgeZEntityMobGriefing.class); + r.registerWrapper(ZEntityTeleport.class, ForgeZEntityTeleport.class); + r.registerWrapper(ZItemTooltip.class, ItemTooltipEvent.class, + ForgeZItemTooltip::new, ForgeZItemTooltip::e); + r.registerWrapper(ZLivingChangeTarget.class, LivingChangeTargetEvent.class, + ForgeZLivingChangeTarget::new, ForgeZLivingChangeTarget::e); + r.registerWrapper(ZLivingConversion.class, ForgeZLivingConversion.class); + r.registerWrapper(ZLivingConversion.Pre.class, ForgeZLivingConversion.Pre.class); + r.registerWrapper(ZLivingConversion.Post.class, ForgeZLivingConversion.Post.class); + r.registerWrapper(ZLivingDeath.class, ForgeZLivingDeath.class); + r.registerWrapper(ZLivingDeath.Lowest.class, ForgeZLivingDeath.Lowest.class); + r.registerWrapper(ZLivingDrops.class, LivingDropsEvent.class, + ForgeZLivingDrops::new, w -> w.e); + r.registerWrapper(ZLivingDrops.Lowest.class, LivingDropsEvent.class, + ForgeZLivingDrops.Lowest::new, w -> w.e); + r.registerWrapper(ZLivingFall.class, ForgeZLivingFall.class); + r.registerWrapper(ZLivingTick.class, LivingEvent.LivingTickEvent.class, + ForgeZLivingTick::new, ForgeZLivingTick::e); + r.registerWrapper(ZMobSpawnEvent.class, MobSpawnEvent.class, + ForgeZMobSpawnEvent::new, w -> w.e); + r.registerWrapper(ZMobSpawnEvent.CheckSpawn.class, MobSpawnEvent.FinalizeSpawn.class, + ForgeZMobSpawnEvent.FinalizeSpawn::new, w -> w.e); + r.registerWrapper(ZMobSpawnEvent.CheckSpawn.Lowest.class, MobSpawnEvent.FinalizeSpawn.class, + ForgeZMobSpawnEvent.FinalizeSpawn.Lowest::new, w -> w.e); + r.registerWrapper(ZPlayNoteBlock.class, ForgeZPlayNoteBlock.class); + r.registerWrapper(ZPlayer.BreakSpeed.class, ForgeZPlayer.BreakSpeed.class); + r.registerWrapper(ZPlayer.Clone.class, ForgeZPlayer.Clone.class); + r.registerWrapper(ZPlayerDestroyItem.class, ForgeZPlayerDestroyItem.class); + r.registerWrapper(ZPlayer.LoggedIn.class, ForgeZPlayer.LoggedIn.class); + r.registerWrapper(ZPlayer.LoggedOut.class, ForgeZPlayer.LoggedOut.class); + r.registerWrapper(ZPlayerTick.Start.class, TickEvent.PlayerTickEvent.class, + ForgeZPlayerTick.Start::new, w -> w.e); + r.registerWrapper(ZPlayerTick.End.class, TickEvent.PlayerTickEvent.class, + ForgeZPlayerTick.End::new, w -> w.e); + r.registerWrapper(ZPlayerInteract.class, ForgeZPlayerInteract.class); + r.registerWrapper(ZPlayerInteract.EntityInteractSpecific.class, ForgeZPlayerInteract.EntityInteractSpecific.class); + r.registerWrapper(ZPlayerInteract.EntityInteract.class, ForgeZPlayerInteract.EntityInteract.class); + r.registerWrapper(ZPlayerInteract.RightClickBlock.class, ForgeZPlayerInteract.RightClickBlock.class); + r.registerWrapper(ZPlayerInteract.RightClickItem.class, ForgeZPlayerInteract.RightClickItem.class); + r.registerWrapper(ZRightClickBlock.class, ForgeZRightClickBlock.class); + r.registerWrapper(ZRightClickBlock.Low.class, ForgeZRightClickBlock.Low.class); + r.registerWrapper(ZRightClickItem.class, ForgeZRightClickItem.class); + r.registerWrapper(ZLootTableLoad.class, ForgeZLootTableLoad.class); + r.registerWrapper(ZVillagerTrades.class, ForgeZVillagerTrades.class); + r.registerWrapper(ZWandererTrades.class, ForgeZWandererTrades.class); + r.registerWrapper(ZFurnaceFuelBurnTime.class, ForgeZFurnaceFuelBurnTime.class); + r.registerWrapper(ZGatherAdditionalFlags.class, ForgeZGatherAdditionalFlags.class); + r.registerWrapper(ZServerTick.Start.class, TickEvent.ServerTickEvent.class, + ForgeZServerTick.Start::new, w -> w.e); + r.registerWrapper(ZServerTick.End.class, TickEvent.ServerTickEvent.class, + ForgeZServerTick.End::new, w -> w.e); + r.registerWrapper(ZAddReloadListener.class, ForgeZAddReloadListener.class); + r.registerWrapper(ZGatherHints.class, ForgeZGatherHints.class); + r.registerWrapper(ZSleepingLocationCheck.class, ForgeZSleepingLocationCheck.class); + r.registerWrapper(ZAnimalTame.class, ForgeZAnimalTame.class); + r.registerWrapper(ZLevelTick.End.class, TickEvent.LevelTickEvent.class, + ForgeZLevelTick.End::new, w -> w.e); + r.registerWrapper(ZLevelTick.Start.class, TickEvent.LevelTickEvent.class, + ForgeZLevelTick.Start::new, w -> w.e); //this is ugly. generic events here - r.registerSubClassWithGeneric(ZAttachCapabilities.BlockEntityCaps.class, + r.registerWrapperWithGeneric(ZAttachCapabilities.BlockEntityCaps.class, ForgeZAttachCapabilities.BlockEntityCaps.class, (Function, ForgeZAttachCapabilities.BlockEntityCaps>) inner -> new ForgeZAttachCapabilities.BlockEntityCaps(ForgeCapabilityManager.INSTANCE, inner), BlockEntity.class); - r.registerSubClassWithGeneric(ZAttachCapabilities.ItemStackCaps.class, + r.registerWrapperWithGeneric(ZAttachCapabilities.ItemStackCaps.class, ForgeZAttachCapabilities.ItemStackCaps.class, (Function, ForgeZAttachCapabilities.ItemStackCaps>) inner -> new ForgeZAttachCapabilities.ItemStackCaps(ForgeCapabilityManager.INSTANCE, inner), ItemStack.class); - r.registerSubClassWithGeneric(ZAttachCapabilities.LevelCaps.class, + r.registerWrapperWithGeneric(ZAttachCapabilities.LevelCaps.class, ForgeZAttachCapabilities.LevelCaps.class, (Function, ForgeZAttachCapabilities.LevelCaps>) inner -> new ForgeZAttachCapabilities.LevelCaps(ForgeCapabilityManager.INSTANCE, inner), @@ -280,65 +310,97 @@ public void registerSubClass(Class baseZetaEven // zeta specific ones - r.registerSubClass(ZRecipeCrawl.Digest.class, ForgeZRecipeCrawl.Digest.class); - r.registerSubClass(ZRecipeCrawl.Reset.class, ForgeZRecipeCrawl.Reset.class); - r.registerSubClass(ZRecipeCrawl.Starting.class, ForgeZRecipeCrawl.Starting.class); - r.registerSubClass(ZRecipeCrawl.Visit.Cooking.class, ForgeZRecipeCrawl.Visit.Cooking.class); - r.registerSubClass(ZRecipeCrawl.Visit.Custom.class, ForgeZRecipeCrawl.Visit.Custom.class); - r.registerSubClass(ZRecipeCrawl.Visit.Misc.class, ForgeZRecipeCrawl.Visit.Misc.class); - r.registerSubClass(ZRecipeCrawl.Visit.Shaped.class, ForgeZRecipeCrawl.Visit.Shaped.class); - r.registerSubClass(ZRecipeCrawl.Visit.Shapeless.class, ForgeZRecipeCrawl.Visit.Shapeless.class); - + r.registerWrapper(ZRecipeCrawl.class, ForgeZRecipeCrawl.Digest.class, + ForgeZRecipeCrawl::get, ForgeZRecipeCrawl.Digest::new); + r.registerWrapper(ZRecipeCrawl.Reset.class, ForgeZRecipeCrawl.Reset.class, + ForgeZRecipeCrawl::get, ForgeZRecipeCrawl.Reset::new); + r.registerWrapper(ZRecipeCrawl.Starting.class, ForgeZRecipeCrawl.Starting.class, + ForgeZRecipeCrawl::get, ForgeZRecipeCrawl.Starting::new); + r.registerWrapper(ZRecipeCrawl.Visit.Cooking.class, ForgeZRecipeCrawl.Visit.Cooking.class, + ForgeZRecipeCrawl::get, ForgeZRecipeCrawl.Visit.Cooking::new); + r.registerWrapper(ZRecipeCrawl.Visit.Custom.class, ForgeZRecipeCrawl.Visit.Custom.class, + ForgeZRecipeCrawl::get, ForgeZRecipeCrawl.Visit.Custom::new); + r.registerWrapper(ZRecipeCrawl.Visit.Misc.class, ForgeZRecipeCrawl.Visit.Misc.class, + ForgeZRecipeCrawl::get, ForgeZRecipeCrawl.Visit.Misc::new); + r.registerWrapper(ZRecipeCrawl.Visit.Shaped.class, ForgeZRecipeCrawl.Visit.Shaped.class, + ForgeZRecipeCrawl::get, ForgeZRecipeCrawl.Visit.Shaped::new); + r.registerWrapper(ZRecipeCrawl.Visit.Shapeless.class, ForgeZRecipeCrawl.Visit.Shapeless.class, + ForgeZRecipeCrawl::get, ForgeZRecipeCrawl.Visit.Shapeless::new); //Hmm client events here? maybe i should move them if (FMLEnvironment.dist == Dist.DEDICATED_SERVER) return; - r.registerSubClass(ZClientTick.End.class, ForgeZClientTick.End.class); - r.registerSubClass(ZClientTick.Start.class, ForgeZClientTick.Start.class); - r.registerSubClass(ZEarlyRender.class, ForgeZEarlyRender.class); - r.registerSubClass(ZGatherTooltipComponents.class, ForgeZGatherTooltipComponents.class); - r.registerSubClass(ZHighlightBlock.class, ForgeZHighlightBlock.class); - r.registerSubClass(ZInput.MouseButton.class, ForgeZInput.MouseButton.class); - r.registerSubClass(ZInput.Key.class, ForgeZInput.Key.class); - r.registerSubClass(ZInputUpdate.class, ForgeZInputUpdate.class); - r.registerSubClass(ZRenderContainerScreen.Background.class, ForgeZRenderContainerScreen.Background.class); - r.registerSubClass(ZRenderContainerScreen.Foreground.class, ForgeZRenderContainerScreen.Foreground.class); - r.registerSubClass(ZRenderLiving.PostLowest.class, ForgeZRenderLiving.PostLowest.class); - r.registerSubClass(ZRenderLiving.PreHighest.class, ForgeZRenderLiving.PreHighest.class); - r.registerSubClass(ZRenderPlayer.Post.class, ForgeZRenderPlayer.Post.class); - r.registerSubClass(ZRenderPlayer.Pre.class, ForgeZRenderPlayer.Pre.class); - r.registerSubClass(ZRenderTick.End.class, ForgeZRenderTick.End.class); - r.registerSubClass(ZRenderTick.Start.class, ForgeZRenderTick.Start.class); - r.registerSubClass(ZRenderTooltip.GatherComponents.class, ForgeZRenderTooltip.GatherComponents.class); - r.registerSubClass(ZRenderTooltip.GatherComponents.Low.class, ForgeZRenderTooltip.GatherComponents.Low.class); - r.registerSubClass(ZScreen.Opening.class, ForgeZScreen.Opening.class); - r.registerSubClass(ZScreen.CharacterTyped.Pre.class, ForgeZScreen.CharacterTyped.Pre.class); - r.registerSubClass(ZScreen.CharacterTyped.Post.class, ForgeZScreen.CharacterTyped.Post.class); - r.registerSubClass(ZScreen.Init.Post.class, ForgeZScreen.Init.Post.class); - r.registerSubClass(ZScreen.Init.Pre.class, ForgeZScreen.Init.Pre.class); - r.registerSubClass(ZScreen.KeyPressed.Post.class, ForgeZScreen.KeyPressed.Post.class); - r.registerSubClass(ZScreen.KeyPressed.Pre.class, ForgeZScreen.KeyPressed.Pre.class); - r.registerSubClass(ZScreen.MouseScrolled.Post.class, ForgeZScreen.MouseScrolled.Post.class); - r.registerSubClass(ZScreen.MouseScrolled.Pre.class, ForgeZScreen.MouseScrolled.Pre.class); - r.registerSubClass(ZScreen.MouseButtonPressed.Post.class, ForgeZScreen.MouseButtonPressed.Post.class); - r.registerSubClass(ZScreen.MouseButtonPressed.Pre.class, ForgeZScreen.MouseButtonPressed.Pre.class); - r.registerSubClass(ZScreen.Render.Post.class, ForgeZScreen.Render.Post.class); - r.registerSubClass(ZScreen.Render.Pre.class, ForgeZScreen.Render.Pre.class); - r.registerSubClass(ZRenderGuiOverlay.ArmorLevel.Pre.class, ForgeZRenderGuiOverlay.ArmorLevel.Pre.class); - r.registerSubClass(ZRenderGuiOverlay.ArmorLevel.Post.class, ForgeZRenderGuiOverlay.ArmorLevel.Post.class); - r.registerSubClass(ZRenderGuiOverlay.Crosshair.Post.class, ForgeZRenderGuiOverlay.Crosshair.Post.class); - r.registerSubClass(ZRenderGuiOverlay.Crosshair.Pre.class, ForgeZRenderGuiOverlay.Crosshair.Pre.class); - r.registerSubClass(ZRenderGuiOverlay.DebugText.Pre.class, ForgeZRenderGuiOverlay.DebugText.Pre.class); - r.registerSubClass(ZRenderGuiOverlay.DebugText.Post.class, ForgeZRenderGuiOverlay.DebugText.Post.class); - r.registerSubClass(ZRenderGuiOverlay.Hotbar.Pre.class, ForgeZRenderGuiOverlay.Hotbar.Pre.class); - r.registerSubClass(ZRenderGuiOverlay.Hotbar.Post.class, ForgeZRenderGuiOverlay.Hotbar.Post.class); - r.registerSubClass(ZRenderGuiOverlay.PlayerHealth.Pre.class, ForgeZRenderGuiOverlay.PlayerHealth.Pre.class); - r.registerSubClass(ZRenderGuiOverlay.PlayerHealth.Post.class, ForgeZRenderGuiOverlay.PlayerHealth.Post.class); - r.registerSubClass(ZRenderGuiOverlay.PotionIcons.Pre.class, ForgeZRenderGuiOverlay.PotionIcons.Pre.class); - r.registerSubClass(ZRenderGuiOverlay.PotionIcons.Post.class, ForgeZRenderGuiOverlay.PotionIcons.Post.class); - r.registerSubClass(ZRenderGuiOverlay.ChatPanel.Pre.class, ForgeZRenderGuiOverlay.ChatPanel.Pre.class); - r.registerSubClass(ZRenderGuiOverlay.ChatPanel.Post.class, ForgeZRenderGuiOverlay.ChatPanel.Post.class); - r.registerSubClass(ZScreenshot.class, ForgeZScreenshot.class); + r.registerWrapper(ZClientTick.End.class, TickEvent.ClientTickEvent.class, + ForgeZClientTick.End::new, w -> w.e); + r.registerWrapper(ZClientTick.Start.class, TickEvent.ClientTickEvent.class, + ForgeZClientTick.Start::new, w -> w.e); + r.registerWrapper(ZGatherTooltipComponents.class, ForgeZGatherTooltipComponents.class); + r.registerWrapper(ZHighlightBlock.class, ForgeZHighlightBlock.class); + r.registerWrapper(ZInput.MouseButton.class, ForgeZInput.MouseButton.class); + r.registerWrapper(ZInput.Key.class, ForgeZInput.Key.class); + r.registerWrapper(ZInputUpdate.class, ForgeZInputUpdate.class); + r.registerWrapper(ZRenderContainerScreen.Background.class, ForgeZRenderContainerScreen.Background.class); + r.registerWrapper(ZRenderContainerScreen.Foreground.class, ForgeZRenderContainerScreen.Foreground.class); + r.registerWrapper(ZRenderLiving.PostLowest.class, RenderLivingEvent.Post.class, + ForgeZRenderLiving.PostLowest::new, w -> w.e); + r.registerWrapper(ZRenderLiving.PreHighest.class, RenderLivingEvent.Pre.class, + ForgeZRenderLiving.PreHighest::new, w -> w.e); + r.registerWrapper(ZRenderPlayer.Post.class, RenderPlayerEvent.Post.class, + ForgeZRenderPlayer.Post::new, w -> w.e); + r.registerWrapper(ZRenderPlayer.Pre.class, RenderPlayerEvent.Pre.class, + ForgeZRenderPlayer.Pre::new, w -> w.e); + r.registerWrapper(ZRenderTick.End.class, TickEvent.RenderTickEvent.class, + ForgeZRenderTick.End::new, w -> w.e); + r.registerWrapper(ZRenderTick.Start.class, TickEvent.RenderTickEvent.class, + ForgeZRenderTick.Start::new, w -> w.e); + r.registerWrapper(ZRenderTooltip.GatherComponents.class, ForgeZRenderTooltip.GatherComponents.class); + r.registerWrapper(ZRenderTooltip.GatherComponents.Low.class, ForgeZRenderTooltip.GatherComponents.Low.class); + r.registerWrapper(ZScreen.Opening.class, ForgeZScreen.Opening.class); + r.registerWrapper(ZScreen.CharacterTyped.Pre.class, ForgeZScreen.CharacterTyped.Pre.class); + r.registerWrapper(ZScreen.CharacterTyped.Post.class, ForgeZScreen.CharacterTyped.Post.class); + r.registerWrapper(ZScreen.Init.Post.class, ForgeZScreen.Init.Post.class); + r.registerWrapper(ZScreen.Init.Pre.class, ForgeZScreen.Init.Pre.class); + r.registerWrapper(ZScreen.KeyPressed.Post.class, ForgeZScreen.KeyPressed.Post.class); + r.registerWrapper(ZScreen.KeyPressed.Pre.class, ForgeZScreen.KeyPressed.Pre.class); + r.registerWrapper(ZScreen.MouseScrolled.Post.class, ForgeZScreen.MouseScrolled.Post.class); + r.registerWrapper(ZScreen.MouseScrolled.Pre.class, ForgeZScreen.MouseScrolled.Pre.class); + r.registerWrapper(ZScreen.MouseButtonPressed.Post.class, ForgeZScreen.MouseButtonPressed.Post.class); + r.registerWrapper(ZScreen.MouseButtonPressed.Pre.class, ForgeZScreen.MouseButtonPressed.Pre.class); + r.registerWrapper(ZScreen.Render.Post.class, ScreenEvent.Render.Post.class, + ForgeZScreen.Render.Post::new, w -> w.e); + r.registerWrapper(ZScreen.Render.Pre.class, ScreenEvent.Render.Pre.class, + ForgeZScreen.Render.Pre::new, w -> w.e); + r.registerWrapper(ZRenderGuiOverlay.ArmorLevel.Pre.class, RenderGuiOverlayEvent.Pre.class, + ForgeZRenderGuiOverlay.ArmorLevel.Pre::new, w -> w.e); + r.registerWrapper(ZRenderGuiOverlay.ArmorLevel.Post.class, RenderGuiOverlayEvent.Post.class, + ForgeZRenderGuiOverlay.ArmorLevel.Post::new, w -> w.e); + r.registerWrapper(ZRenderGuiOverlay.Crosshair.Post.class, RenderGuiOverlayEvent.Post.class, + ForgeZRenderGuiOverlay.Crosshair.Post::new, w -> w.e); + r.registerWrapper(ZRenderGuiOverlay.Crosshair.Pre.class, RenderGuiOverlayEvent.Pre.class, + ForgeZRenderGuiOverlay.Crosshair.Pre::new, w -> w.e); + r.registerWrapper(ZRenderGuiOverlay.DebugText.Pre.class, RenderGuiOverlayEvent.Pre.class, + ForgeZRenderGuiOverlay.DebugText.Pre::new, w -> w.e); + r.registerWrapper(ZRenderGuiOverlay.DebugText.Post.class, RenderGuiOverlayEvent.Post.class, + ForgeZRenderGuiOverlay.DebugText.Post::new, w -> w.e); + r.registerWrapper(ZRenderGuiOverlay.Hotbar.Pre.class, RenderGuiOverlayEvent.Pre.class, + ForgeZRenderGuiOverlay.Hotbar.Pre::new, w -> w.e); + r.registerWrapper(ZRenderGuiOverlay.Hotbar.Post.class, RenderGuiOverlayEvent.Post.class, + ForgeZRenderGuiOverlay.Hotbar.Post::new, w -> w.e); + r.registerWrapper(ZRenderGuiOverlay.PlayerHealth.Pre.class, RenderGuiOverlayEvent.Pre.class, + ForgeZRenderGuiOverlay.PlayerHealth.Pre::new, w -> w.e); + r.registerWrapper(ZRenderGuiOverlay.PlayerHealth.Post.class, RenderGuiOverlayEvent.Post.class, + ForgeZRenderGuiOverlay.PlayerHealth.Post::new, w -> w.e); + r.registerWrapper(ZRenderGuiOverlay.PotionIcons.Pre.class, RenderGuiOverlayEvent.Pre.class, + ForgeZRenderGuiOverlay.PotionIcons.Pre::new, w -> w.e); + r.registerWrapper(ZRenderGuiOverlay.PotionIcons.Post.class, RenderGuiOverlayEvent.Post.class, + ForgeZRenderGuiOverlay.PotionIcons.Post::new, w -> w.e); + r.registerWrapper(ZRenderGuiOverlay.ChatPanel.Pre.class, RenderGuiOverlayEvent.Pre.class, + ForgeZRenderGuiOverlay.ChatPanel.Pre::new, w -> w.e); + r.registerWrapper(ZRenderGuiOverlay.ChatPanel.Post.class, RenderGuiOverlayEvent.Post.class, + ForgeZRenderGuiOverlay.ChatPanel.Post::new, w -> w.e); + // zeta own event + r.registerWrapper(ZScreenshot.class, ForgeZScreenshot.class); + r.registerWrapper(ZEarlyRender.class, ForgeZEarlyRender.class); }); diff --git a/src/main/java/org/violetmoon/zetaimplforge/event/load/ForgeZEntityAttributeCreation.java b/src/main/java/org/violetmoon/zetaimplforge/event/load/ForgeZEntityAttributeCreation.java index 59851c1..5ca5b69 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/event/load/ForgeZEntityAttributeCreation.java +++ b/src/main/java/org/violetmoon/zetaimplforge/event/load/ForgeZEntityAttributeCreation.java @@ -7,12 +7,7 @@ import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraftforge.event.entity.EntityAttributeCreationEvent; -public class ForgeZEntityAttributeCreation implements ZEntityAttributeCreation { - private final EntityAttributeCreationEvent e; - - public ForgeZEntityAttributeCreation(EntityAttributeCreationEvent e) { - this.e = e; - } +public record ForgeZEntityAttributeCreation(EntityAttributeCreationEvent e) implements ZEntityAttributeCreation { @Override public void put(EntityType entity, AttributeSupplier map) { diff --git a/src/main/java/org/violetmoon/zetaimplforge/event/play/ForgeZItemTooltip.java b/src/main/java/org/violetmoon/zetaimplforge/event/play/ForgeZItemTooltip.java index 97fd494..0fc33bb 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/event/play/ForgeZItemTooltip.java +++ b/src/main/java/org/violetmoon/zetaimplforge/event/play/ForgeZItemTooltip.java @@ -12,12 +12,7 @@ import net.minecraft.world.item.TooltipFlag; import net.minecraftforge.event.entity.player.ItemTooltipEvent; -public class ForgeZItemTooltip implements ZItemTooltip { - private final ItemTooltipEvent e; - - public ForgeZItemTooltip(ItemTooltipEvent e) { - this.e = e; - } +public record ForgeZItemTooltip(ItemTooltipEvent e) implements ZItemTooltip { @Override public TooltipFlag getFlags() {return e.getFlags();} diff --git a/src/main/java/org/violetmoon/zetaimplforge/event/play/ForgeZLevelTick.java b/src/main/java/org/violetmoon/zetaimplforge/event/play/ForgeZLevelTick.java index 5064e61..705363b 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/event/play/ForgeZLevelTick.java +++ b/src/main/java/org/violetmoon/zetaimplforge/event/play/ForgeZLevelTick.java @@ -7,7 +7,7 @@ import net.minecraftforge.event.TickEvent; public class ForgeZLevelTick implements ZLevelTick { - private final TickEvent.LevelTickEvent e; + public final TickEvent.LevelTickEvent e; public ForgeZLevelTick(TickEvent.LevelTickEvent e) { this.e = e; diff --git a/src/main/java/org/violetmoon/zetaimplforge/event/play/ForgeZServerTick.java b/src/main/java/org/violetmoon/zetaimplforge/event/play/ForgeZServerTick.java index 49a13fd..0a39c8f 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/event/play/ForgeZServerTick.java +++ b/src/main/java/org/violetmoon/zetaimplforge/event/play/ForgeZServerTick.java @@ -6,7 +6,7 @@ import net.minecraftforge.event.TickEvent; public class ForgeZServerTick implements ZServerTick { - private final TickEvent.ServerTickEvent e; + public final TickEvent.ServerTickEvent e; public ForgeZServerTick(TickEvent.ServerTickEvent e) { this.e = e; diff --git a/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/ForgeZEntityInteract.java b/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/ForgeZEntityInteract.java index 2a8c9df..8afa861 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/ForgeZEntityInteract.java +++ b/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/ForgeZEntityInteract.java @@ -9,13 +9,7 @@ import net.minecraft.world.level.Level; import net.minecraftforge.event.entity.player.PlayerInteractEvent; -public class ForgeZEntityInteract implements ZEntityInteract { - private final PlayerInteractEvent.EntityInteract e; - - public ForgeZEntityInteract(PlayerInteractEvent.EntityInteract e) { - this.e = e; - } - +public record ForgeZEntityInteract(PlayerInteractEvent.EntityInteract e) implements ZEntityInteract { @Override public Entity getTarget() { return e.getTarget(); diff --git a/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/living/ForgeZBabyEntitySpawn.java b/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/living/ForgeZBabyEntitySpawn.java index ad93dd3..ef0d4c1 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/living/ForgeZBabyEntitySpawn.java +++ b/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/living/ForgeZBabyEntitySpawn.java @@ -8,40 +8,40 @@ import net.minecraftforge.event.entity.living.BabyEntitySpawnEvent; public class ForgeZBabyEntitySpawn implements ZBabyEntitySpawn { - private final BabyEntitySpawnEvent e; + public final BabyEntitySpawnEvent wrapped; public ForgeZBabyEntitySpawn(BabyEntitySpawnEvent e) { - this.e = e; + this.wrapped = e; } @Override public Mob getParentA() { - return e.getParentA(); + return wrapped.getParentA(); } @Override public Mob getParentB() { - return e.getParentB(); + return wrapped.getParentB(); } @Override public Player getCausedByPlayer() { - return e.getCausedByPlayer(); + return wrapped.getCausedByPlayer(); } @Override public AgeableMob getChild() { - return e.getChild(); + return wrapped.getChild(); } @Override public void setChild(AgeableMob proposedChild) { - e.setChild(proposedChild); + wrapped.setChild(proposedChild); } public static class Lowest extends ForgeZBabyEntitySpawn implements ZBabyEntitySpawn.Lowest { - public Lowest(BabyEntitySpawnEvent e) { - super(e); + public Lowest(BabyEntitySpawnEvent wrapped) { + super(wrapped); } } } diff --git a/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/living/ForgeZLivingChangeTarget.java b/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/living/ForgeZLivingChangeTarget.java index d6dbfa1..0776f92 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/living/ForgeZLivingChangeTarget.java +++ b/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/living/ForgeZLivingChangeTarget.java @@ -5,12 +5,7 @@ import net.minecraft.world.entity.LivingEntity; import net.minecraftforge.event.entity.living.LivingChangeTargetEvent; -public class ForgeZLivingChangeTarget implements ZLivingChangeTarget { - private final LivingChangeTargetEvent e; - - public ForgeZLivingChangeTarget(LivingChangeTargetEvent e) { - this.e = e; - } +public record ForgeZLivingChangeTarget(LivingChangeTargetEvent e) implements ZLivingChangeTarget { @Override public LivingEntity getEntity() { diff --git a/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/living/ForgeZLivingDrops.java b/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/living/ForgeZLivingDrops.java index 037328a..8b49305 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/living/ForgeZLivingDrops.java +++ b/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/living/ForgeZLivingDrops.java @@ -10,7 +10,7 @@ import net.minecraftforge.event.entity.living.LivingDropsEvent; public class ForgeZLivingDrops implements ZLivingDrops { - private final LivingDropsEvent e; + public final LivingDropsEvent e; public ForgeZLivingDrops(LivingDropsEvent e) { this.e = e; diff --git a/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/living/ForgeZMobSpawnEvent.java b/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/living/ForgeZMobSpawnEvent.java index 64f2ec7..fed2b4e 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/living/ForgeZMobSpawnEvent.java +++ b/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/living/ForgeZMobSpawnEvent.java @@ -11,7 +11,7 @@ import net.minecraftforge.event.entity.living.MobSpawnEvent; public class ForgeZMobSpawnEvent implements ZMobSpawnEvent { - private final MobSpawnEvent e; + public final MobSpawnEvent e; public ForgeZMobSpawnEvent(MobSpawnEvent e) { this.e = e; @@ -53,7 +53,7 @@ public void setResult(ZResult value) { } public static class FinalizeSpawn extends ForgeZMobSpawnEvent implements ZMobSpawnEvent.CheckSpawn { - private final MobSpawnEvent.FinalizeSpawn e; + public final MobSpawnEvent.FinalizeSpawn e; public FinalizeSpawn(MobSpawnEvent.FinalizeSpawn e) { super(e); diff --git a/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/player/ForgeZPlayerTick.java b/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/player/ForgeZPlayerTick.java index 174ebcf..c0c80f6 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/player/ForgeZPlayerTick.java +++ b/src/main/java/org/violetmoon/zetaimplforge/event/play/entity/player/ForgeZPlayerTick.java @@ -6,7 +6,7 @@ import net.minecraftforge.event.TickEvent; public abstract class ForgeZPlayerTick implements ZPlayerTick { - private final TickEvent.PlayerTickEvent e; + public final TickEvent.PlayerTickEvent e; protected ForgeZPlayerTick(TickEvent.PlayerTickEvent e) { this.e = e; diff --git a/src/main/java/org/violetmoon/zetaimplforge/mod/ZetaModClientProxy.java b/src/main/java/org/violetmoon/zetaimplforge/mod/ZetaModClientProxy.java index 37c7708..d097651 100644 --- a/src/main/java/org/violetmoon/zetaimplforge/mod/ZetaModClientProxy.java +++ b/src/main/java/org/violetmoon/zetaimplforge/mod/ZetaModClientProxy.java @@ -1,80 +1,33 @@ package org.violetmoon.zetaimplforge.mod; -import net.minecraftforge.client.event.RenderGuiOverlayEvent; -import net.minecraftforge.client.gui.overlay.NamedGuiOverlay; -import net.minecraftforge.client.gui.overlay.VanillaGuiOverlay; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.TickEvent; import org.violetmoon.zeta.Zeta; import org.violetmoon.zeta.client.ClientTicker; -import org.violetmoon.zeta.client.event.play.ZRenderGuiOverlay; import org.violetmoon.zeta.util.handler.RequiredModTooltipHandler; import org.violetmoon.zeta.util.zetalist.ZetaList; -import org.violetmoon.zetaimplforge.client.ForgeZetaClient; -import org.violetmoon.zetaimplforge.client.event.play.ForgeZRenderGuiOverlay; import org.violetmoon.zetaimplforge.event.load.ForgeZFirstClientTick; public class ZetaModClientProxy extends ZetaModCommonProxy { - private final ForgeZetaClient clientZeta; + public ZetaModClientProxy(Zeta zeta) { + super(zeta); - public ZetaModClientProxy(Zeta zeta) { - super(zeta); - this.clientZeta = new ForgeZetaClient(zeta); + zeta.playBus + .subscribe(ClientTicker.INSTANCE) + .subscribe(new RequiredModTooltipHandler.Client(zeta)); - zeta.playBus - .subscribe(ClientTicker.INSTANCE) - .subscribe(new RequiredModTooltipHandler.Client(zeta)); + MinecraftForge.EVENT_BUS.addListener(this::clientTick); + } - MinecraftForge.EVENT_BUS.addListener(this::clientTick); + // added once per zeta. Its fine as we then fire it on zeta load bos which is one per zeta too. + boolean clientTicked = false; - MinecraftForge.EVENT_BUS.addListener(this::renderGuiOverlayPre); - MinecraftForge.EVENT_BUS.addListener(this::renderGuiOverlayPost); - } + public void clientTick(TickEvent.ClientTickEvent e) { + if (!clientTicked) { + ZetaList.INSTANCE.fireLoadEvent(new ForgeZFirstClientTick()); + clientTicked = true; + } + } - // added once per zeta. Its fine as we then fire it on zeta load bos which is one per zeta too. - boolean clientTicked = false; - public void clientTick(TickEvent.ClientTickEvent e) { - if(!clientTicked) { - ZetaList.INSTANCE.fireLoadEvent(new ForgeZFirstClientTick()); - clientTicked = true; - } - } - - public void renderGuiOverlayPre(RenderGuiOverlayEvent.Pre e) { - NamedGuiOverlay overlay = e.getOverlay(); - if (overlay == VanillaGuiOverlay.HOTBAR.type()) - clientZeta.playBus.fire(new ForgeZRenderGuiOverlay.Hotbar.Pre(e), ZRenderGuiOverlay.Hotbar.Pre.class); - else if (overlay == VanillaGuiOverlay.CROSSHAIR.type()) - clientZeta.playBus.fire(new ForgeZRenderGuiOverlay.Crosshair.Pre(e), ZRenderGuiOverlay.Crosshair.Pre.class); - else if (overlay == VanillaGuiOverlay.PLAYER_HEALTH.type()) - clientZeta.playBus.fire(new ForgeZRenderGuiOverlay.PlayerHealth.Pre(e), ZRenderGuiOverlay.PlayerHealth.Pre.class); - else if (overlay == VanillaGuiOverlay.ARMOR_LEVEL.type()) - clientZeta.playBus.fire(new ForgeZRenderGuiOverlay.ArmorLevel.Pre(e), ZRenderGuiOverlay.ArmorLevel.Pre.class); - else if (overlay == VanillaGuiOverlay.DEBUG_TEXT.type()) - clientZeta.playBus.fire(new ForgeZRenderGuiOverlay.DebugText.Pre(e), ZRenderGuiOverlay.DebugText.Pre.class); - else if (overlay == VanillaGuiOverlay.POTION_ICONS.type()) - clientZeta.playBus.fire(new ForgeZRenderGuiOverlay.PotionIcons.Pre(e), ZRenderGuiOverlay.PotionIcons.Pre.class); - else if (overlay == VanillaGuiOverlay.CHAT_PANEL.type()) - clientZeta.playBus.fire(new ForgeZRenderGuiOverlay.ChatPanel.Pre(e), ZRenderGuiOverlay.ChatPanel.Pre.class); - } - - public void renderGuiOverlayPost(RenderGuiOverlayEvent.Post e) { - NamedGuiOverlay overlay = e.getOverlay(); - if (overlay == VanillaGuiOverlay.HOTBAR.type()) - clientZeta.playBus.fire(new ForgeZRenderGuiOverlay.Hotbar.Post(e), ZRenderGuiOverlay.Hotbar.Post.class); - else if (overlay == VanillaGuiOverlay.CROSSHAIR.type()) - clientZeta.playBus.fire(new ForgeZRenderGuiOverlay.Crosshair.Post(e), ZRenderGuiOverlay.Crosshair.Post.class); - else if (overlay == VanillaGuiOverlay.PLAYER_HEALTH.type()) - clientZeta.playBus.fire(new ForgeZRenderGuiOverlay.PlayerHealth.Post(e), ZRenderGuiOverlay.PlayerHealth.Post.class); - else if (overlay == VanillaGuiOverlay.ARMOR_LEVEL.type()) - clientZeta.playBus.fire(new ForgeZRenderGuiOverlay.ArmorLevel.Post(e), ZRenderGuiOverlay.ArmorLevel.Post.class); - else if (overlay == VanillaGuiOverlay.DEBUG_TEXT.type()) - clientZeta.playBus.fire(new ForgeZRenderGuiOverlay.DebugText.Post(e), ZRenderGuiOverlay.DebugText.Post.class); - else if (overlay == VanillaGuiOverlay.POTION_ICONS.type()) - clientZeta.playBus.fire(new ForgeZRenderGuiOverlay.PotionIcons.Post(e), ZRenderGuiOverlay.PotionIcons.Post.class); - else if (overlay == VanillaGuiOverlay.CHAT_PANEL.type()) - clientZeta.playBus.fire(new ForgeZRenderGuiOverlay.ChatPanel.Post(e), ZRenderGuiOverlay.ChatPanel.Post.class); - } - }