diff --git a/patches/minecraft/net/minecraft/world/server/ChunkManager.java.patch b/patches/minecraft/net/minecraft/world/server/ChunkManager.java.patch index a813f6a546..225a05111b 100644 --- a/patches/minecraft/net/minecraft/world/server/ChunkManager.java.patch +++ b/patches/minecraft/net/minecraft/world/server/ChunkManager.java.patch @@ -36,7 +36,7 @@ this.field_219255_i.func_217381_Z().func_230035_c_("chunkSave"); CompoundNBT compoundnbt1 = ChunkSerializer.func_222645_a(this.field_219255_i, p_219229_1_); -+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.world.ChunkDataEvent.Save(p_219229_1_, compoundnbt1)); ++ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.world.ChunkDataEvent.Save(p_219229_1_, p_219229_1_.getWorldForge() != null ? p_219229_1_.getWorldForge() : this.field_219255_i, compoundnbt1)); this.func_219100_a(chunkpos, compoundnbt1); return true; } catch (Exception exception) { diff --git a/src/main/java/net/minecraftforge/event/world/ChunkDataEvent.java b/src/main/java/net/minecraftforge/event/world/ChunkDataEvent.java index d107154d72..2f9492b7ff 100644 --- a/src/main/java/net/minecraftforge/event/world/ChunkDataEvent.java +++ b/src/main/java/net/minecraftforge/event/world/ChunkDataEvent.java @@ -20,6 +20,7 @@ package net.minecraftforge.event.world; import net.minecraft.nbt.CompoundNBT; +import net.minecraft.world.IWorld; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.ChunkStatus; @@ -47,6 +48,12 @@ public class ChunkDataEvent extends ChunkEvent this.data = data; } + public ChunkDataEvent(IChunk chunk, IWorld world, CompoundNBT data) + { + super(chunk, world); + this.data = data; + } + public CompoundNBT getData() { return data; @@ -92,9 +99,15 @@ public class ChunkDataEvent extends ChunkEvent **/ public static class Save extends ChunkDataEvent { + @Deprecated // remove in 1.16 public Save(IChunk chunk, CompoundNBT data) { super(chunk, data); } + + public Save(IChunk chunk, IWorld world, CompoundNBT data) + { + super(chunk, world, data); + } } } diff --git a/src/main/java/net/minecraftforge/event/world/ChunkEvent.java b/src/main/java/net/minecraftforge/event/world/ChunkEvent.java index 11cbe242ce..d8bc71368e 100644 --- a/src/main/java/net/minecraftforge/event/world/ChunkEvent.java +++ b/src/main/java/net/minecraftforge/event/world/ChunkEvent.java @@ -19,6 +19,7 @@ package net.minecraftforge.event.world; +import net.minecraft.world.IWorld; import net.minecraft.world.chunk.IChunk; import net.minecraftforge.common.MinecraftForge; @@ -41,6 +42,12 @@ public class ChunkEvent extends WorldEvent this.chunk = chunk; } + public ChunkEvent(IChunk chunk, IWorld world) + { + super(world); + this.chunk = chunk; + } + public IChunk getChunk() { return chunk; diff --git a/src/test/java/net/minecraftforge/debug/world/ChunkDataEventSaveNullWorldTest.java b/src/test/java/net/minecraftforge/debug/world/ChunkDataEventSaveNullWorldTest.java new file mode 100644 index 0000000000..f01eab9136 --- /dev/null +++ b/src/test/java/net/minecraftforge/debug/world/ChunkDataEventSaveNullWorldTest.java @@ -0,0 +1,23 @@ +package net.minecraftforge.debug.world; + +import net.minecraftforge.event.world.ChunkDataEvent; +import net.minecraftforge.eventbus.api.SubscribeEvent; +import net.minecraftforge.fml.common.Mod; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +@Mod(ChunkDataEventSaveNullWorldTest.MODID) +@Mod.EventBusSubscriber +public class ChunkDataEventSaveNullWorldTest { + static final String MODID = "chunk_data_event_save_null_world_test"; + private static final Logger LOGGER = LogManager.getLogger(MODID); + + @SubscribeEvent + public static void onChunkSave(final ChunkDataEvent.Save event) + { + if(event.getWorld() == null) + { + LOGGER.info("Chunk at {} had null world", event.getChunk().getPos()); + } + } +} diff --git a/src/test/resources/META-INF/mods.toml b/src/test/resources/META-INF/mods.toml index d3cf4e7068..66562bd1c6 100644 --- a/src/test/resources/META-INF/mods.toml +++ b/src/test/resources/META-INF/mods.toml @@ -63,6 +63,8 @@ loaderVersion="[28,)" modId="global_loot_test" [[mods]] modId="custom_plant_type_test" +[[mods]] + modId="chunk_data_event_save_null_world_test" [[dependencies.global_loot_test]] modId="forge" mandatory=true