From 363e84b2c5310e787ba8f18c6b4de3041a41d33f Mon Sep 17 00:00:00 2001 From: mezz Date: Sat, 7 May 2016 11:17:18 -0700 Subject: [PATCH] Fix the rand given to PopulateChunkEvent (#2834) --- .../minecraft/world/gen/ChunkProviderEnd.java.patch | 4 ++-- .../minecraft/world/gen/ChunkProviderHell.java.patch | 4 ++-- .../world/gen/ChunkProviderOverworld.java.patch | 4 ++-- .../net/minecraftforge/event/ForgeEventFactory.java | 11 +++++++++++ 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/patches/minecraft/net/minecraft/world/gen/ChunkProviderEnd.java.patch b/patches/minecraft/net/minecraft/world/gen/ChunkProviderEnd.java.patch index 27625d41d5..c982cc70be 100644 --- a/patches/minecraft/net/minecraft/world/gen/ChunkProviderEnd.java.patch +++ b/patches/minecraft/net/minecraft/world/gen/ChunkProviderEnd.java.patch @@ -58,7 +58,7 @@ public void func_185931_b(int p_185931_1_, int p_185931_2_) { BlockFalling.field_149832_M = true; -+ net.minecraftforge.event.ForgeEventFactory.onChunkPopulate(true, this, this.field_73230_p, p_185931_1_, p_185931_2_, false); ++ net.minecraftforge.event.ForgeEventFactory.onChunkPopulate(true, this, this.field_73230_p, this.field_73220_k, p_185931_1_, p_185931_2_, false); BlockPos blockpos = new BlockPos(p_185931_1_ * 16, 0, p_185931_2_ * 16); if (this.field_73229_q) @@ -66,7 +66,7 @@ } } -+ net.minecraftforge.event.ForgeEventFactory.onChunkPopulate(false, this, this.field_73230_p, p_185931_1_, p_185931_2_, false); ++ net.minecraftforge.event.ForgeEventFactory.onChunkPopulate(false, this, this.field_73230_p, this.field_73220_k, p_185931_1_, p_185931_2_, false); BlockFalling.field_149832_M = false; } diff --git a/patches/minecraft/net/minecraft/world/gen/ChunkProviderHell.java.patch b/patches/minecraft/net/minecraft/world/gen/ChunkProviderHell.java.patch index f4704abe85..59760965cd 100644 --- a/patches/minecraft/net/minecraft/world/gen/ChunkProviderHell.java.patch +++ b/patches/minecraft/net/minecraft/world/gen/ChunkProviderHell.java.patch @@ -43,7 +43,7 @@ public void func_185931_b(int p_185931_1_, int p_185931_2_) { BlockFalling.field_149832_M = true; -+ net.minecraftforge.event.ForgeEventFactory.onChunkPopulate(true, this, this.field_185952_n, p_185931_1_, p_185931_2_, false); ++ net.minecraftforge.event.ForgeEventFactory.onChunkPopulate(true, this, this.field_185952_n, this.field_185954_p, p_185931_1_, p_185931_2_, false); BlockPos blockpos = new BlockPos(p_185931_1_ * 16, 0, p_185931_2_ * 16); ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(p_185931_1_, p_185931_2_); this.field_73172_c.func_175794_a(this.field_185952_n, this.field_185954_p, chunkcoordintpair); @@ -71,7 +71,7 @@ } + }//Forge: End doGLowstone -+ net.minecraftforge.event.ForgeEventFactory.onChunkPopulate(false, this, this.field_185952_n, p_185931_1_, p_185931_2_, false); ++ net.minecraftforge.event.ForgeEventFactory.onChunkPopulate(false, this, this.field_185952_n, this.field_185954_p, p_185931_1_, p_185931_2_, false); + net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.terraingen.DecorateBiomeEvent.Pre(this.field_185952_n, this.field_185954_p, blockpos)); + + if (net.minecraftforge.event.terraingen.TerrainGen.decorate(this.field_185952_n, this.field_185954_p, blockpos, net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate.EventType.SHROOM)) diff --git a/patches/minecraft/net/minecraft/world/gen/ChunkProviderOverworld.java.patch b/patches/minecraft/net/minecraft/world/gen/ChunkProviderOverworld.java.patch index 61da97cbd0..605e898ab8 100644 --- a/patches/minecraft/net/minecraft/world/gen/ChunkProviderOverworld.java.patch +++ b/patches/minecraft/net/minecraft/world/gen/ChunkProviderOverworld.java.patch @@ -46,7 +46,7 @@ boolean flag = false; ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(p_185931_1_, p_185931_2_); -+ net.minecraftforge.event.ForgeEventFactory.onChunkPopulate(true, this, this.field_185995_n, p_185931_1_, p_185931_2_, flag); ++ net.minecraftforge.event.ForgeEventFactory.onChunkPopulate(true, this, this.field_185995_n, this.field_185990_i, p_185931_1_, p_185931_2_, flag); + if (this.field_185996_o) { @@ -94,7 +94,7 @@ } + }//Forge: End ICE -+ net.minecraftforge.event.ForgeEventFactory.onChunkPopulate(false, this, this.field_185995_n, p_185931_1_, p_185931_2_, flag); ++ net.minecraftforge.event.ForgeEventFactory.onChunkPopulate(false, this, this.field_185995_n, this.field_185990_i, p_185931_1_, p_185931_2_, flag); + BlockFalling.field_149832_M = false; } diff --git a/src/main/java/net/minecraftforge/event/ForgeEventFactory.java b/src/main/java/net/minecraftforge/event/ForgeEventFactory.java index 9bbdfceb50..d590a891a6 100644 --- a/src/main/java/net/minecraftforge/event/ForgeEventFactory.java +++ b/src/main/java/net/minecraftforge/event/ForgeEventFactory.java @@ -3,6 +3,7 @@ package net.minecraftforge.event; import java.io.File; import java.util.EnumSet; import java.util.List; +import java.util.Random; import net.minecraft.block.state.IBlockState; import net.minecraft.entity.Entity; @@ -525,9 +526,19 @@ public class ForgeEventFactory return event.getResult() != net.minecraftforge.fml.common.eventhandler.Event.Result.DENY; } + /** + * @deprecated Use {@link #onChunkPopulate(boolean, IChunkGenerator, World, Random, int, int, boolean)}
+ * The Random param should not be world.rand, it should be the same chunk-position-seeded rand used by the Chunk Provider. + */ + @Deprecated public static void onChunkPopulate(boolean pre, IChunkGenerator gen, World world, int x, int z, boolean hasVillageGenerated) { MinecraftForge.EVENT_BUS.post(pre ? new PopulateChunkEvent.Pre(gen, world, world.rand, x, z, hasVillageGenerated) : new PopulateChunkEvent.Post(gen, world, world.rand, x, z, hasVillageGenerated)); } + public static void onChunkPopulate(boolean pre, IChunkGenerator gen, World world, Random rand, int x, int z, boolean hasVillageGenerated) + { + MinecraftForge.EVENT_BUS.post(pre ? new PopulateChunkEvent.Pre(gen, world, rand, x, z, hasVillageGenerated) : new PopulateChunkEvent.Post(gen, world, rand, x, z, hasVillageGenerated)); + } + }