More disguiseNextEntity fixing

This commit is contained in:
libraryaddict 2020-04-22 14:20:52 +12:00
parent 7f65d8c8f1
commit fa4c577f7e
No known key found for this signature in database
GPG Key ID: 052E4FBCD257AEA4
3 changed files with 40 additions and 43 deletions

View File

@ -428,37 +428,49 @@ public class DisguiseUtilities {
}
}
public static void addFutureDisguise(final int entityId, final TargetedDisguise disguise) {
if (!futureDisguises.containsKey(entityId)) {
futureDisguises.put(entityId, new HashSet<TargetedDisguise>());
public static void onFutureDisguise(Entity entity) {
if (!getFutureDisguises().containsKey(entity.getEntityId())) {
return;
}
futureDisguises.get(entityId).add(disguise);
UUID uniqueId = entity.getUniqueId();
for (TargetedDisguise disguise : getFutureDisguises().remove(entity.getEntityId())) {
addDisguise(uniqueId, disguise);
}
}
public static void addFutureDisguise(final int entityId, final TargetedDisguise disguise) {
if (!getFutureDisguises().containsKey(entityId)) {
getFutureDisguises().put(entityId, new HashSet<>());
}
getFutureDisguises().get(entityId).add(disguise);
final BukkitRunnable runnable = new BukkitRunnable() {
@Override
public void run() {
if (futureDisguises.containsKey(entityId) && futureDisguises.get(entityId).contains(disguise)) {
for (World world : Bukkit.getWorlds()) {
for (Entity entity : world.getEntities()) {
if (entity.getEntityId() == entityId) {
UUID uniqueId = entity.getUniqueId();
if (!getFutureDisguises().containsKey(entityId) ||
!getFutureDisguises().get(entityId).contains(disguise)) {
return;
}
for (TargetedDisguise disguise : futureDisguises.remove(entityId)) {
addDisguise(uniqueId, disguise);
}
return;
}
for (World world : Bukkit.getWorlds()) {
for (Entity entity : world.getEntities()) {
if (entity.getEntityId() != entityId) {
continue;
}
}
futureDisguises.get(entityId).remove(disguise);
if (futureDisguises.get(entityId).isEmpty()) {
futureDisguises.remove(entityId);
onFutureDisguise(entity);
return;
}
}
getFutureDisguises().get(entityId).remove(disguise);
if (getFutureDisguises().get(entityId).isEmpty()) {
getFutureDisguises().remove(entityId);
}
}
};
@ -2227,14 +2239,14 @@ public class DisguiseUtilities {
}
if (getFutureDisguises().containsKey(entityId)) {
HashSet<TargetedDisguise> hashSet = getFutureDisguises().get(entityId);
for (World world : Bukkit.getWorlds()) {
for (Entity entity : world.getEntities()) {
if (entity.getEntityId() != entityId) {
continue;
}
for (TargetedDisguise dis : hashSet) {
if (!dis.canSee(observer) || !dis.isDisguiseInUse()) {
continue;
onFutureDisguise(entity);
}
return dis;
}
}

View File

@ -39,25 +39,10 @@ public class PacketListenerMain extends PacketAdapter {
final Disguise disguise = DisguiseUtilities.getDisguise(observer, entityId);
if (disguise == null) {
return;
}
if (disguise.getEntity() == null) {
for (Entity e : observer.getWorld().getEntities()) {
if (e.getEntityId() != entityId) {
continue;
}
disguise.setEntity(e);
break;
}
}
// If the entity is the same as the sender. Don't disguise!
// Prevents problems and there is no advantage to be gained.
// Or if they are null and there's no disguise
if (disguise.getEntity() == observer) {
if (disguise == null || disguise.getEntity() == observer) {
return;
}

View File

@ -257,7 +257,7 @@ public class PacketListenerSounds extends PacketAdapter {
Entity entity = disguise.getEntity();
if (disguise != null && !disguise.getType().isPlayer() &&
if (!disguise.getType().isPlayer() &&
(disguise.isSelfDisguiseSoundsReplaced() || entity != event.getPlayer())) {
DisguiseSound disSound = DisguiseSound.getType(entity.getType().name());