From 53102645d2180fa1d26f38c5228d98bcb0af4c08 Mon Sep 17 00:00:00 2001 From: petersv5 <88165842+petersv5@users.noreply.github.com> Date: Sun, 14 Aug 2022 19:41:15 +0200 Subject: [PATCH] Grant temporary immunity to hopper minecarts while actively pulling (fixes #8281) (#8282) Reduce the impact from EAR on hopper minecart based unloaders by making them immune to EAR while pulling objects. The EAR is still active outside misc activation range when the hopper minecart is idle, keeping lag low. --- .../server/Entity-Activation-Range-2.0.patch | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/patches/server/Entity-Activation-Range-2.0.patch b/patches/server/Entity-Activation-Range-2.0.patch index 4e58444be..e7de29b93 100644 --- a/patches/server/Entity-Activation-Range-2.0.patch +++ b/patches/server/Entity-Activation-Range-2.0.patch @@ -302,6 +302,44 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 super.customServerAiStep(); } +diff --git a/src/main/java/net/minecraft/world/entity/vehicle/MinecartHopper.java b/src/main/java/net/minecraft/world/entity/vehicle/MinecartHopper.java +index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 +--- a/src/main/java/net/minecraft/world/entity/vehicle/MinecartHopper.java ++++ b/src/main/java/net/minecraft/world/entity/vehicle/MinecartHopper.java +@@ -0,0 +0,0 @@ public class MinecartHopper extends AbstractMinecartContainer implements Hopper + if (bl != this.isEnabled()) { + this.setEnabled(bl); + } ++ this.immunize(); // Paper + + } + +@@ -0,0 +0,0 @@ public class MinecartHopper extends AbstractMinecartContainer implements Hopper + + public boolean suckInItems() { + if (HopperBlockEntity.suckInItems(this.level, this)) { ++ this.immunize(); // Paper + return true; + } else { + List list = this.level.getEntitiesOfClass(ItemEntity.class, this.getBoundingBox().inflate(0.25D, 0.0D, 0.25D), EntitySelector.ENTITY_STILL_ALIVE); + if (!list.isEmpty()) { + HopperBlockEntity.addItem(this, list.get(0)); ++ this.immunize(); // Paper + } + + return false; +@@ -0,0 +0,0 @@ public class MinecartHopper extends AbstractMinecartContainer implements Hopper + public AbstractContainerMenu createMenu(int syncId, Inventory playerInventory) { + return new HopperMenu(syncId, playerInventory, this); + } ++ ++ // Paper start ++ public void immunize() { ++ this.activatedImmunityTick = Math.max(this.activatedImmunityTick, net.minecraft.server.MinecraftServer.currentTick + 20); ++ } ++ // Paper end ++ + } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/level/Level.java