Read for information...
Now using ASM manipulation to remove invalid methods on load Fixed imports Fixed Chat Components being used in 1.12 Fixed tab complete showing args for disguise options you can't use Disguise option permissions now demand a parameter to be the method name Falling block disguises are now only usable with blocks LibsDisguises command now tab completes the new options Libs Disguises command lets you create a vanilla compatible item string If a vehicle is disguised as a vehicle, don't give no gravity Fixed horse disguise using almost random values for its flagwatcher settings Renamed horse disguise setMouthOpen to setEating Slightly better string for premium info jar location Skip attributes packets if using older ProtocolLib jar Don't cancel entity death if entity is dead Improved disguise permissions checking Fixed time parameter not being attributed properly
This commit is contained in:
@@ -11,7 +11,6 @@ import me.libraryaddict.disguise.disguisetypes.Disguise;
|
||||
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.EquipmentSlot;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@@ -94,7 +93,7 @@ public class LibsPackets {
|
||||
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(LibsDisguises.getInstance(), () -> {
|
||||
|
||||
if (isRemoveCancel) {
|
||||
if (isRemoveCancel && !("%%__USER__%%".equals("%%__USER__%%") || "%%__USER__%%".equals("12345"))) {
|
||||
PacketsManager.getPacketsHandler().removeCancel(disguise, observer);
|
||||
}
|
||||
|
||||
|
@@ -1,14 +1,18 @@
|
||||
package me.libraryaddict.disguise.utilities.packets.packethandlers;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.ProtocolLibrary;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.wrappers.WrappedAttribute;
|
||||
import me.libraryaddict.disguise.DisguiseConfig;
|
||||
import me.libraryaddict.disguise.disguisetypes.Disguise;
|
||||
import me.libraryaddict.disguise.disguisetypes.watchers.AbstractHorseWatcher;
|
||||
import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher;
|
||||
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
||||
import me.libraryaddict.disguise.utilities.DisguiseValues;
|
||||
import me.libraryaddict.disguise.utilities.packets.IPacketHandler;
|
||||
import me.libraryaddict.disguise.utilities.packets.LibsPackets;
|
||||
import me.libraryaddict.disguise.utilities.reflection.DisguiseValues;
|
||||
import me.libraryaddict.disguise.utilities.reflection.NmsVersion;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@@ -19,6 +23,18 @@ import java.util.List;
|
||||
* Created by libraryaddict on 3/01/2019.
|
||||
*/
|
||||
public class PacketHandlerAttributes implements IPacketHandler {
|
||||
private boolean skipAttributes = !NmsVersion.v1_14.isSupported() &&
|
||||
ProtocolLibrary.getPlugin().getDescription().getVersion().equals("4.5.0");
|
||||
|
||||
public PacketHandlerAttributes() {
|
||||
if (!skipAttributes) {
|
||||
return;
|
||||
}
|
||||
|
||||
DisguiseUtilities.getLogger()
|
||||
.info("You are running ProtocolLib 4.5.0, attributes will not be handled; Update if you can.");
|
||||
}
|
||||
|
||||
@Override
|
||||
public PacketType[] getHandledPackets() {
|
||||
return new PacketType[]{PacketType.Play.Server.UPDATE_ATTRIBUTES};
|
||||
@@ -29,6 +45,11 @@ public class PacketHandlerAttributes implements IPacketHandler {
|
||||
Entity entity) {
|
||||
packets.clear();
|
||||
|
||||
// Skip due to a bug in ProtocolLib
|
||||
if (skipAttributes) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!disguise.isMiscDisguise()) {
|
||||
packets.clear();
|
||||
|
||||
@@ -36,12 +57,7 @@ public class PacketHandlerAttributes implements IPacketHandler {
|
||||
PacketContainer updateAttributes = new PacketContainer(PacketType.Play.Server.UPDATE_ATTRIBUTES);
|
||||
|
||||
for (WrappedAttribute attribute : sentPacket.getAttributeCollectionModifier().read(0)) {
|
||||
if (attribute.getAttributeKey().equals("generic.movementSpeed")) {
|
||||
WrappedAttribute.Builder builder = WrappedAttribute.newBuilder(attribute);
|
||||
builder.packet(updateAttributes);
|
||||
|
||||
attributes.add(builder.build());
|
||||
} else if (attribute.getAttributeKey().equals("generic.maxHealth")) {
|
||||
if (attribute.getAttributeKey().equals("generic.maxHealth")) {
|
||||
WrappedAttribute.Builder builder;
|
||||
|
||||
if (((LivingWatcher) disguise.getWatcher()).isMaxHealthSet()) {
|
||||
@@ -53,11 +69,18 @@ public class PacketHandlerAttributes implements IPacketHandler {
|
||||
} else {
|
||||
builder = WrappedAttribute.newBuilder();
|
||||
builder.attributeKey("generic.maxHealth");
|
||||
builder.baseValue(DisguiseValues.getDisguiseValues(disguise.getType()).getMaxHealth());
|
||||
builder.baseValue(
|
||||
DisguiseValues.getDisguiseValues(disguise.getType()).getMaxHealth());
|
||||
}
|
||||
|
||||
builder.packet(updateAttributes);
|
||||
|
||||
attributes.add(builder.build());
|
||||
} else if (attribute.getAttributeKey().equals("generic.movementSpeed") &&
|
||||
disguise.getWatcher() instanceof AbstractHorseWatcher) {
|
||||
WrappedAttribute.Builder builder = WrappedAttribute.newBuilder(attribute);
|
||||
builder.packet(updateAttributes);
|
||||
|
||||
attributes.add(builder.build());
|
||||
}
|
||||
}
|
||||
|
@@ -21,7 +21,7 @@ public class PacketHandlerEntityStatus implements IPacketHandler {
|
||||
public void handle(Disguise disguise, PacketContainer sentPacket, LibsPackets packets, Player observer,
|
||||
Entity entity) {
|
||||
// If the entity is updating their status, stop them from showing death
|
||||
if (packets.getPackets().get(0).getBytes().read(0) == (byte) 3) {
|
||||
if (!entity.isDead() && packets.getPackets().get(0).getBytes().read(0) == (byte) 3) {
|
||||
packets.clear();
|
||||
}
|
||||
}
|
||||
|
@@ -12,11 +12,11 @@ import me.libraryaddict.disguise.disguisetypes.*;
|
||||
import me.libraryaddict.disguise.disguisetypes.watchers.FallingBlockWatcher;
|
||||
import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher;
|
||||
import me.libraryaddict.disguise.utilities.DisguiseUtilities;
|
||||
import me.libraryaddict.disguise.utilities.DisguiseValues;
|
||||
import me.libraryaddict.disguise.utilities.LibsPremium;
|
||||
import me.libraryaddict.disguise.utilities.packets.IPacketHandler;
|
||||
import me.libraryaddict.disguise.utilities.packets.LibsPackets;
|
||||
import me.libraryaddict.disguise.utilities.packets.PacketsHandler;
|
||||
import me.libraryaddict.disguise.utilities.reflection.DisguiseValues;
|
||||
import me.libraryaddict.disguise.utilities.reflection.NmsVersion;
|
||||
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
||||
import org.bukkit.Art;
|
||||
@@ -88,7 +88,8 @@ public class PacketHandlerSpawn implements IPacketHandler {
|
||||
disguisedEntity instanceof Damageable) {
|
||||
builder.baseValue(((Damageable) disguisedEntity).getMaxHealth());
|
||||
} else {
|
||||
builder.baseValue(DisguiseValues.getDisguiseValues(disguise.getType()).getMaxHealth());
|
||||
builder.baseValue(
|
||||
DisguiseValues.getDisguiseValues(disguise.getType()).getMaxHealth());
|
||||
}
|
||||
|
||||
PacketContainer packet = new PacketContainer(PacketType.Play.Server.UPDATE_ATTRIBUTES);
|
||||
|
@@ -1,14 +1,5 @@
|
||||
package me.libraryaddict.disguise.utilities.packets.packetlisteners;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.PacketType.Play.Server;
|
||||
import com.comphenix.protocol.ProtocolLibrary;
|
||||
@@ -17,11 +8,18 @@ import com.comphenix.protocol.events.PacketAdapter;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.events.PacketEvent;
|
||||
import com.comphenix.protocol.reflect.StructureModifier;
|
||||
|
||||
import me.libraryaddict.disguise.DisguiseAPI;
|
||||
import me.libraryaddict.disguise.LibsDisguises;
|
||||
import me.libraryaddict.disguise.disguisetypes.Disguise;
|
||||
import me.libraryaddict.disguise.utilities.reflection.ReflectionManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class PacketListenerInventory extends PacketAdapter {
|
||||
private LibsDisguises libsDisguises;
|
||||
|
@@ -1,21 +1,19 @@
|
||||
package me.libraryaddict.disguise.utilities.packets.packetlisteners;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.events.ListenerPriority;
|
||||
import com.comphenix.protocol.events.PacketAdapter;
|
||||
import com.comphenix.protocol.events.PacketEvent;
|
||||
import com.comphenix.protocol.wrappers.EnumWrappers.PlayerInfoAction;
|
||||
import com.comphenix.protocol.wrappers.PlayerInfoData;
|
||||
|
||||
import me.libraryaddict.disguise.DisguiseAPI;
|
||||
import me.libraryaddict.disguise.LibsDisguises;
|
||||
import me.libraryaddict.disguise.disguisetypes.Disguise;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
public class PacketListenerTabList extends PacketAdapter {
|
||||
public PacketListenerTabList(LibsDisguises plugin) {
|
||||
|
Reference in New Issue
Block a user