From d8955fce029d553c5f838113b1ec4a29219a9739 Mon Sep 17 00:00:00 2001 From: filoghost Date: Wed, 1 Mar 2017 17:06:12 +0100 Subject: [PATCH] Revert 1.11 performance improvement --- .../nms/v1_11_R1/EntityNMSArmorStand.java | 55 ++++++++++++++----- 1 file changed, 42 insertions(+), 13 deletions(-) diff --git a/HolographicDisplays/Plugin/com/gmail/filoghost/holographicdisplays/nms/v1_11_R1/EntityNMSArmorStand.java b/HolographicDisplays/Plugin/com/gmail/filoghost/holographicdisplays/nms/v1_11_R1/EntityNMSArmorStand.java index 37aecc7a..467ab253 100644 --- a/HolographicDisplays/Plugin/com/gmail/filoghost/holographicdisplays/nms/v1_11_R1/EntityNMSArmorStand.java +++ b/HolographicDisplays/Plugin/com/gmail/filoghost/holographicdisplays/nms/v1_11_R1/EntityNMSArmorStand.java @@ -1,22 +1,25 @@ package com.gmail.filoghost.holographicdisplays.nms.v1_11_R1; -import net.minecraft.server.v1_11_R1.AxisAlignedBB; -import net.minecraft.server.v1_11_R1.DamageSource; -import net.minecraft.server.v1_11_R1.EntityArmorStand; -import net.minecraft.server.v1_11_R1.EntityHuman; -import net.minecraft.server.v1_11_R1.EnumHand; -import net.minecraft.server.v1_11_R1.EnumInteractionResult; -import net.minecraft.server.v1_11_R1.EnumItemSlot; -import net.minecraft.server.v1_11_R1.ItemStack; -import net.minecraft.server.v1_11_R1.NBTTagCompound; -import net.minecraft.server.v1_11_R1.SoundEffect; -import net.minecraft.server.v1_11_R1.Vec3D; -import net.minecraft.server.v1_11_R1.World; - import org.bukkit.craftbukkit.v1_11_R1.entity.CraftEntity; import com.gmail.filoghost.holographicdisplays.nms.interfaces.entity.NMSArmorStand; import com.gmail.filoghost.holographicdisplays.object.line.CraftHologramLine; +import com.gmail.filoghost.holographicdisplays.util.Utils; + +import net.minecraft.server.v1_11_R1.AxisAlignedBB; +import net.minecraft.server.v1_11_R1.DamageSource; +import net.minecraft.server.v1_11_R1.EntityArmorStand; +import net.minecraft.server.v1_11_R1.EntityHuman; +import net.minecraft.server.v1_11_R1.EntityPlayer; +import net.minecraft.server.v1_11_R1.EnumHand; +import net.minecraft.server.v1_11_R1.EnumInteractionResult; +import net.minecraft.server.v1_11_R1.EnumItemSlot; +import net.minecraft.server.v1_11_R1.ItemStack; +import net.minecraft.server.v1_11_R1.NBTTagCompound; +import net.minecraft.server.v1_11_R1.PacketPlayOutEntityTeleport; +import net.minecraft.server.v1_11_R1.SoundEffect; +import net.minecraft.server.v1_11_R1.Vec3D; +import net.minecraft.server.v1_11_R1.World; public class EntityNMSArmorStand extends EntityArmorStand implements NMSArmorStand { @@ -129,6 +132,18 @@ public class EntityNMSArmorStand extends EntityArmorStand implements NMSArmorSta public void forceSetBoundingBox(AxisAlignedBB boundingBox) { super.a(boundingBox); } + + @Override + public int getId() { + + StackTraceElement[] elements = Thread.currentThread().getStackTrace(); + if (elements.length > 2 && elements[2] != null && elements[2].getFileName().equals("EntityTrackerEntry.java") && 158 < elements[2].getLineNumber() && elements[2].getLineNumber() < 168) { + // Then this method is being called when creating a new movement packet, we return a fake ID! + return -1; + } + + return super.getId(); + } @Override public void A_() { @@ -182,6 +197,20 @@ public class EntityNMSArmorStand extends EntityArmorStand implements NMSArmorSta @Override public void setLocationNMS(double x, double y, double z) { super.setPosition(x, y, z); + + // Send a packet near to update the position. + PacketPlayOutEntityTeleport teleportPacket = new PacketPlayOutEntityTeleport(this); + + for (Object obj : super.world.players) { + if (obj instanceof EntityPlayer) { + EntityPlayer nmsPlayer = (EntityPlayer) obj; + + double distanceSquared = Utils.square(nmsPlayer.locX - super.locX) + Utils.square(nmsPlayer.locZ - super.locZ); + if (distanceSquared < 8192 && nmsPlayer.playerConnection != null) { + nmsPlayer.playerConnection.sendPacket(teleportPacket); + } + } + } } @Override