Fixed bossbars disabling self, added support for modded custom entities, disguises now refer to themselves with the right disguise name when possible, cleaned up some code, fixed bossbar error when a server uses a bad bossbar name in their own system
This commit is contained in:
@@ -4,8 +4,6 @@ import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.ProtocolLibrary;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.reflect.StructureModifier;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import me.libraryaddict.disguise.LibsDisguises;
|
||||
import me.libraryaddict.disguise.disguisetypes.Disguise;
|
||||
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
||||
@@ -16,7 +14,10 @@ import org.bukkit.inventory.EquipmentSlot;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Created by libraryaddict on 3/01/2019.
|
||||
|
@@ -12,8 +12,6 @@ import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* Created by libraryaddict on 3/01/2019.
|
||||
|
@@ -14,7 +14,6 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class PacketsManager {
|
||||
private static PacketListener clientInteractEntityListener;
|
||||
|
@@ -61,7 +61,8 @@ public class PacketHandlerAttributes implements IPacketHandler {
|
||||
if (attribute.getAttributeKey().equals("generic.maxHealth")) {
|
||||
WrappedAttribute.Builder builder;
|
||||
|
||||
if (((LivingWatcher) disguise.getWatcher()).isMaxHealthSet()) {
|
||||
if (disguise.getWatcher() instanceof LivingWatcher &&
|
||||
((LivingWatcher) disguise.getWatcher()).isMaxHealthSet()) {
|
||||
builder = WrappedAttribute.newBuilder();
|
||||
builder.attributeKey("generic.maxHealth");
|
||||
builder.baseValue(((LivingWatcher) disguise.getWatcher()).getMaxHealth());
|
||||
|
@@ -9,7 +9,6 @@ import com.comphenix.protocol.wrappers.WrappedDataWatcher;
|
||||
import com.comphenix.protocol.wrappers.WrappedGameProfile;
|
||||
import me.libraryaddict.disguise.DisguiseConfig;
|
||||
import me.libraryaddict.disguise.disguisetypes.*;
|
||||
import me.libraryaddict.disguise.disguisetypes.watchers.CustomWatcher;
|
||||
import me.libraryaddict.disguise.disguisetypes.watchers.FallingBlockWatcher;
|
||||
import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher;
|
||||
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
||||
@@ -25,7 +24,6 @@ import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Damageable;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.EquipmentSlot;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@@ -233,10 +231,10 @@ public class PacketHandlerSpawn implements IPacketHandler {
|
||||
mods.write(0, disguisedEntity.getEntityId());
|
||||
mods.write(1, disguisedEntity.getUniqueId());
|
||||
|
||||
if (disguise.getType() != DisguiseType.CUSTOM) {
|
||||
if (!disguise.getType().isCustom()) {
|
||||
mods.write(2, disguise.getType().getTypeId());
|
||||
} else {
|
||||
mods.write(2, ((CustomWatcher) disguise.getWatcher()).getTypeId());
|
||||
mods.write(2, ((CustomDisguise) disguise).getCustomEntity().getTypeId());
|
||||
}
|
||||
|
||||
// region Vector calculations
|
||||
@@ -309,7 +307,13 @@ public class PacketHandlerSpawn implements IPacketHandler {
|
||||
PacketContainer spawnEntity;
|
||||
|
||||
if (NmsVersion.v1_14.isSupported()) {
|
||||
Object entityType = ReflectionManager.getEntityType(disguise.getType().getEntityType());
|
||||
Object entityType;
|
||||
|
||||
if (disguise.isCustomDisguise()) {
|
||||
entityType = ((CustomDisguise) disguise).getCustomEntity().getEntityType();
|
||||
} else {
|
||||
entityType = ReflectionManager.getEntityType(disguise.getType().getEntityType());
|
||||
}
|
||||
|
||||
Object[] params = new Object[]{disguisedEntity.getEntityId(), disguisedEntity.getUniqueId(), x, y, z,
|
||||
loc.getPitch(), loc.getYaw(), entityType, data,
|
||||
@@ -319,6 +323,11 @@ public class PacketHandlerSpawn implements IPacketHandler {
|
||||
.createPacketConstructor(PacketType.Play.Server.SPAWN_ENTITY, params).createPacket(params);
|
||||
} else {
|
||||
int objectId = disguise.getType().getObjectId();
|
||||
|
||||
if (disguise.isCustomDisguise()) {
|
||||
objectId = ((CustomDisguise) disguise).getCustomEntity().getTypeId();
|
||||
}
|
||||
|
||||
Object nmsEntity = ReflectionManager.getNmsEntity(disguisedEntity);
|
||||
|
||||
spawnEntity = ProtocolLibrary.getProtocolManager()
|
||||
|
Reference in New Issue
Block a user