Skip to content

Commit

Permalink
Fix villagers dont release memory
Browse files Browse the repository at this point in the history
  • Loading branch information
404Setup committed Aug 30, 2024
1 parent 4fc9b3e commit b22ffb1
Show file tree
Hide file tree
Showing 44 changed files with 45 additions and 8 deletions.
5 changes: 3 additions & 2 deletions patches/api/0004-Vine-Config.patch
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ Subject: [PATCH] Vine Config

diff --git a/src/main/java/one/tranic/vine/config/VineConfig.java b/src/main/java/one/tranic/vine/config/VineConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..6864207a28badf5c3e4bab31c1ffd6b9f394e62f
index 0000000000000000000000000000000000000000..adeaa2e5d835817f0d5bea314a096bfee0d4d35f
--- /dev/null
+++ b/src/main/java/one/tranic/vine/config/VineConfig.java
@@ -0,0 +1,95 @@
@@ -0,0 +1,96 @@
+package one.tranic.vine.config;
+
+import one.tranic.vine.region.Compression;
Expand All @@ -23,6 +23,7 @@ index 0000000000000000000000000000000000000000..6864207a28badf5c3e4bab31c1ffd6b9
+ public static boolean incorrectBounceLogic = false;
+ /**Ensures correct destinations when travelling back and forth through Nether Portals in Multiplayer.*/
+ public static boolean netherPortal = false;
+ public static boolean villagersDontReleaseMemory = false;
+ /**
+ * Fixed a bug in Paper where anvils could become drops at y=0 or y=-1.
+ * This may not be useful as the implementation is crude, you can install the fix plugin to fix it additionally if you can.
Expand Down
9 changes: 7 additions & 2 deletions patches/server/0003-Vine-Config.patch
Original file line number Diff line number Diff line change
Expand Up @@ -696,10 +696,10 @@ index 0000000000000000000000000000000000000000..d584e3ca8e1bc70cee2bcb2a209f32d3
\ No newline at end of file
diff --git a/src/main/kotlin/one/tranic/vine/config/module/fix/Value.kt b/src/main/kotlin/one/tranic/vine/config/module/fix/Value.kt
new file mode 100644
index 0000000000000000000000000000000000000000..2914e9f87e50385cc64ab7c344ff29107a8793c8
index 0000000000000000000000000000000000000000..c221e08aa8e2702fe1041f97781ef899faaef32c
--- /dev/null
+++ b/src/main/kotlin/one/tranic/vine/config/module/fix/Value.kt
@@ -0,0 +1,39 @@
@@ -0,0 +1,44 @@
+package one.tranic.vine.config.module.fix
+
+import one.tranic.vine.config.ConfigUtil.addDefault
Expand Down Expand Up @@ -730,12 +730,17 @@ index 0000000000000000000000000000000000000000..2914e9f87e50385cc64ab7c344ff2910
+ false,
+ "Ensures correct destinations when travelling back and forth through Nether Portals in Multiplayer."
+ )
+ addDefault(
+ "fix.villagers-dont-release-memory",
+ false,
+ )
+ }
+
+ override fun load() {
+ Fix.explosionBreaksItemFrameInWater = getBoolean("fix.explosion-breaks-item-frame-in-water")
+ Fix.incorrectBounceLogic = getBoolean("fix.incorrect-bounce-logic")
+ Fix.netherPortal = getBoolean("fix.nether-portal")
+ Fix.villagersDontReleaseMemory = getBoolean("fix.villagers-dont-release-memory")
+ }
+
+}
Expand Down
31 changes: 31 additions & 0 deletions patches/server/0033-Leaves-Fix-villagers-dont-release-memory.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: violetc <58360096+s-yh-china@users.noreply.github.com>
Date: Sat, 22 Jul 2023 12:00:59 +0800
Subject: [PATCH] Leaves: Fix villagers dont release memory


diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index 971f2d594ead143f34911eea857203aac5bdd0b5..680b4b889f04afa604baa3513de5338f402b56b4 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -1185,4 +1185,20 @@ public class Villager extends AbstractVillager implements ReputationEventHandler

return optional.isPresent() ? worldTime - (Long) optional.get() < 24000L : false;
}
+
+ // Leaves start - fixes a memory leak when villagers get moved to another world
+ @Nullable
+ @Override
+ public Entity changeDimension(ServerLevel destination) {
+ if (one.tranic.vine.config.VineConfig.Fix.villagersDontReleaseMemory) {
+ this.releaseAllPois();
+ this.getBrain().eraseMemory(MemoryModuleType.HOME);
+ this.getBrain().eraseMemory(MemoryModuleType.JOB_SITE);
+ this.getBrain().eraseMemory(MemoryModuleType.POTENTIAL_JOB_SITE);
+ this.getBrain().eraseMemory(MemoryModuleType.MEETING_POINT);
+ this.refreshBrain(destination);
+ }
+ return super.changeDimension(destination);
+ }
+ // Leaves end - fixes a memory leak when villagers get moved to another world
}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ index 0e1dedb9baf70bd788a665e3cd7e53aa5f55def3..6c57a4bb3e30f906fddf84957533868a

public static long getCoordinateKey(final ChunkPos pair) {
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index 54065a663adeec4f8d429a14dd1e4f5fd47a6f48..e1b63e185f054b35b1ba522407541b21247e2e1f 100644
index b5e18649bb7b64df4f34b3deee5829dbdca8b915..bf76fb92aef1ff12423c10a8dc9b5f6b626b8d97 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -315,7 +315,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Original post on Mojira: https://bugs.mojang.com/browse/MC-2025
Fix taken from Reddit: https://redd.it/8pgd4q

diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index e1b63e185f054b35b1ba522407541b21247e2e1f..ca9d63cd2212191ff41b1161f683876c90f701d9 100644
index bf76fb92aef1ff12423c10a8dc9b5f6b626b8d97..ddbb7b3de1d46b71547d638991df9950dbdbd318 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2619,6 +2619,17 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Subject: [PATCH] Divine: Fix MC-167242
See https://bugs.mojang.com/browse/MC-167242

diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
index 971f2d594ead143f34911eea857203aac5bdd0b5..d4579e9053a8ec153685ea90d0db0f8a33883fe5 100644
index 680b4b889f04afa604baa3513de5338f402b56b4..d2169c7ea32fcb3e2e183692df49dc86f572b69b 100644
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
@@ -995,6 +995,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ As part of: Akarin (https://github.com/Akarin-project/Akarin)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)

diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
index ca9d63cd2212191ff41b1161f683876c90f701d9..a14906340a6278ee2740b6f0d1a160f8555ba13a 100644
index ddbb7b3de1d46b71547d638991df9950dbdbd318..9dc412b95c4bcdb1782eeb66b09101014f3fdcf0 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -2229,8 +2229,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
Expand Down

0 comments on commit b22ffb1

Please sign in to comment.