@@ -32,82 +32,84 @@ import net.minecraft.nbt.Tag;
3232 }
3333
3434 <#if w.hasVariablesOfScope("PLAYER_LIFETIME") || w.hasVariablesOfScope("PLAYER_PERSISTENT") >
35- @SubscribeEvent public static void onPlayerLoggedInSyncPlayerVariables(PlayerEvent.PlayerLoggedInEvent event) {
36- if (event.getEntity() instanceof ServerPlayer player)
37- PacketDistributor.PLAYER.with(player).send(new PlayerVariablesSyncMessage(player.getData(PLAYER_VARIABLES)));
38- }
39-
40- @SubscribeEvent public static void onPlayerRespawnedSyncPlayerVariables(PlayerEvent.PlayerRespawnEvent event) {
41- if (event.getEntity() instanceof ServerPlayer player)
42- PacketDistributor.PLAYER.with(player).send(new PlayerVariablesSyncMessage(player.getData(PLAYER_VARIABLES)));
43- }
44-
45- @SubscribeEvent public static void onPlayerChangedDimensionSyncPlayerVariables(PlayerEvent.PlayerChangedDimensionEvent event) {
46- if (event.getEntity() instanceof ServerPlayer player)
47- PacketDistributor.PLAYER.with(player).send(new PlayerVariablesSyncMessage(player.getData(PLAYER_VARIABLES)));
48- }
49-
50- @SubscribeEvent public static void onPlayerTickUpdateSyncPlayerVariables(TickEvent.PlayerTickEvent event) {
51- if (event.phase == TickEvent.Phase.END && event.player instanceof ServerPlayer player && player.getData(PLAYER_VARIABLES)._syncDirty) {
52- PacketDistributor.PLAYER.with(player).send(new PlayerVariablesSyncMessage(player.getData(PLAYER_VARIABLES)));
53- player.getData(PLAYER_VARIABLES)._syncDirty = false;
54- }
55- }
56-
57- @SubscribeEvent public static void clonePlayer(PlayerEvent.Clone event) {
58- PlayerVariables original = event.getOriginal().getData(PLAYER_VARIABLES);
59- PlayerVariables clone = new PlayerVariables();
60- <#list variables as var >
61- <#if var.getScope().name() == "PLAYER_PERSISTENT" >
62- clone.${var.getName()} = original.${var.getName()} ;
63- </#if >
64- </#list >
65- if(!event.isWasDeath()) {
66- <#list variables as var >
67- <#if var.getScope().name() == "PLAYER_LIFETIME" >
68- clone.${var.getName()} = original.${var.getName()} ;
69- </#if >
70- </#list >
71- }
72- event.getEntity().setData(PLAYER_VARIABLES, clone);
73- }
74- </#if >
75-
76- <#if w.hasVariablesOfScope("GLOBAL_WORLD") || w.hasVariablesOfScope("GLOBAL_MAP") >
77- @SubscribeEvent public static void onPlayerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) {
78- if (event.getEntity() instanceof ServerPlayer player) {
79- SavedData mapdata = MapVariables.get(event.getEntity().level());
80- SavedData worlddata = WorldVariables.get(event.getEntity().level());
81- if(mapdata != null)
82- PacketDistributor.PLAYER.with(player).send(new SavedDataSyncMessage(0, mapdata));
83- if(worlddata != null)
84- PacketDistributor.PLAYER.with(player).send(new SavedDataSyncMessage(1, worlddata));
85- }
86- }
87-
88- @SubscribeEvent public static void onPlayerChangedDimension(PlayerEvent.PlayerChangedDimensionEvent event) {
89- if (event.getEntity() instanceof ServerPlayer player) {
90- SavedData worlddata = WorldVariables.get(event.getEntity().level());
91- if(worlddata != null)
92- PacketDistributor.PLAYER.with(player).send(new SavedDataSyncMessage(1, worlddata));
93- }
94- }
95-
96- @SubscribeEvent public static void onWorldTick(TickEvent.LevelTickEvent event) {
97- if (event.phase == TickEvent.Phase.END && event.level instanceof ServerLevel level) {
98- WorldVariables worldVariables = WorldVariables.get(level);
99- if (worldVariables._syncDirty) {
100- PacketDistributor.DIMENSION.with(level.dimension()).send(new SavedDataSyncMessage(1, worldVariables));
101- worldVariables._syncDirty = false;
102- }
103-
104- MapVariables mapVariables = MapVariables.get(level);
105- if (mapVariables._syncDirty) {
106- PacketDistributor.ALL.noArg().send(new SavedDataSyncMessage(0, mapVariables));
107- mapVariables._syncDirty = false;
108- }
109- }
110- }
35+ @Mod.EventBusSubscriber public static class EventBusVariableHandlers {
36+ @SubscribeEvent public static void onPlayerLoggedInSyncPlayerVariables(PlayerEvent.PlayerLoggedInEvent event) {
37+ if (event.getEntity() instanceof ServerPlayer player)
38+ PacketDistributor.PLAYER.with(player).send(new PlayerVariablesSyncMessage(player.getData(PLAYER_VARIABLES)));
39+ }
40+
41+ @SubscribeEvent public static void onPlayerRespawnedSyncPlayerVariables(PlayerEvent.PlayerRespawnEvent event) {
42+ if (event.getEntity() instanceof ServerPlayer player)
43+ PacketDistributor.PLAYER.with(player).send(new PlayerVariablesSyncMessage(player.getData(PLAYER_VARIABLES)));
44+ }
45+
46+ @SubscribeEvent public static void onPlayerChangedDimensionSyncPlayerVariables(PlayerEvent.PlayerChangedDimensionEvent event) {
47+ if (event.getEntity() instanceof ServerPlayer player)
48+ PacketDistributor.PLAYER.with(player).send(new PlayerVariablesSyncMessage(player.getData(PLAYER_VARIABLES)));
49+ }
50+
51+ @SubscribeEvent public static void onPlayerTickUpdateSyncPlayerVariables(TickEvent.PlayerTickEvent event) {
52+ if (event.phase == TickEvent.Phase.END && event.player instanceof ServerPlayer player && player.getData(PLAYER_VARIABLES)._syncDirty) {
53+ PacketDistributor.PLAYER.with(player).send(new PlayerVariablesSyncMessage(player.getData(PLAYER_VARIABLES)));
54+ player.getData(PLAYER_VARIABLES)._syncDirty = false;
55+ }
56+ }
57+
58+ @SubscribeEvent public static void clonePlayer(PlayerEvent.Clone event) {
59+ PlayerVariables original = event.getOriginal().getData(PLAYER_VARIABLES);
60+ PlayerVariables clone = new PlayerVariables();
61+ <#list variables as var >
62+ <#if var.getScope().name() == "PLAYER_PERSISTENT" >
63+ clone.${var.getName()} = original.${var.getName()} ;
64+ </#if >
65+ </#list >
66+ if(!event.isWasDeath()) {
67+ <#list variables as var >
68+ <#if var.getScope().name() == "PLAYER_LIFETIME" >
69+ clone.${var.getName()} = original.${var.getName()} ;
70+ </#if >
71+ </#list >
72+ }
73+ event.getEntity().setData(PLAYER_VARIABLES, clone);
74+ }
75+ </#if >
76+
77+ <#if w.hasVariablesOfScope("GLOBAL_WORLD") || w.hasVariablesOfScope("GLOBAL_MAP") >
78+ @SubscribeEvent public static void onPlayerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) {
79+ if (event.getEntity() instanceof ServerPlayer player) {
80+ SavedData mapdata = MapVariables.get(event.getEntity().level());
81+ SavedData worlddata = WorldVariables.get(event.getEntity().level());
82+ if(mapdata != null)
83+ PacketDistributor.PLAYER.with(player).send(new SavedDataSyncMessage(0, mapdata));
84+ if(worlddata != null)
85+ PacketDistributor.PLAYER.with(player).send(new SavedDataSyncMessage(1, worlddata));
86+ }
87+ }
88+
89+ @SubscribeEvent public static void onPlayerChangedDimension(PlayerEvent.PlayerChangedDimensionEvent event) {
90+ if (event.getEntity() instanceof ServerPlayer player) {
91+ SavedData worlddata = WorldVariables.get(event.getEntity().level());
92+ if(worlddata != null)
93+ PacketDistributor.PLAYER.with(player).send(new SavedDataSyncMessage(1, worlddata));
94+ }
95+ }
96+
97+ @SubscribeEvent public static void onWorldTick(TickEvent.LevelTickEvent event) {
98+ if (event.phase == TickEvent.Phase.END && event.level instanceof ServerLevel level) {
99+ WorldVariables worldVariables = WorldVariables.get(level);
100+ if (worldVariables._syncDirty) {
101+ PacketDistributor.DIMENSION.with(level.dimension()).send(new SavedDataSyncMessage(1, worldVariables));
102+ worldVariables._syncDirty = false;
103+ }
104+
105+ MapVariables mapVariables = MapVariables.get(level);
106+ if (mapVariables._syncDirty) {
107+ PacketDistributor.ALL.noArg().send(new SavedDataSyncMessage(0, mapVariables));
108+ mapVariables._syncDirty = false;
109+ }
110+ }
111+ }
112+ }
111113 </#if >
112114
113115 <#if w.hasVariablesOfScope("GLOBAL_WORLD") || w.hasVariablesOfScope("GLOBAL_MAP") >
@@ -236,8 +238,8 @@ import net.minecraft.nbt.Tag;
236238 data = dataType == 0 ? new MapVariables() : new WorldVariables();
237239 if(data instanceof MapVariables mapVariables)
238240 mapVariables.read(nbt);
239- else if(data instanceof WorldVariables worldVariables)
240- worldVariables.read(nbt);
241+ else if(data instanceof WorldVariables worldVariables)
242+ worldVariables.read(nbt);
241243 }
242244
243245 this.dataType = dataType;
@@ -332,7 +334,7 @@ import net.minecraft.nbt.Tag;
332334 if (context.flow() == PacketFlow.CLIENTBOUND && message.data != null) {
333335 context.workHandler().submitAsync(() ->
334336 <#-- If we use setData here, we may get unwanted references to old data instance -->
335- context.player ().get() .getData(PLAYER_VARIABLES).deserializeNBT(message.data.serializeNBT())
337+ Minecraft.getInstance ().player .getData(PLAYER_VARIABLES).deserializeNBT(message.data.serializeNBT())
336338 ).exceptionally(e -> {
337339 context.packetHandler().disconnect(Component.literal(e.getMessage()));
338340 return null;
0 commit comments