PaperMC/Spigot-Server-Patches/0246-Option-to-prevent-armor-stands-from-doing-entity-loo.patch
Shane Freeder abca14ff96 Updated Upstream (Bukkit/CraftBukkit)
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
6f9fe1d9 #562: Add API to set equipment silently
bcddb754 SPIGOT-6256: Add method to check if the entity is in water

CraftBukkit Changes:
878b4375 #772: Add API to set equipment silently
22d7fcc9 SPIGOT-6256: Add method to check if the entity is in water
2020-12-21 07:56:22 +00:00

50 lines
2.7 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Hugo Manrique <hugmanrique@gmail.com>
Date: Mon, 23 Jul 2018 12:57:39 +0200
Subject: [PATCH] Option to prevent armor stands from doing entity lookups
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
index 6e7e00678295b5b714a1be4753626e21ab469fd6..54d7f6efcf42d4c7a8c209dfe3c5485318afafe3 100644
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
@@ -373,4 +373,9 @@ public class PaperWorldConfig {
private void scanForLegacyEnderDragon() {
scanForLegacyEnderDragon = getBoolean("game-mechanics.scan-for-legacy-ender-dragon", true);
}
+
+ public boolean armorStandEntityLookups = true;
+ private void armorStandEntityLookups() {
+ armorStandEntityLookups = getBoolean("armor-stands-do-collision-entity-lookups", true);
+ }
}
diff --git a/src/main/java/net/minecraft/server/EntityArmorStand.java b/src/main/java/net/minecraft/server/EntityArmorStand.java
index b0847b4e61e587a47fd209eb2ec3772d1486802d..89f6525ef1a4c41d3b662a5ad22b353064a82f36 100644
--- a/src/main/java/net/minecraft/server/EntityArmorStand.java
+++ b/src/main/java/net/minecraft/server/EntityArmorStand.java
@@ -321,6 +321,7 @@ public class EntityArmorStand extends EntityLiving {
@Override
protected void collideNearby() {
+ if (!world.paperConfig.armorStandEntityLookups) return; // Paper
List<Entity> list = this.world.getEntities(this, this.getBoundingBox(), EntityArmorStand.br);
for (int i = 0; i < list.size(); ++i) {
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
index fa095bb55c09a3b5f8ab70bcce5a03c7eb93dcfa..7affb75a97e49b67861b24de38ef83e72b0abd5a 100644
--- a/src/main/java/net/minecraft/server/World.java
+++ b/src/main/java/net/minecraft/server/World.java
@@ -801,6 +801,13 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
// Paper end
}
}
+ // Paper start - Prevent armor stands from doing entity lookups
+ @Override
+ public boolean getCubes(@Nullable Entity entity, AxisAlignedBB axisAlignedBB) {
+ if (entity instanceof EntityArmorStand && !entity.world.paperConfig.armorStandEntityLookups) return false;
+ return GeneratorAccess.super.getCubes(entity, axisAlignedBB);
+ }
+ // Paper end
public Explosion explode(@Nullable Entity entity, double d0, double d1, double d2, float f, Explosion.Effect explosion_effect) {
return this.createExplosion(entity, (DamageSource) null, (ExplosionDamageCalculator) null, d0, d1, d2, f, false, explosion_effect);