Compare commits
6 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ea9ab3f27c | ||
|
|
ae5526ff76 | ||
|
|
f6f2314be6 | ||
|
|
4e5feda68f | ||
|
|
b6729158b0 | ||
|
|
d4cd2cf5b3 |
@@ -2,7 +2,7 @@ group = dev.kaiijumc.kaiiju
|
||||
version = 1.19.4-R0.1-SNAPSHOT
|
||||
mcVersion = 1.19.4
|
||||
|
||||
foliaRef = ce49776448d6fbd3c3bd399721e238efb2c6ab2e
|
||||
foliaRef = b97116b7b2236ca422150d93de5fd1fc8f08de17
|
||||
|
||||
org.gradle.caching=true
|
||||
org.gradle.parallel=true
|
||||
|
||||
35
patches/server/0012-Purpur-Gameplay-FixVoidTrading.patch
Normal file
35
patches/server/0012-Purpur-Gameplay-FixVoidTrading.patch
Normal file
@@ -0,0 +1,35 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: "Sofiane H. Djerbi" <46628754+kugge@users.noreply.github.com>
|
||||
Date: Sun, 23 Apr 2023 15:34:30 +0300
|
||||
Subject: [PATCH] Purpur Gameplay FixVoidTrading
|
||||
|
||||
|
||||
diff --git a/src/main/java/dev/kaiijumc/kaiiju/KaiijuWorldConfig.java b/src/main/java/dev/kaiijumc/kaiiju/KaiijuWorldConfig.java
|
||||
index 0f0cfd958f7d2c6d2ca4192be1b986900a2bfa53..c267b0cd52448246c7701081028ff0986dde2fa2 100644
|
||||
--- a/src/main/java/dev/kaiijumc/kaiiju/KaiijuWorldConfig.java
|
||||
+++ b/src/main/java/dev/kaiijumc/kaiiju/KaiijuWorldConfig.java
|
||||
@@ -147,8 +147,10 @@ public class KaiijuWorldConfig {
|
||||
}
|
||||
|
||||
public boolean shulkerBoxDropContentsWhenDestroyed = true;
|
||||
+ public boolean fixVoidTrading = true;
|
||||
|
||||
private void gameplaySettings() {
|
||||
shulkerBoxDropContentsWhenDestroyed = getBoolean("gameplay.shulker-box-drop-contents-when-destroyed", shulkerBoxDropContentsWhenDestroyed);
|
||||
+ fixVoidTrading = getBoolean("gameplay.fix-void-trading", fixVoidTrading);
|
||||
}
|
||||
}
|
||||
\ No newline at end of file
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
index 35ae624be25b66d5615dc19cbe7eb8785c7029b5..92cc38353d25f3749186dbc062402c9bafb25fca 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -2824,7 +2824,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||
// Spigot Start
|
||||
if (entity.getBukkitEntity() instanceof org.bukkit.inventory.InventoryHolder && (!(entity instanceof ServerPlayer) || entity.getRemovalReason() != Entity.RemovalReason.KILLED)) { // SPIGOT-6876: closeInventory clears death message
|
||||
// Paper start
|
||||
- if (entity.getBukkitEntity() instanceof org.bukkit.inventory.Merchant merchant && merchant.getTrader() != null) {
|
||||
+ if (entity.level.kaiijuConfig.fixVoidTrading && entity.getBukkitEntity() instanceof org.bukkit.inventory.Merchant merchant && merchant.getTrader() != null) { // Kaiiju
|
||||
merchant.getTrader().closeInventory(org.bukkit.event.inventory.InventoryCloseEvent.Reason.UNLOADED);
|
||||
}
|
||||
// Paper end
|
||||
219
patches/server/0013-Kaiiju-Gameplay-OptimizeHoppersToggle.patch
Normal file
219
patches/server/0013-Kaiiju-Gameplay-OptimizeHoppersToggle.patch
Normal file
@@ -0,0 +1,219 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: "Sofiane H. Djerbi" <46628754+kugge@users.noreply.github.com>
|
||||
Date: Thu, 27 Apr 2023 03:49:08 +0300
|
||||
Subject: [PATCH] Kaiiju Gameplay OptimizeHoppersToggle
|
||||
|
||||
|
||||
diff --git a/src/main/java/dev/kaiijumc/kaiiju/KaiijuWorldConfig.java b/src/main/java/dev/kaiijumc/kaiiju/KaiijuWorldConfig.java
|
||||
index c267b0cd52448246c7701081028ff0986dde2fa2..2624e074e0a14f5e05aca8fa910b5e5d71f320a9 100644
|
||||
--- a/src/main/java/dev/kaiijumc/kaiiju/KaiijuWorldConfig.java
|
||||
+++ b/src/main/java/dev/kaiijumc/kaiiju/KaiijuWorldConfig.java
|
||||
@@ -148,9 +148,11 @@ public class KaiijuWorldConfig {
|
||||
|
||||
public boolean shulkerBoxDropContentsWhenDestroyed = true;
|
||||
public boolean fixVoidTrading = true;
|
||||
+ public boolean optimizeHoppers = true;
|
||||
|
||||
private void gameplaySettings() {
|
||||
shulkerBoxDropContentsWhenDestroyed = getBoolean("gameplay.shulker-box-drop-contents-when-destroyed", shulkerBoxDropContentsWhenDestroyed);
|
||||
fixVoidTrading = getBoolean("gameplay.fix-void-trading", fixVoidTrading);
|
||||
+ optimizeHoppers = getBoolean("gameplay.optimize-hoppers", optimizeHoppers);
|
||||
}
|
||||
}
|
||||
\ No newline at end of file
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
index 0134370081182260d578ee1d8a16d544c03b6a0d..555d86f0a9132c2292470c60f263e59082f0c26e 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/entity/HopperBlockEntity.java
|
||||
@@ -401,49 +401,51 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
if (HopperBlockEntity.isFullContainer(iinventory1, enumdirection)) {
|
||||
return false;
|
||||
} else {
|
||||
+ // Kaiiju start - Toggle paper broken redstone
|
||||
// Paper start - replace logic; MAKE SURE TO CHECK FOR DIFFS ON UPDATES
|
||||
- return hopperPush(world, iinventory1, enumdirection, hopper);
|
||||
- // for (int i = 0; i < iinventory.getContainerSize(); ++i) {
|
||||
- // if (!iinventory.getItem(i).isEmpty()) {
|
||||
- // ItemStack itemstack = iinventory.getItem(i).copy();
|
||||
- // // ItemStack itemstack1 = addItem(iinventory, iinventory1, iinventory.removeItem(i, 1), enumdirection);
|
||||
-
|
||||
- // // CraftBukkit start - Call event when pushing items into other inventories
|
||||
- // CraftItemStack oitemstack = CraftItemStack.asCraftMirror(iinventory.removeItem(i, world.spigotConfig.hopperAmount)); // Spigot
|
||||
-
|
||||
- // Inventory destinationInventory;
|
||||
- // // Have to special case large chests as they work oddly
|
||||
- // if (iinventory1 instanceof CompoundContainer) {
|
||||
- // destinationInventory = new org.bukkit.craftbukkit.inventory.CraftInventoryDoubleChest((CompoundContainer) iinventory1);
|
||||
- // } else if (iinventory1.getOwner() != null) {
|
||||
- // destinationInventory = iinventory1.getOwner().getInventory();
|
||||
- // } else {
|
||||
- // destinationInventory = new CraftInventory(iinventory);
|
||||
- // }
|
||||
-
|
||||
- // InventoryMoveItemEvent event = new InventoryMoveItemEvent(iinventory.getOwner().getInventory(), oitemstack.clone(), destinationInventory, true);
|
||||
- // world.getCraftServer().getPluginManager().callEvent(event);
|
||||
- // if (event.isCancelled()) {
|
||||
- // hopper.setItem(i, itemstack);
|
||||
- // hopper.setCooldown(world.spigotConfig.hopperTransfer); // Spigot
|
||||
- // return false;
|
||||
- // }
|
||||
- // int origCount = event.getItem().getAmount(); // Spigot
|
||||
- // ItemStack itemstack1 = HopperBlockEntity.addItem(iinventory, iinventory1, CraftItemStack.asNMSCopy(event.getItem()), enumdirection);
|
||||
+ if (world.kaiijuConfig.optimizeHoppers) return hopperPush(world, iinventory1, enumdirection, hopper);
|
||||
+ for (int i = 0; i < iinventory.getContainerSize(); ++i) {
|
||||
+ if (!iinventory.getItem(i).isEmpty()) {
|
||||
+ ItemStack itemstack = iinventory.getItem(i).copy();
|
||||
+ // ItemStack itemstack1 = addItem(iinventory, iinventory1, iinventory.removeItem(i, 1), enumdirection);
|
||||
+
|
||||
+ // CraftBukkit start - Call event when pushing items into other inventories
|
||||
+ CraftItemStack oitemstack = CraftItemStack.asCraftMirror(iinventory.removeItem(i, world.spigotConfig.hopperAmount)); // Spigot
|
||||
+
|
||||
+ Inventory destinationInventory;
|
||||
+ // Have to special case large chests as they work oddly
|
||||
+ if (iinventory1 instanceof CompoundContainer) {
|
||||
+ destinationInventory = new org.bukkit.craftbukkit.inventory.CraftInventoryDoubleChest((CompoundContainer) iinventory1);
|
||||
+ } else if (iinventory1.getOwner() != null) {
|
||||
+ destinationInventory = iinventory1.getOwner().getInventory();
|
||||
+ } else {
|
||||
+ destinationInventory = new CraftInventory(iinventory);
|
||||
+ }
|
||||
+
|
||||
+ InventoryMoveItemEvent event = new InventoryMoveItemEvent(iinventory.getOwner().getInventory(), oitemstack.clone(), destinationInventory, true);
|
||||
+ world.getCraftServer().getPluginManager().callEvent(event);
|
||||
+ if (event.isCancelled()) {
|
||||
+ hopper.setItem(i, itemstack);
|
||||
+ hopper.setCooldown(world.spigotConfig.hopperTransfer); // Spigot
|
||||
+ return false;
|
||||
+ }
|
||||
+ int origCount = event.getItem().getAmount(); // Spigot
|
||||
+ ItemStack itemstack1 = HopperBlockEntity.addItem(iinventory, iinventory1, CraftItemStack.asNMSCopy(event.getItem()), enumdirection);
|
||||
// CraftBukkit end
|
||||
|
||||
- // if (itemstack1.isEmpty()) {
|
||||
- // iinventory1.setChanged();
|
||||
- // return true;
|
||||
- // }
|
||||
+ if (itemstack1.isEmpty()) {
|
||||
+ iinventory1.setChanged();
|
||||
+ return true;
|
||||
+ }
|
||||
|
||||
- // itemstack.shrink(origCount - itemstack1.getCount()); // Spigot
|
||||
- // iinventory.setItem(i, itemstack);
|
||||
- // }
|
||||
- // }
|
||||
+ itemstack.shrink(origCount - itemstack1.getCount()); // Spigot
|
||||
+ iinventory.setItem(i, itemstack);
|
||||
+ }
|
||||
+ }
|
||||
|
||||
- // return false;
|
||||
+ return false;
|
||||
// Paper end
|
||||
+ // Kaiiju end
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -467,6 +469,12 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
if (iinventory != null) {
|
||||
Direction enumdirection = Direction.DOWN;
|
||||
|
||||
+ // Kaiiju start - toggle paper broken redstone
|
||||
+ if (!world.kaiijuConfig.optimizeHoppers)
|
||||
+ return HopperBlockEntity.isEmptyContainer(iinventory, enumdirection) ? false : HopperBlockEntity.getSlots(iinventory, enumdirection).anyMatch((i) -> {
|
||||
+ return HopperBlockEntity.a(hopper, iinventory, i, enumdirection, world); // Spigot
|
||||
+ });
|
||||
+ // Kaiiju end
|
||||
// Paper start - optimize hoppers and remove streams
|
||||
worldData.skipPullModeEventFire = worldData.skipHopperEvents; // Folia - region threading
|
||||
return !HopperBlockEntity.isEmptyContainer(iinventory, enumdirection) && anyMatch(iinventory, enumdirection, (item, i) -> {
|
||||
@@ -499,48 +507,50 @@ public class HopperBlockEntity extends RandomizableContainerBlockEntity implemen
|
||||
private static boolean a(Hopper ihopper, Container iinventory, int i, Direction enumdirection, Level world) { // Spigot
|
||||
ItemStack itemstack = iinventory.getItem(i);
|
||||
|
||||
+ // Kaiiju start - toggle paper broken redstone
|
||||
// Paper start - replace pull logic; MAKE SURE TO CHECK FOR DIFFS WHEN UPDATING
|
||||
if (!itemstack.isEmpty() && HopperBlockEntity.canTakeItemFromContainer(ihopper, iinventory, itemstack, i, enumdirection)) { // If this logic changes, update above. this is left unused incase reflective plugins
|
||||
- return hopperPull(world, ihopper, iinventory, itemstack, i);
|
||||
- // ItemStack itemstack1 = itemstack.copy();
|
||||
- // // ItemStack itemstack2 = addItem(iinventory, ihopper, iinventory.removeItem(i, 1), (EnumDirection) null);
|
||||
- // // CraftBukkit start - Call event on collection of items from inventories into the hopper
|
||||
- // CraftItemStack oitemstack = CraftItemStack.asCraftMirror(iinventory.removeItem(i, world.spigotConfig.hopperAmount)); // Spigot
|
||||
-
|
||||
- // Inventory sourceInventory;
|
||||
- // // Have to special case large chests as they work oddly
|
||||
- // if (iinventory instanceof CompoundContainer) {
|
||||
- // sourceInventory = new org.bukkit.craftbukkit.inventory.CraftInventoryDoubleChest((CompoundContainer) iinventory);
|
||||
- // } else if (iinventory.getOwner() != null) {
|
||||
- // sourceInventory = iinventory.getOwner().getInventory();
|
||||
- // } else {
|
||||
- // sourceInventory = new CraftInventory(iinventory);
|
||||
- // }
|
||||
-
|
||||
- // InventoryMoveItemEvent event = new InventoryMoveItemEvent(sourceInventory, oitemstack.clone(), ihopper.getOwner().getInventory(), false);
|
||||
-
|
||||
- // Bukkit.getServer().getPluginManager().callEvent(event);
|
||||
- // if (event.isCancelled()) {
|
||||
- // iinventory.setItem(i, itemstack1);
|
||||
-
|
||||
- // if (ihopper instanceof HopperBlockEntity) {
|
||||
- // ((HopperBlockEntity) ihopper).setCooldown(world.spigotConfig.hopperTransfer); // Spigot
|
||||
- // }
|
||||
-
|
||||
- // return false;
|
||||
- // }
|
||||
- // int origCount = event.getItem().getAmount(); // Spigot
|
||||
- // ItemStack itemstack2 = HopperBlockEntity.addItem(iinventory, ihopper, CraftItemStack.asNMSCopy(event.getItem()), null);
|
||||
- // // CraftBukkit end
|
||||
-
|
||||
- // if (itemstack2.isEmpty()) {
|
||||
- // iinventory.setChanged();
|
||||
- // return true;
|
||||
- // }
|
||||
-
|
||||
- // itemstack1.shrink(origCount - itemstack2.getCount()); // Spigot
|
||||
- // iinventory.setItem(i, itemstack1);
|
||||
+ if (world.kaiijuConfig.optimizeHoppers) return hopperPull(world, ihopper, iinventory, itemstack, i);
|
||||
+ ItemStack itemstack1 = itemstack.copy();
|
||||
+ // ItemStack itemstack2 = addItem(iinventory, ihopper, iinventory.removeItem(i, 1), (EnumDirection) null);
|
||||
+ // CraftBukkit start - Call event on collection of items from inventories into the hopper
|
||||
+ CraftItemStack oitemstack = CraftItemStack.asCraftMirror(iinventory.removeItem(i, world.spigotConfig.hopperAmount)); // Spigot
|
||||
+
|
||||
+ Inventory sourceInventory;
|
||||
+ // Have to special case large chests as they work oddly
|
||||
+ if (iinventory instanceof CompoundContainer) {
|
||||
+ sourceInventory = new org.bukkit.craftbukkit.inventory.CraftInventoryDoubleChest((CompoundContainer) iinventory);
|
||||
+ } else if (iinventory.getOwner() != null) {
|
||||
+ sourceInventory = iinventory.getOwner().getInventory();
|
||||
+ } else {
|
||||
+ sourceInventory = new CraftInventory(iinventory);
|
||||
+ }
|
||||
+
|
||||
+ InventoryMoveItemEvent event = new InventoryMoveItemEvent(sourceInventory, oitemstack.clone(), ihopper.getOwner().getInventory(), false);
|
||||
+
|
||||
+ Bukkit.getServer().getPluginManager().callEvent(event);
|
||||
+ if (event.isCancelled()) {
|
||||
+ iinventory.setItem(i, itemstack1);
|
||||
+
|
||||
+ if (ihopper instanceof HopperBlockEntity) {
|
||||
+ ((HopperBlockEntity) ihopper).setCooldown(world.spigotConfig.hopperTransfer); // Spigot
|
||||
+ }
|
||||
+
|
||||
+ return false;
|
||||
+ }
|
||||
+ int origCount = event.getItem().getAmount(); // Spigot
|
||||
+ ItemStack itemstack2 = HopperBlockEntity.addItem(iinventory, ihopper, CraftItemStack.asNMSCopy(event.getItem()), null);
|
||||
+ // CraftBukkit end
|
||||
+
|
||||
+ if (itemstack2.isEmpty()) {
|
||||
+ iinventory.setChanged();
|
||||
+ return true;
|
||||
+ }
|
||||
+
|
||||
+ itemstack1.shrink(origCount - itemstack2.getCount()); // Spigot
|
||||
+ iinventory.setItem(i, itemstack1);
|
||||
// Paper end
|
||||
+ // Kaiiju end
|
||||
}
|
||||
|
||||
return false;
|
||||
101
patches/todo/0012-Static-Distance-WIP.patch
Normal file
101
patches/todo/0012-Static-Distance-WIP.patch
Normal file
@@ -0,0 +1,101 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: "Sofiane H. Djerbi" <46628754+kugge@users.noreply.github.com>
|
||||
Date: Wed, 19 Apr 2023 02:37:04 +0300
|
||||
Subject: [PATCH] Static Distance WIP
|
||||
|
||||
|
||||
diff --git a/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java b/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java
|
||||
index e77972c4c264100ffdd824bfa2dac58dbbc6d678..cddacd6d5bbe97641bd23f5c067012907d9c5c01 100644
|
||||
--- a/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java
|
||||
+++ b/src/main/java/io/papermc/paper/chunk/PlayerChunkLoader.java
|
||||
@@ -75,6 +75,17 @@ public final class PlayerChunkLoader {
|
||||
return data.getTargetSendViewDistance();
|
||||
}
|
||||
|
||||
+ // Kaiiju start - Static distance
|
||||
+ public static int getStaticDistance(final ServerPlayer player) {
|
||||
+ final ServerLevel level = (ServerLevel)player.level;
|
||||
+ final PlayerLoaderData data = level.chunkSource.chunkMap.playerChunkManager.getData(player);
|
||||
+ if (data == null) {
|
||||
+ return level.chunkSource.chunkMap.playerChunkManager.getTargetStaticDistance();
|
||||
+ }
|
||||
+ return data.getTargetSendViewDistance();
|
||||
+ }
|
||||
+ // Kaiiju end
|
||||
+
|
||||
protected final ChunkMap chunkMap;
|
||||
protected final Reference2ObjectLinkedOpenHashMap<ServerPlayer, PlayerLoaderData> playerMap = new Reference2ObjectLinkedOpenHashMap<>(512, 0.7f);
|
||||
protected final ReferenceLinkedOpenHashSet<PlayerLoaderData> chunkSendQueue = new ReferenceLinkedOpenHashSet<>(512, 0.7f);
|
||||
@@ -132,6 +143,12 @@ public final class PlayerChunkLoader {
|
||||
|
||||
// no throttling is applied below this VD for loading
|
||||
|
||||
+ // Kaiiju start - Static distance
|
||||
+ public final PlayerAreaMap staticMap;
|
||||
+ protected int rawStaticDistance = -1;
|
||||
+ // Kaiiju end
|
||||
+
|
||||
+
|
||||
/**
|
||||
* The chunks to be sent to players, provided they're send-ready. Send-ready means the chunk and its 1 radius neighbours are loaded.
|
||||
*/
|
||||
@@ -190,6 +207,12 @@ public final class PlayerChunkLoader {
|
||||
return this.rawSendDistance == -1 ? this.getLoadDistance() : this.rawSendDistance;
|
||||
}
|
||||
|
||||
+ // Kaiiju start - Static distance
|
||||
+ public int getTargetStaticDistance() {
|
||||
+ return this.rawStaticDistance == -1 ? this.getStaticDistance() : this.rawStaticDistance;
|
||||
+ }
|
||||
+ // Kaiiju end
|
||||
+
|
||||
public void setTargetSendDistance(final int distance) {
|
||||
this.setSendDistance(distance);
|
||||
}
|
||||
@@ -231,6 +254,16 @@ public final class PlayerChunkLoader {
|
||||
this.rawTickDistance = distance;
|
||||
}
|
||||
|
||||
+ // Kaiiju start - Static distance
|
||||
+ public void setStaticDistance(final int distance) {
|
||||
+ this.rawStaticDistance = distance;
|
||||
+ }
|
||||
+
|
||||
+ public int getStaticDistance() {
|
||||
+ return this.rawStaticDistance;
|
||||
+ }
|
||||
+ // Kaiiju end
|
||||
+
|
||||
/*
|
||||
Players have 3 different types of view distance:
|
||||
1. Sending view distance
|
||||
@@ -256,7 +289,13 @@ public final class PlayerChunkLoader {
|
||||
|
||||
public PlayerChunkLoader(final ChunkMap chunkMap, final PooledLinkedHashSets<ServerPlayer> pooledHashSets) {
|
||||
this.chunkMap = chunkMap;
|
||||
+ // Kaiiju start - Static distance
|
||||
this.broadcastMap = new PlayerAreaMap(pooledHashSets,
|
||||
+ null,
|
||||
+ (ServerPlayer player, int rangeX, int rangeZ, int currPosX, int currPosZ, int prevPosX, int prevPosZ,
|
||||
+ com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<ServerPlayer> newState) -> {});
|
||||
+ // Kaiiju end
|
||||
+ this.staticMap = new PlayerAreaMap(pooledHashSets,
|
||||
null,
|
||||
(ServerPlayer player, int rangeX, int rangeZ, int currPosX, int currPosZ, int prevPosX, int prevPosZ,
|
||||
com.destroystokyo.paper.util.misc.PooledLinkedHashSets.PooledObjectLinkedOpenHashSet<ServerPlayer> newState) -> {
|
||||
@@ -807,6 +846,7 @@ public final class PlayerChunkLoader {
|
||||
protected int sendViewDistance = -1;
|
||||
protected int loadViewDistance = -1;
|
||||
protected int tickViewDistance = -1;
|
||||
+ protected int staticViewDistance = -1; // Kaiiju
|
||||
|
||||
protected long nextChunkSendTarget;
|
||||
|
||||
@@ -932,6 +972,7 @@ public final class PlayerChunkLoader {
|
||||
this.loader.loadMap.remove(this.player);
|
||||
this.loader.loadTicketCleanup.remove(this.player);
|
||||
this.loader.tickMap.remove(this.player);
|
||||
+ this.loader.staticMap.remove(this.player); // Kaiiju
|
||||
}
|
||||
|
||||
protected int getClientViewDistance() {
|
||||
Reference in New Issue
Block a user