Code cleanup, fixed primed tnt disappearing

This commit is contained in:
libraryaddict 2013-11-25 16:26:24 +13:00
parent 6d1e9a7655
commit 881d76eafa
2 changed files with 20 additions and 16 deletions

View File

@ -183,25 +183,29 @@ public abstract class Disguise {
public void run() { public void run() {
// If entity is no longer valid. Remove it. // If entity is no longer valid. Remove it.
if (!getEntity().isValid()) { if (!getEntity().isValid()) {
DisguiseAPI.undisguiseToAll(entity); DisguiseAPI.undisguiseToAll(getEntity());
} else { } else {
// If the disguise type is tnt, we need to resend the entity packet else it will turn invisible // If the disguise type is tnt, we need to resend the entity packet else it will turn invisible
if (getType() == DisguiseType.PRIMED_TNT) { if (getType() == DisguiseType.PRIMED_TNT) {
i++; i++;
if (i % 40 == 0) { if (i % 40 == 0) {
i = 0; i = 0;
ProtocolLibrary.getProtocolManager().updateEntity(getEntity(), getPerverts()); DisguiseUtilities.refreshTrackers(getEntity());
if (getEntity() instanceof Player && isSelfDisguiseVisible()) {
DisguiseUtilities.sendSelfDisguise((Player) getEntity());
}
// ProtocolLibrary.getProtocolManager().updateEntity(getEntity(), getPerverts());
} }
} }
// If the vectorY isn't 0. Cos if it is. Then it doesn't want to send any vectors. // If the vectorY isn't 0. Cos if it is. Then it doesn't want to send any vectors.
// If this disguise has velocity sending enabled and the entity is flying. // If this disguise has velocity sending enabled and the entity is flying.
if (vectorY != 0 && isVelocitySent() && (alwaysSendVelocity || !entity.isOnGround())) { if (vectorY != 0 && isVelocitySent() && (alwaysSendVelocity || !getEntity().isOnGround())) {
Vector vector = getEntity().getVelocity(); Vector vector = getEntity().getVelocity();
// If the entity doesn't have velocity changes already // If the entity doesn't have velocity changes already
if (vector.getY() != 0 && !(vector.getY() < 0 && alwaysSendVelocity && getEntity().isOnGround())) { if (vector.getY() != 0 && !(vector.getY() < 0 && alwaysSendVelocity && getEntity().isOnGround())) {
return; return;
} }
if (getType() != DisguiseType.EXPERIENCE_ORB || !entity.isOnGround()) { if (getType() != DisguiseType.EXPERIENCE_ORB || !getEntity().isOnGround()) {
PacketContainer lookPacket = null; PacketContainer lookPacket = null;
if (getType() == DisguiseType.WITHER_SKULL) { if (getType() == DisguiseType.WITHER_SKULL) {
lookPacket = new PacketContainer(Packets.Server.ENTITY_LOOK); lookPacket = new PacketContainer(Packets.Server.ENTITY_LOOK);
@ -210,12 +214,12 @@ public abstract class Disguise {
Location loc = getEntity().getLocation(); Location loc = getEntity().getLocation();
mods.write( mods.write(
4, 4,
PacketsManager.getYaw(getType(), DisguiseType.getType(entity.getType()), PacketsManager.getYaw(getType(), DisguiseType.getType(getEntity().getType()),
(byte) Math.floor(loc.getYaw() * 256.0F / 360.0F))); (byte) Math.floor(loc.getYaw() * 256.0F / 360.0F)));
mods.write(5, (byte) Math.floor(loc.getPitch() * 256.0F / 360.0F)); mods.write(5, (byte) Math.floor(loc.getPitch() * 256.0F / 360.0F));
if (isSelfDisguiseVisible() && getEntity() instanceof Player) { if (isSelfDisguiseVisible() && getEntity() instanceof Player) {
PacketContainer selfLookPacket = lookPacket.shallowClone(); PacketContainer selfLookPacket = lookPacket.shallowClone();
selfLookPacket.getModifier().write(0, DisguiseAPI.getFakeDisguise(entity.getEntityId())); selfLookPacket.getModifier().write(0, DisguiseAPI.getFakeDisguise(getEntity().getEntityId()));
try { try {
ProtocolLibrary.getProtocolManager().sendServerPacket((Player) getEntity(), ProtocolLibrary.getProtocolManager().sendServerPacket((Player) getEntity(),
selfLookPacket, false); selfLookPacket, false);
@ -233,7 +237,7 @@ public abstract class Disguise {
if (!isSelfDisguiseVisible()) { if (!isSelfDisguiseVisible()) {
continue; continue;
} }
mods.write(0, DisguiseAPI.getFakeDisguise(entity.getEntityId())); mods.write(0, DisguiseAPI.getFakeDisguise(getEntity().getEntityId()));
} else { } else {
mods.write(0, getEntity().getEntityId()); mods.write(0, getEntity().getEntityId());
} }
@ -258,7 +262,7 @@ public abstract class Disguise {
StructureModifier<Object> mods = packet.getModifier(); StructureModifier<Object> mods = packet.getModifier();
mods.write(0, getEntity().getEntityId()); mods.write(0, getEntity().getEntityId());
for (Player player : getPerverts()) { for (Player player : getPerverts()) {
if (DisguiseAPI.isViewDisguises() || entity != player) { if (DisguiseAPI.isViewDisguises() || getEntity() != player) {
try { try {
ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet); ProtocolLibrary.getProtocolManager().sendServerPacket(player, packet);
} catch (InvocationTargetException e) { } catch (InvocationTargetException e) {
@ -379,7 +383,7 @@ public abstract class Disguise {
// Gotta do reflection, copy code or open up calls. // Gotta do reflection, copy code or open up calls.
// Reflection is the cleanest? // Reflection is the cleanest?
if (getEntity() instanceof Player) { if (getEntity() instanceof Player) {
DisguiseUtilities.removeSelfDisguise((Player) entity); DisguiseUtilities.removeSelfDisguise((Player) getEntity());
} }
// Better refresh the entity to undisguise it // Better refresh the entity to undisguise it
DisguiseUtilities.refreshTrackers(getEntity()); DisguiseUtilities.refreshTrackers(getEntity());
@ -406,7 +410,7 @@ public abstract class Disguise {
* Set the entity of the disguise. Only used for internal things. * Set the entity of the disguise. Only used for internal things.
*/ */
public void setEntity(org.bukkit.entity.Entity entity) { public void setEntity(org.bukkit.entity.Entity entity) {
if (this.entity != null) { if (this.getEntity() != null) {
throw new RuntimeException("This disguise is already in use! Try .clone()"); throw new RuntimeException("This disguise is already in use! Try .clone()");
} }
this.entity = entity; this.entity = entity;
@ -420,15 +424,15 @@ public abstract class Disguise {
public void setHideArmorFromSelf(boolean hideArmor) { public void setHideArmorFromSelf(boolean hideArmor) {
this.hideArmorFromSelf = hideArmor; this.hideArmorFromSelf = hideArmor;
if (entity instanceof Player) { if (getEntity() instanceof Player) {
((Player) entity).updateInventory(); ((Player) getEntity()).updateInventory();
} }
} }
public void setHideHeldItemFromSelf(boolean hideHeldItem) { public void setHideHeldItemFromSelf(boolean hideHeldItem) {
this.hideHeldItemFromSelf = hideHeldItem; this.hideHeldItemFromSelf = hideHeldItem;
if (entity instanceof Player) { if (getEntity() instanceof Player) {
((Player) entity).updateInventory(); ((Player) getEntity()).updateInventory();
} }
} }
@ -442,7 +446,7 @@ public abstract class Disguise {
*/ */
private void setupWatcher() { private void setupWatcher() {
HashMap<Integer, Object> disguiseValues = DisguiseValues.getMetaValues(getType()); HashMap<Integer, Object> disguiseValues = DisguiseValues.getMetaValues(getType());
HashMap<Integer, Object> entityValues = DisguiseValues.getMetaValues(DisguiseType.getType(entity.getType())); HashMap<Integer, Object> entityValues = DisguiseValues.getMetaValues(DisguiseType.getType(getEntity().getType()));
// Start from 2 as they ALL share 0 and 1 // Start from 2 as they ALL share 0 and 1
for (int dataNo = 2; dataNo <= 31; dataNo++) { for (int dataNo = 2; dataNo <= 31; dataNo++) {
// STEP 1. Find out if the watcher has set data on it. // STEP 1. Find out if the watcher has set data on it.

View File

@ -673,7 +673,7 @@ public class PacketsManager {
@Override @Override
public void onPacketSending(PacketEvent event) { public void onPacketSending(PacketEvent event) {
final Player observer = event.getPlayer(); final Player observer = event.getPlayer();
if (event.getPacket().getEntityModifier(observer.getWorld()).read(0) == observer) { if (event.getPacket().getIntegers().read(0) == observer.getEntityId()) {
int fakeId = DisguiseAPI.getFakeDisguise(observer.getEntityId()); int fakeId = DisguiseAPI.getFakeDisguise(observer.getEntityId());
if (fakeId > 0) { if (fakeId > 0) {
// Here I grab the packets to convert them to, So I can display them as if the disguise sent them. // Here I grab the packets to convert them to, So I can display them as if the disguise sent them.