diff --git a/patches/minecraft/net/minecraft/world/server/ChunkManager.java.patch b/patches/minecraft/net/minecraft/world/server/ChunkManager.java.patch
index a82bbc522..a813f6a54 100644
--- a/patches/minecraft/net/minecraft/world/server/ChunkManager.java.patch
+++ b/patches/minecraft/net/minecraft/world/server/ChunkManager.java.patch
@@ -40,11 +40,11 @@
this.func_219100_a(chunkpos, compoundnbt1);
return true;
} catch (Exception exception) {
-@@ -815,6 +820,7 @@
- for(int l = i - this.field_219247_A; l <= i + this.field_219247_A; ++l) {
- for(int k = j - this.field_219247_A; k <= j + this.field_219247_A; ++k) {
- ChunkPos chunkpos = new ChunkPos(l, k);
-+ net.minecraftforge.event.ForgeEventFactory.fireChunkWatch(p_219234_2_, p_219234_1_, chunkpos, field_219255_i);
- this.func_219199_a(p_219234_1_, chunkpos, new IPacket[2], !p_219234_2_, p_219234_2_);
- }
- }
+@@ -711,6 +716,7 @@
+
+ protected void func_219199_a(ServerPlayerEntity p_219199_1_, ChunkPos p_219199_2_, IPacket>[] p_219199_3_, boolean p_219199_4_, boolean p_219199_5_) {
+ if (p_219199_1_.field_70170_p == this.field_219255_i) {
++ net.minecraftforge.event.ForgeEventFactory.fireChunkWatch(p_219199_4_, p_219199_5_, p_219199_1_, p_219199_2_, this.field_219255_i);
+ if (p_219199_5_ && !p_219199_4_) {
+ ChunkHolder chunkholder = this.func_219219_b(p_219199_2_.func_201841_a());
+ if (chunkholder != null) {
diff --git a/src/main/java/net/minecraftforge/event/ForgeEventFactory.java b/src/main/java/net/minecraftforge/event/ForgeEventFactory.java
index eab14211a..1c4a80d83 100644
--- a/src/main/java/net/minecraftforge/event/ForgeEventFactory.java
+++ b/src/main/java/net/minecraftforge/event/ForgeEventFactory.java
@@ -694,6 +694,12 @@ public class ForgeEventFactory
MinecraftForge.EVENT_BUS.post(new ChunkWatchEvent.UnWatch(entity, chunkpos, world));
}
+ public static void fireChunkWatch(boolean wasLoaded, boolean load, ServerPlayerEntity entity, ChunkPos chunkpos, ServerWorld world)
+ {
+ if (wasLoaded != load)
+ fireChunkWatch(load, entity, chunkpos, world);
+ }
+
public static boolean onPistonMovePre(World world, BlockPos pos, Direction direction, boolean extending)
{
return MinecraftForge.EVENT_BUS.post(new PistonEvent.Pre(world, pos, direction, extending ? PistonEvent.PistonMoveType.EXTEND : PistonEvent.PistonMoveType.RETRACT));
diff --git a/src/main/java/net/minecraftforge/event/world/ChunkWatchEvent.java b/src/main/java/net/minecraftforge/event/world/ChunkWatchEvent.java
index a329ea455..af0a43ec0 100644
--- a/src/main/java/net/minecraftforge/event/world/ChunkWatchEvent.java
+++ b/src/main/java/net/minecraftforge/event/world/ChunkWatchEvent.java
@@ -29,7 +29,8 @@ import net.minecraftforge.eventbus.api.Event;
* If a method utilizes this {@link Event} as its parameter, the method will
* receive every child event of this class.
*
- * {@link #chunk} contains the ChunkPos of the Chunk this event is affecting.
+ * {@link #pos} contains the ChunkPos of the Chunk this event is affecting.
+ * {@link #world} contains the World of the Chunk this event is affecting.
* {@link #player} contains the EntityPlayer that is involved with this chunk being watched.
*
* The {@link #player}'s world may not be the same as the world of the chunk
@@ -68,7 +69,7 @@ public class ChunkWatchEvent extends Event
/**
* ChunkWatchEvent.Watch is fired when an EntityPlayer begins watching a chunk.
* This event is fired when a chunk is added to the watched chunks of an EntityPlayer in
- * {@link PlayerChunkMapEntry#addPlayer(EntityPlayerMP)} and {@link PlayerChunkMapEntry#sendToPlayers()}.
+ * {@link net.minecraft.world.server.ChunkManager#setChunkLoadedAtClient}.
*
* This event is not {@link net.minecraftforge.eventbus.api.Cancelable}.
*
@@ -84,7 +85,7 @@ public class ChunkWatchEvent extends Event
/**
* ChunkWatchEvent.UnWatch is fired when an EntityPlayer stops watching a chunk.
* This event is fired when a chunk is removed from the watched chunks of an EntityPlayer in
- * {@link PlayerChunkMapEntry#removePlayer(EntityPlayerMP)}.
+ * {@link net.minecraft.world.server.ChunkManager#setChunkLoadedAtClient}.
*
* This event is not {@link net.minecraftforge.eventbus.api.Cancelable}.
*
diff --git a/src/test/java/net/minecraftforge/debug/entity/GravityAttributeTest.java b/src/test/java/net/minecraftforge/debug/entity/GravityAttributeTest.java
index 0af852f66..528c4aa7a 100644
--- a/src/test/java/net/minecraftforge/debug/entity/GravityAttributeTest.java
+++ b/src/test/java/net/minecraftforge/debug/entity/GravityAttributeTest.java
@@ -53,7 +53,7 @@ import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
@Mod("gravity_attribute_test")
public class GravityAttributeTest
{
- public static final boolean ENABLE = true;
+ public static final boolean ENABLE = false;
private static Logger logger = LogManager.getLogger();
private int ticks;
private static final UUID REDUCED_GRAVITY_ID = UUID.fromString("DEB06000-7979-4242-8888-00000DEB0600");
diff --git a/src/test/java/net/minecraftforge/debug/world/ChunkWatchEventTest.java b/src/test/java/net/minecraftforge/debug/world/ChunkWatchEventTest.java
index f8af64bbc..441c2f484 100644
--- a/src/test/java/net/minecraftforge/debug/world/ChunkWatchEventTest.java
+++ b/src/test/java/net/minecraftforge/debug/world/ChunkWatchEventTest.java
@@ -17,31 +17,34 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-/*
-
-
package net.minecraftforge.debug.world;
-import org.apache.logging.log4j.Logger;
-
+import it.unimi.dsi.fastutil.objects.Object2IntMap;
+import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.world.ChunkWatchEvent;
+import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
-import net.minecraftforge.fml.event.FMLPreInitializationEvent;
-import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
-//@Mod(modid = ChunkWatchEventTest.MODID, name = "Chunk Watch Event Test", version = "1.0", acceptableRemoteVersions = "*")
+import javax.annotation.Nullable;
+import java.util.UUID;
+
+@Mod(ChunkWatchEventTest.MODID)
public class ChunkWatchEventTest
{
public static final String MODID = "chunkwatchworldtest";
private static final boolean ENABLED = false;
private static Logger logger;
+ private static Object2IntMap watchedByPlayer = new Object2IntOpenHashMap<>();
- @Mod.EventHandler
- public void preInit(FMLPreInitializationEvent event)
+ public ChunkWatchEventTest()
{
- logger = event.getModLog();
+ logger = LogManager.getLogger();
if (ENABLED)
{
@@ -52,13 +55,27 @@ public class ChunkWatchEventTest
@SubscribeEvent
public static void onUnwatch(ChunkWatchEvent.UnWatch event)
{
- logger.info("Unwatching chunk {} in dimension {}. Player's dimension: {} ", event.getChunk(), event.getChunkInstance().getWorld().provider.getDimension(), event.getPlayer().getEntityWorld().provider.getDimension());
+ int watched = watchedByPlayer.getInt(event.getPlayer().getUniqueID());
+ --watched;
+ watchedByPlayer.put(event.getPlayer().getUniqueID(), watched);
+ logger.info("Unwatching chunk {} in dimension {}. Player's dimension: {}, total chunks watched by player {}",
+ event.getPos(), getDimensionName(event.getWorld()), getDimensionName(event.getPlayer().getEntityWorld()),
+ watched);
}
@SubscribeEvent
public static void onWatch(ChunkWatchEvent.Watch event)
{
- logger.info("Watching chunk {} in dimension {}. Player's dimension: {} ", event.getChunk(), event.getChunkInstance().getWorld().provider.getDimension(), event.getPlayer().getEntityWorld().provider.getDimension());
+ int watched = watchedByPlayer.getInt(event.getPlayer().getUniqueID());
+ ++watched;
+ watchedByPlayer.put(event.getPlayer().getUniqueID(), watched);
+ logger.info("Watching chunk {} in dimension {}. Player's dimension: {}, total chunks watched by player {}",
+ event.getPos(), getDimensionName(event.getWorld()), getDimensionName(event.getPlayer().getEntityWorld()),
+ watched);
+ }
+
+ @Nullable
+ private static ResourceLocation getDimensionName(World w) {
+ return w.getDimension().getType().getRegistryName();
}
}
-*/
diff --git a/src/test/resources/META-INF/mods.toml b/src/test/resources/META-INF/mods.toml
index 3084f8b00..1fb013733 100644
--- a/src/test/resources/META-INF/mods.toml
+++ b/src/test/resources/META-INF/mods.toml
@@ -53,7 +53,9 @@ loaderVersion="[28,)"
modId="new_model_loader_test"
[[mods]]
modId="forgedebugmultilayermodel"
+[[mods]]
+ modId="chunkwatchworldtest"
[[mods]]
modId="trsr_transformer_test"
[[mods]]
- modId="nameplate_render_test"
\ No newline at end of file
+ modId="nameplate_render_test"