2
2
3
3
import it .unimi .dsi .fastutil .objects .Object2ObjectOpenHashMap ;
4
4
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 ;
13
5
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 ;
20
6
import net .minecraftforge .eventbus .api .Event ;
21
7
import net .minecraftforge .eventbus .api .IEventBus ;
22
- import net .minecraftforge .fml .event .lifecycle .FMLCommonSetupEvent ;
23
8
import net .minecraftforge .fml .javafmlmod .FMLJavaModLoadingContext ;
24
- import net .minecraftforge .fml .loading .FMLEnvironment ;
25
9
import org .apache .logging .log4j .Logger ;
26
10
import org .jetbrains .annotations .NotNull ;
27
11
import org .jetbrains .annotations .Nullable ;
28
12
import org .violetmoon .zeta .Zeta ;
29
- import org .violetmoon .zeta .client .event .load .*;
30
- import org .violetmoon .zeta .client .event .play .*;
31
13
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 ;
49
15
import org .violetmoon .zetaimplforge .mod .ZetaModForge ;
50
16
51
17
import java .lang .annotation .Annotation ;
@@ -82,14 +48,14 @@ public static ForgeZetaEventBus<IZetaLoadEvent, Event> ofLoadBus(@Nullable Logge
82
48
return new ForgeZetaEventBus <>(
83
49
LoadEvent .class , IZetaLoadEvent .class ,
84
50
logSpam , FMLJavaModLoadingContext .get ().getModEventBus (), Event .class ,
85
- ofZeta , LOAD_EVENTS_REMAPPER );
51
+ ofZeta , DEFAULT_LOAD_EVENTS_REMAPPER );
86
52
}
87
53
88
54
public static ForgeZetaEventBus <IZetaPlayEvent , Event > ofPlayBus (@ Nullable Logger logSpam , Zeta ofZeta ) {
89
55
return new ForgeZetaEventBus <>(
90
56
PlayEvent .class , IZetaPlayEvent .class ,
91
57
logSpam , MinecraftForge .EVENT_BUS , Event .class ,
92
- ofZeta , PLAY_EVENTS_REMAPPER );
58
+ ofZeta , DEFAULT_PLAY_EVENTS_REMAPPER );
93
59
}
94
60
95
61
@@ -101,8 +67,9 @@ protected void subscribeMethod(Method method, Object receiver, Class<?> owningCl
101
67
Class <?> zetaEventClass = method .getParameterTypes ()[0 ];
102
68
103
69
//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 )) {
105
71
throw typeERR (method );
72
+ }
106
73
107
74
MethodHandle handle ;
108
75
try {
@@ -172,14 +139,28 @@ public <ZF extends Z, ZB extends Z> void registerWrapper(Class<ZB> baseZetaEvent
172
139
}
173
140
}
174
141
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
+
175
156
// 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
176
157
177
158
// 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 (
179
160
new ForgeEventsRemapper <>(IZetaLoadEvent .class , Event .class ), ZetaModForge .PROXY ::addKnownZetaLoadEvents
180
161
);
181
162
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 (
183
164
new ForgeEventsRemapper <>(IZetaPlayEvent .class , Event .class ), ZetaModForge .PROXY ::addKnownZetaPlayEvents
184
165
);
185
166
0 commit comments