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:
libraryaddict
2020-04-16 00:55:35 +12:00
parent b31fc3a251
commit 8b39450490
33 changed files with 327 additions and 151 deletions

View File

@@ -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.

View File

@@ -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.

View File

@@ -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;

View File

@@ -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());

View File

@@ -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()