89d51d5f29
Because this exploit has been widely known for years and has not been fixed by Mojang, we decided that it was worth allowing people to toggle it on/off due to how easy it is to make it configurable. It should be noted that this decision does not promise all future exploits will be configurable.
30 Zeilen
1.7 KiB
Diff
30 Zeilen
1.7 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Bjarne Koll <lynxplay101@gmail.com>
|
|
Date: Fri, 4 Aug 2023 15:53:36 +0200
|
|
Subject: [PATCH] Only erase allay memory on non-item targets
|
|
|
|
Spigot incorrectly instanceOf checks the EntityTargetEvent#getTarget
|
|
against the internal ItemEntity type and removes the nearest wanted item
|
|
memory if said instanceOf check fails, (which is always the case)
|
|
causing allays to behave differently as they constantly loose their
|
|
target item.
|
|
|
|
This commit fixes the faulty behaviour by instance performing a check
|
|
against the CraftItem type.
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/GoToWantedItem.java b/src/main/java/net/minecraft/world/entity/ai/behavior/GoToWantedItem.java
|
|
index bd9aa4a5443da862be3403c1941113373741a87c..2f92eb39cde7b30a894db347ca85a506d880411e 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/GoToWantedItem.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/GoToWantedItem.java
|
|
@@ -35,8 +35,9 @@ public class GoToWantedItem {
|
|
if (event.isCancelled()) {
|
|
return false;
|
|
}
|
|
- if (!(event.getTarget() instanceof ItemEntity)) {
|
|
+ if (!(event.getTarget() instanceof org.bukkit.craftbukkit.entity.CraftItem)) { // Paper - only erase allay memory on non-item targets
|
|
memoryaccessor2.erase();
|
|
+ return false; // Paper - only erase allay memory on non-item targets
|
|
}
|
|
|
|
entityitem = (ItemEntity) ((org.bukkit.craftbukkit.entity.CraftEntity) event.getTarget()).getHandle();
|