Skip to content

Commit 5394658

Browse files
committed
moved gather additional flag event to the mod specific load bus. Unknown flags will also now return true
1 parent dd38934 commit 5394658

File tree

11 files changed

+241
-215
lines changed

11 files changed

+241
-215
lines changed

changelog.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
- fixed an issue with biome modifier serializers not being registered (issue from very last release)
1+
moved gather additional flag event to the mod specific load bus. Unknown flags will also now return true

src/main/java/org/violetmoon/zeta/Zeta.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,9 @@ public Zeta(String modid, Logger log, ZetaSide side, boolean isProduction) {
8080
public final String modid;
8181
public final ZetaSide side;
8282
public final boolean isProduction;
83-
public final ZetaEventBus<IZetaLoadEvent> loadBus;
84-
public final ZetaEventBus<IZetaPlayEvent> playBus;
83+
public final ZetaEventBus<IZetaLoadEvent> loadBus; //zeta specific bus
84+
// Be careful when using this. Load bus will only fire stuff to this zeta events. Play bus however will not as it delegate to forge bus
85+
public final ZetaEventBus<IZetaPlayEvent> playBus; //common mod event bus. Each zeta will have their own object for now but internally they all delegate to the same internal bus
8586
public final ZetaModuleManager modules;
8687

8788
//registry

src/main/java/org/violetmoon/zeta/config/ConfigManager.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import org.jetbrains.annotations.Nullable;
44
import org.violetmoon.zeta.Zeta;
5-
import org.violetmoon.zeta.event.play.loading.ZGatherAdditionalFlags;
5+
import org.violetmoon.zeta.event.load.ZGatherAdditionalFlags;
66
import org.violetmoon.zeta.module.ZetaCategory;
77
import org.violetmoon.zeta.module.ZetaModule;
88
import org.violetmoon.zeta.module.ZetaModuleManager;
@@ -103,8 +103,8 @@ public ConfigManager(Zeta z, Object rootPojo) {
103103
}));
104104
}
105105

106-
//grab any extra flags
107-
z.playBus.fire(() -> cfm, ZGatherAdditionalFlags.class);
106+
//grab any extra flags. Fires on the load event of that mod
107+
z.loadBus.fire(() -> cfm, ZGatherAdditionalFlags.class);
108108

109109
//managing module enablement in one go
110110
//adding this to the *start* of the list so modules are enabled before anything else runs
@@ -118,7 +118,7 @@ public ConfigManager(Zeta z, Object rootPojo) {
118118
});
119119

120120
//update extra flags
121-
z.playBus.fire(() -> cfm, ZGatherAdditionalFlags.class);
121+
z.loadBus.fire(() -> cfm, ZGatherAdditionalFlags.class);
122122
});
123123

124124
this.rootConfig = rootConfigBuilder.build();

src/main/java/org/violetmoon/zeta/config/FlagCondition.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,11 @@ public boolean test(IContext context) {
2626
if(flag.contains("%"))
2727
throw new RuntimeException("Illegal flag: " + flag);
2828

29-
if(!cfm.isValidFlag(flag))
30-
cfm.zeta.log.warn("Non-existent flag " + flag + " being used");
29+
if(!cfm.isValidFlag(flag)) {
30+
cfm.zeta.log.warn("Non-existent flag {} being used", flag);
31+
// return true for unknown flags
32+
return true;
33+
}
3134

3235
return extraCondition.getAsBoolean() && cfm.getFlag(flag);
3336
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package org.violetmoon.zeta.event.load;
2+
3+
import org.violetmoon.zeta.config.ConfigFlagManager;
4+
import org.violetmoon.zeta.event.bus.IZetaLoadEvent;
5+
import org.violetmoon.zeta.event.bus.IZetaPlayEvent;
6+
7+
public interface ZGatherAdditionalFlags extends IZetaLoadEvent {
8+
9+
ConfigFlagManager flagManager();
10+
}

src/main/java/org/violetmoon/zeta/event/play/loading/ZGatherAdditionalFlags.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import org.violetmoon.zeta.config.ConfigFlagManager;
44
import org.violetmoon.zeta.event.bus.IZetaPlayEvent;
55

6+
//use load event instead
7+
@Deprecated(forRemoval = true)
68
public interface ZGatherAdditionalFlags extends IZetaPlayEvent {
79

810
ConfigFlagManager flagManager();

src/main/java/org/violetmoon/zetaimplforge/event/ForgeZetaEventBus.java

Lines changed: 21 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -2,50 +2,16 @@
22

33
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
44
import net.minecraft.Util;
5-
import net.minecraft.world.item.ItemStack;
6-
import net.minecraft.world.level.Level;
7-
import net.minecraft.world.level.block.entity.BlockEntity;
8-
import net.minecraftforge.api.distmarker.Dist;
9-
import net.minecraftforge.client.event.RenderGuiOverlayEvent;
10-
import net.minecraftforge.client.event.RenderLivingEvent;
11-
import net.minecraftforge.client.event.RenderPlayerEvent;
12-
import net.minecraftforge.client.event.ScreenEvent;
135
import net.minecraftforge.common.MinecraftForge;
14-
import net.minecraftforge.event.AttachCapabilitiesEvent;
15-
import net.minecraftforge.event.TickEvent;
16-
import net.minecraftforge.event.entity.EntityAttributeCreationEvent;
17-
import net.minecraftforge.event.entity.living.*;
18-
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
19-
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
206
import net.minecraftforge.eventbus.api.Event;
217
import net.minecraftforge.eventbus.api.IEventBus;
22-
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
238
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
24-
import net.minecraftforge.fml.loading.FMLEnvironment;
259
import org.apache.logging.log4j.Logger;
2610
import org.jetbrains.annotations.NotNull;
2711
import org.jetbrains.annotations.Nullable;
2812
import org.violetmoon.zeta.Zeta;
29-
import org.violetmoon.zeta.client.event.load.*;
30-
import org.violetmoon.zeta.client.event.play.*;
3113
import org.violetmoon.zeta.event.bus.*;
32-
import org.violetmoon.zeta.event.load.*;
33-
import org.violetmoon.zeta.event.play.*;
34-
import org.violetmoon.zeta.event.play.entity.*;
35-
import org.violetmoon.zeta.event.play.entity.living.*;
36-
import org.violetmoon.zeta.event.play.entity.player.*;
37-
import org.violetmoon.zeta.event.play.loading.*;
38-
import org.violetmoon.zetaimplforge.api.ForgeZGatherAdvancementModifiers;
39-
import org.violetmoon.zetaimplforge.capability.ForgeCapabilityManager;
40-
import org.violetmoon.zetaimplforge.client.event.load.*;
41-
import org.violetmoon.zetaimplforge.client.event.play.*;
42-
import org.violetmoon.zetaimplforge.event.load.*;
43-
import org.violetmoon.zetaimplforge.event.play.*;
44-
import org.violetmoon.zetaimplforge.event.play.entity.*;
45-
import org.violetmoon.zetaimplforge.event.play.entity.living.*;
46-
import org.violetmoon.zetaimplforge.event.play.entity.player.*;
47-
import org.violetmoon.zetaimplforge.event.play.loading.*;
48-
import org.violetmoon.zetaimplforge.mod.ZetaModClientProxy;
14+
import org.violetmoon.zeta.event.play.loading.ZGatherAdditionalFlags;
4915
import org.violetmoon.zetaimplforge.mod.ZetaModForge;
5016

5117
import java.lang.annotation.Annotation;
@@ -82,14 +48,14 @@ public static ForgeZetaEventBus<IZetaLoadEvent, Event> ofLoadBus(@Nullable Logge
8248
return new ForgeZetaEventBus<>(
8349
LoadEvent.class, IZetaLoadEvent.class,
8450
logSpam, FMLJavaModLoadingContext.get().getModEventBus(), Event.class,
85-
ofZeta, LOAD_EVENTS_REMAPPER);
51+
ofZeta, DEFAULT_LOAD_EVENTS_REMAPPER);
8652
}
8753

8854
public static ForgeZetaEventBus<IZetaPlayEvent, Event> ofPlayBus(@Nullable Logger logSpam, Zeta ofZeta) {
8955
return new ForgeZetaEventBus<>(
9056
PlayEvent.class, IZetaPlayEvent.class,
9157
logSpam, MinecraftForge.EVENT_BUS, Event.class,
92-
ofZeta, PLAY_EVENTS_REMAPPER);
58+
ofZeta, DEFAULT_PLAY_EVENTS_REMAPPER);
9359
}
9460

9561

@@ -101,8 +67,9 @@ protected void subscribeMethod(Method method, Object receiver, Class<?> owningCl
10167
Class<?> zetaEventClass = method.getParameterTypes()[0];
10268

10369
//check if it's already a forge event, or it's a zeta event
104-
if (!eventRoot.isAssignableFrom(zetaEventClass) && !forgeEventRoot.isAssignableFrom(zetaEventClass))
70+
if (!eventRoot.isAssignableFrom(zetaEventClass) && !forgeEventRoot.isAssignableFrom(zetaEventClass)) {
10571
throw typeERR(method);
72+
}
10673

10774
MethodHandle handle;
10875
try {
@@ -172,14 +139,28 @@ public <ZF extends Z, ZB extends Z> void registerWrapper(Class<ZB> baseZetaEvent
172139
}
173140
}
174141

142+
public <ZF extends Z, ZB extends Z, F2 extends F> void registerWrapper(Class<ZB> baseZetaEventClass, Class<F2> forgeEventClass,
143+
Function<F2, ZF> constructor, Function<ZF, ? extends F> unwrapper) {
144+
synchronized (remapper) {
145+
remapper.registerWrapper(baseZetaEventClass, forgeEventClass, constructor, unwrapper);
146+
}
147+
}
148+
149+
public <ZF extends Z, ZB extends Z, F2 extends F> void registerWrapperWithGenerics(Class<ZB> baseZetaEventClass, Class<F2> forgeEventClass,
150+
Function<F2, ZF> constructor, Function<ZF, ? extends F> unwrapper, Class<?> generic) {
151+
synchronized (remapper) {
152+
remapper.registerWrapperWithGenerics(baseZetaEventClass, forgeEventClass, constructor, unwrapper, generic);
153+
}
154+
}
155+
175156
// I would love to put this code in the mod proxy but that needs to do event setup stuff which requires these busses to be fully initialized
176157

177158
// instances so we don't create multiple as reflections take time and memory
178-
private static final ForgeEventsRemapper<IZetaLoadEvent, Event> LOAD_EVENTS_REMAPPER = Util.make(
159+
private static final ForgeEventsRemapper<IZetaLoadEvent, Event> DEFAULT_LOAD_EVENTS_REMAPPER = Util.make(
179160
new ForgeEventsRemapper<>(IZetaLoadEvent.class, Event.class), ZetaModForge.PROXY::addKnownZetaLoadEvents
180161
);
181162

182-
private static final ForgeEventsRemapper<IZetaPlayEvent, Event> PLAY_EVENTS_REMAPPER = Util.make(
163+
private static final ForgeEventsRemapper<IZetaPlayEvent, Event> DEFAULT_PLAY_EVENTS_REMAPPER = Util.make(
183164
new ForgeEventsRemapper<>(IZetaPlayEvent.class, Event.class), ZetaModForge.PROXY::addKnownZetaPlayEvents
184165
);
185166

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package org.violetmoon.zetaimplforge.event.load;
2+
3+
import net.minecraftforge.eventbus.api.Event;
4+
import org.violetmoon.zeta.config.ConfigFlagManager;
5+
import org.violetmoon.zeta.event.load.ZGatherAdditionalFlags;
6+
7+
public class ForgeZGatherAdditionalFlags extends Event implements ZGatherAdditionalFlags {
8+
9+
private final ZGatherAdditionalFlags wrapped;
10+
11+
public ForgeZGatherAdditionalFlags(ZGatherAdditionalFlags wrapped) {
12+
this.wrapped = wrapped;
13+
}
14+
15+
@Override
16+
public ConfigFlagManager flagManager() {
17+
return wrapped.flagManager();
18+
}
19+
}

src/main/java/org/violetmoon/zetaimplforge/event/play/ForgeZBlock.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public BlockState getState() {
3333
}
3434

3535
public static class Break extends ForgeZBlock implements ZBlock.Break {
36-
private final BlockEvent.BreakEvent e;
36+
public final BlockEvent.BreakEvent e;
3737

3838
public Break(BlockEvent.BreakEvent e) {
3939
super(e);
@@ -47,7 +47,7 @@ public Player getPlayer() {
4747
}
4848

4949
public static class EntityPlace extends ForgeZBlock implements ZBlock.EntityPlace {
50-
private final BlockEvent.EntityPlaceEvent e;
50+
public final BlockEvent.EntityPlaceEvent e;
5151

5252
public EntityPlace(BlockEvent.EntityPlaceEvent e) {
5353
super(e);

src/main/java/org/violetmoon/zetaimplforge/event/play/loading/ForgeZGatherAdditionalFlags.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.violetmoon.zeta.config.ConfigFlagManager;
55
import org.violetmoon.zeta.event.play.loading.ZGatherAdditionalFlags;
66

7+
@Deprecated(forRemoval = true)
78
public class ForgeZGatherAdditionalFlags extends Event implements ZGatherAdditionalFlags {
89

910
private final ZGatherAdditionalFlags wrapped;

0 commit comments

Comments
 (0)