diff --git a/plugin/pom.xml b/plugin/pom.xml
index e1861470..a0b9ef9a 100644
--- a/plugin/pom.xml
+++ b/plugin/pom.xml
@@ -185,6 +185,14 @@
compile
true
+
+ LibsDisguises
+ v1_17_R1
+ ${project.version}
+ remapped-spigot
+ compile
+ true
+
\ No newline at end of file
diff --git a/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java
index 613f1a88..0df8e0df 100644
--- a/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java
+++ b/plugin/src/main/java/me/libraryaddict/disguise/utilities/reflection/ReflectionManager.java
@@ -111,8 +111,7 @@ public class ReflectionManager {
private static Field playerConnection;
private static Method incrementedInventoryStateId;
private static Field playerInventoryContainer;
-
- private static ReflectionManagerAbstract v1_18ReflectionManager = getReflectionManager(NmsVersion.v1_18);
+ private static ReflectionManagerAbstract nmsReflection;
public static void init() {
try {
@@ -121,37 +120,17 @@ public class ReflectionManager {
entityPoseClass = getNmsClass("EntityPose");
}
- if (NmsVersion.v1_18.isSupported()) {
- v1_18ReflectionManager = getReflectionManager(NmsVersion.v1_18);
+ nmsReflection = getReflectionManager(getVersion());
+
+ if (nmsReflection != null) {
return;
}
+
boundingBoxConstructor = getNmsConstructor("AxisAlignedBB", double.class, double.class, double.class, double.class, double.class, double.class);
setBoundingBoxMethod = getNmsMethod("Entity", "a", getNmsClass("AxisAlignedBB"));
- if (NmsVersion.v1_17.isSupported()) {
- for (Field f : getNmsClass("Entity").getDeclaredFields()) {
- if (f.getType() != AtomicInteger.class) {
- continue;
- }
-
- f.setAccessible(true);
- entityCountField = f;
- break;
- }
-
- for (Field f : getNmsClass("EntityHuman").getDeclaredFields()) {
- if (!f.getType().getSimpleName().equals("ContainerPlayer")) {
- continue;
- }
-
- f.setAccessible(true);
- playerInventoryContainer = f;
- break;
- }
- } else {
- entityCountField = getNmsField("Entity", "entityCount");
- }
+ entityCountField = getNmsField("Entity", "entityCount");
mobEffectConstructor = getNmsConstructor("MobEffect", getNmsClass("MobEffectList"), Integer.TYPE, Integer.TYPE, Boolean.TYPE, Boolean.TYPE);
mobEffectList = getNmsMethod("MobEffectList", "fromId", Integer.TYPE);
@@ -170,15 +149,9 @@ public class ReflectionManager {
enumPlayerInfoAction = (Enum[]) getNmsClass("PacketPlayOutPlayerInfo$EnumPlayerInfoAction").getEnumConstants();
chatComponentConstructor = getNmsConstructor("ChatComponentText", String.class);
- if (NmsVersion.v1_17.isSupported()) {
- packetPlayOutConstructor =
- getNmsConstructor("PacketPlayOutPlayerInfo$PlayerInfoData", GameProfile.class, int.class, getNmsClass("EnumGamemode"),
- getNmsClass("IChatBaseComponent"));
- } else {
- packetPlayOutConstructor =
- getNmsConstructor("PacketPlayOutPlayerInfo$PlayerInfoData", getNmsClass("PacketPlayOutPlayerInfo"), GameProfile.class, int.class,
- getNmsClass("EnumGamemode"), getNmsClass("IChatBaseComponent"));
- }
+ packetPlayOutConstructor =
+ getNmsConstructor("PacketPlayOutPlayerInfo$PlayerInfoData", getNmsClass("PacketPlayOutPlayerInfo"), GameProfile.class, int.class,
+ getNmsClass("EnumGamemode"), getNmsClass("IChatBaseComponent"));
enumGamemode = (Enum[]) getNmsClass("EnumGamemode").getEnumConstants();
getNmsEntityMethod = getCraftMethod("CraftEntity", "getHandle");
@@ -209,16 +182,9 @@ public class ReflectionManager {
registryBlocksGetMethod = getNmsMethod("RegistryBlocks", "get", getNmsClass("MinecraftKey"));
villagerDataConstructor = getNmsConstructor("VillagerData", getNmsClass("VillagerType"), getNmsClass("VillagerProfession"), int.class);
- if (NmsVersion.v1_17.isSupported()) {
- villagerProfessionRegistry = getNmsField("IRegistry", "ap").get(null);
- villagerTypeRegistry = getNmsField("IRegistry", "ao").get(null);
- playerConnection = getNmsField("EntityPlayer", "b");
- connectionEntityMethod = getNmsMethod("PlayerConnection", "d");
- incrementedInventoryStateId = getNmsMethod("Container", "incrementStateId");
- } else {
- villagerProfessionRegistry = getNmsField("IRegistry", "VILLAGER_PROFESSION").get(null);
- villagerTypeRegistry = getNmsField("IRegistry", "VILLAGER_TYPE").get(null);
- }
+ villagerProfessionRegistry = getNmsField("IRegistry", "VILLAGER_PROFESSION").get(null);
+ villagerTypeRegistry = getNmsField("IRegistry", "VILLAGER_TYPE").get(null);
+
} else {
registryBlocksGetMethod = getNmsMethod("RegistryBlocks", "getOrDefault", getNmsClass("MinecraftKey"));
}
@@ -234,20 +200,7 @@ public class ReflectionManager {
getNmsWorld = getCraftMethod("CraftWorld", "getHandle");
deserializedItemMeta = getCraftMethod(getCraftClass("CraftMetaItem$SerializableMeta"), "deserialize", Map.class);
- if (NmsVersion.v1_17.isSupported()) {
- boolean nextInt = false;
-
- for (Field f : getNmsClass("Entity").getDeclaredFields()) {
- if (f.getType().getSimpleName().equals("Tag")) {
- nextInt = true;
- } else if (f.getType() == int.class && nextInt) {
- noDamageTicks = f;
- break;
- }
- }
- } else {
- noDamageTicks = getNmsField("Entity", "noDamageTicks");
- }
+ noDamageTicks = getNmsField("Entity", "noDamageTicks");
isInvul = getNmsMethod("Entity", "isInvulnerable", getNmsClass("DamageSource"));
@@ -311,15 +264,15 @@ public class ReflectionManager {
ex.printStackTrace();
}
- pingField = getNmsField("EntityPlayer", NmsVersion.v1_17.isSupported() ? "e" : "ping");
+ pingField = getNmsField("EntityPlayer", "ping");
if (NmsVersion.v1_14.isSupported()) {
- chunkMapField = getNmsField("ChunkProviderServer", NmsVersion.v1_17.isSupported() ? "a" : "playerChunkMap");
- trackedEntitiesField = getNmsField("PlayerChunkMap", NmsVersion.v1_17.isSupported() ? "G" : "trackedEntities");
- entityTrackerField = getNmsField("PlayerChunkMap$EntityTracker", NmsVersion.v1_17.isSupported() ? "b" : "trackerEntry");
+ chunkMapField = getNmsField("ChunkProviderServer", "playerChunkMap");
+ trackedEntitiesField = getNmsField("PlayerChunkMap", "trackedEntities");
+ entityTrackerField = getNmsField("PlayerChunkMap$EntityTracker", "trackerEntry");
if (NmsVersion.v1_16.isSupported()) {
- chunkProviderField = getNmsField("WorldServer", NmsVersion.v1_17.isSupported() ? "C" : "chunkProvider");
+ chunkProviderField = getNmsField("WorldServer", "chunkProvider");
} else {
chunkProviderField = getNmsField("World", "chunkProvider");
}
@@ -331,8 +284,8 @@ public class ReflectionManager {
}
public static boolean hasInvul(Entity entity) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.hasInvul(entity);
+ if (nmsReflection != null) {
+ return nmsReflection.hasInvul(entity);
}
Object nmsEntity = ReflectionManager.getNmsEntity(entity);
@@ -351,8 +304,8 @@ public class ReflectionManager {
}
public static int getIncrementedStateId(Player player) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getIncrementedStateId(player);
+ if (nmsReflection != null) {
+ return nmsReflection.getIncrementedStateId(player);
}
try {
@@ -465,8 +418,8 @@ public class ReflectionManager {
}
public static int getNewEntityId(boolean increment) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getNewEntityId(increment);
+ if (nmsReflection != null) {
+ return nmsReflection.getNewEntityId(increment);
}
try {
@@ -493,15 +446,11 @@ public class ReflectionManager {
}
public static Object getPlayerConnectionOrPlayer(Player player) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getPlayerConnectionOrPlayer(player);
+ if (nmsReflection != null) {
+ return nmsReflection.getPlayerConnectionOrPlayer(player);
}
try {
- if (NmsVersion.v1_17.isSupported()) {
- return playerConnection.get(getNmsEntity(player));
- }
-
return getNmsEntity(player);
} catch (Throwable throwable) {
throwable.printStackTrace();
@@ -511,22 +460,12 @@ public class ReflectionManager {
}
public static Object createEntityInstance(DisguiseType disguiseType, String entityName) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.createEntityInstance(entityName);
+ if (nmsReflection != null) {
+ return nmsReflection.createEntityInstance(entityName);
}
try {
- Class> entityClass;
-
- if (NmsVersion.v1_17.isSupported()) {
- entityClass = getNmsClassIgnoreErrors("Entity" + entityName);
-
- if (entityClass == null) {
- entityClass = getNmsClass(entityName);
- }
- } else {
- entityClass = getNmsClass("Entity" + entityName);
- }
+ Class> entityClass = getNmsClass("Entity" + entityName);
Object entityObject;
Object world = getWorldServer(Bukkit.getWorlds().get(0));
@@ -535,17 +474,13 @@ public class ReflectionManager {
Object minecraftServer = getNmsMethod("MinecraftServer", "getServer").invoke(null);
WrappedGameProfile gameProfile = getGameProfile(new UUID(0, 0), "Steve");
- if (NmsVersion.v1_17.isSupported()) {
- entityObject = entityClass.getDeclaredConstructor(getNmsClass("MinecraftServer"), getNmsClass("WorldServer"), gameProfile.getHandleType())
- .newInstance(minecraftServer, world, gameProfile.getHandle());
- } else {
- Object playerinteractmanager =
- getNmsClass("PlayerInteractManager").getDeclaredConstructor(getNmsClass(NmsVersion.v1_14.isSupported() ? "WorldServer" : "World"))
- .newInstance(world);
+ Object playerinteractmanager =
+ getNmsClass("PlayerInteractManager").getDeclaredConstructor(getNmsClass(NmsVersion.v1_14.isSupported() ? "WorldServer" : "World"))
+ .newInstance(world);
+
+ entityObject = entityClass.getDeclaredConstructor(getNmsClass("MinecraftServer"), getNmsClass("WorldServer"), gameProfile.getHandleType(),
+ playerinteractmanager.getClass()).newInstance(minecraftServer, world, gameProfile.getHandle(), playerinteractmanager);
- entityObject = entityClass.getDeclaredConstructor(getNmsClass("MinecraftServer"), getNmsClass("WorldServer"), gameProfile.getHandleType(),
- playerinteractmanager.getClass()).newInstance(minecraftServer, world, gameProfile.getHandle(), playerinteractmanager);
- }
} else if (entityName.equals("EnderPearl")) {
entityObject = entityClass.getDeclaredConstructor(getNmsClass("World"), getNmsClass("EntityLiving"))
.newInstance(world, createEntityInstance(DisguiseType.COW, "Cow"));
@@ -583,8 +518,8 @@ public class ReflectionManager {
}
public static Object getMobEffectList(int id) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getMobEffectList(id);
+ if (nmsReflection != null) {
+ return nmsReflection.getMobEffectList(id);
}
try {
@@ -601,8 +536,8 @@ public class ReflectionManager {
}
public static Object createMobEffect(int id, int duration, int amplification, boolean ambient, boolean particles) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.createMobEffect(id, duration, amplification, ambient, particles);
+ if (nmsReflection != null) {
+ return nmsReflection.createMobEffect(id, duration, amplification, ambient, particles);
}
try {
@@ -615,10 +550,10 @@ public class ReflectionManager {
}
public static FakeBoundingBox getBoundingBox(Entity entity) {
- if (NmsVersion.v1_18.isSupported()) {
- double x = v1_18ReflectionManager.getXBoundingBox(entity);
- double y = v1_18ReflectionManager.getYBoundingBox(entity);
- double z = v1_18ReflectionManager.getZBoundingBox(entity);
+ if (nmsReflection != null) {
+ double x = nmsReflection.getXBoundingBox(entity);
+ double y = nmsReflection.getYBoundingBox(entity);
+ double z = nmsReflection.getZBoundingBox(entity);
return new FakeBoundingBox(x, y, z);
}
@@ -668,16 +603,11 @@ public class ReflectionManager {
}
public static Object getPlayerFromPlayerConnection(Object nmsEntity) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getPlayerFromPlayerConnection(nmsEntity);
+ if (nmsReflection != null) {
+ return nmsReflection.getPlayerFromPlayerConnection(nmsEntity);
}
try {
- if (NmsVersion.v1_17.isSupported()) {
- // Convert from player connection to EntityPlayer
- nmsEntity = connectionEntityMethod.invoke(nmsEntity);
- }
-
return nmsEntity;
} catch (Exception ex) {
ex.printStackTrace();
@@ -687,8 +617,8 @@ public class ReflectionManager {
}
public static Entity getBukkitEntity(Object nmsEntity) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getBukkitEntity(nmsEntity);
+ if (nmsReflection != null) {
+ return nmsReflection.getBukkitEntity(nmsEntity);
}
try {
@@ -701,8 +631,8 @@ public class ReflectionManager {
}
public static ItemStack getBukkitItem(Object nmsItem) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getBukkitItem(nmsItem);
+ if (nmsReflection != null) {
+ return nmsReflection.getBukkitItem(nmsItem);
}
try {
@@ -715,8 +645,8 @@ public class ReflectionManager {
}
public static ItemStack getCraftItem(ItemStack bukkitItem) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getCraftItem(bukkitItem);
+ if (nmsReflection != null) {
+ return nmsReflection.getCraftItem(bukkitItem);
}
try {
@@ -767,6 +697,7 @@ public class ReflectionManager {
try {
Class> aClass = Class.forName("me.libraryaddict.disguise.utilities.reflection." + nmsVersion.name() + ".ReflectionManager");
Object o = aClass.getConstructor().newInstance();
+
return (ReflectionManagerAbstract) o;
} catch (ReflectiveOperationException e) {
e.printStackTrace();
@@ -792,8 +723,8 @@ public class ReflectionManager {
}
public static Object getCraftSound(Sound sound) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getCraftSound(sound);
+ if (nmsReflection != null) {
+ return nmsReflection.getCraftSound(sound);
}
try {
@@ -806,8 +737,8 @@ public class ReflectionManager {
}
public static Object getEntityTrackerEntry(Entity target) throws Exception {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getEntityTrackerEntry(target);
+ if (nmsReflection != null) {
+ return nmsReflection.getEntityTrackerEntry(target);
}
Object world = getWorldServer(target.getWorld());
@@ -833,8 +764,8 @@ public class ReflectionManager {
}
public static Object getMinecraftServer() {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getMinecraftServer();
+ if (nmsReflection != null) {
+ return nmsReflection.getMinecraftServer();
}
try {
@@ -846,8 +777,8 @@ public class ReflectionManager {
}
public static String getEnumArt(Art art) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getEnumArt(art);
+ if (nmsReflection != null) {
+ return nmsReflection.getEnumArt(art);
}
try {
@@ -865,8 +796,8 @@ public class ReflectionManager {
}
public static Object getBlockPosition(int x, int y, int z) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getBlockPosition(x, y, z);
+ if (nmsReflection != null) {
+ return nmsReflection.getBlockPosition(x, y, z);
}
try {
@@ -879,8 +810,8 @@ public class ReflectionManager {
}
public static Enum getEnumDirection(int direction) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getEnumDirection(direction);
+ if (nmsReflection != null) {
+ return nmsReflection.getEnumDirection(direction);
}
try {
@@ -893,8 +824,8 @@ public class ReflectionManager {
}
public static Enum getEnumPlayerInfoAction(int action) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getEnumPlayerInfoAction(action);
+ if (nmsReflection != null) {
+ return nmsReflection.getEnumPlayerInfoAction(action);
}
try {
@@ -907,17 +838,13 @@ public class ReflectionManager {
}
public static Object getPlayerInfoData(Object playerInfoPacket, WrappedGameProfile gameProfile) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getPlayerInfoData(gameProfile);
+ if (nmsReflection != null) {
+ return nmsReflection.getPlayerInfoData(gameProfile);
}
try {
Object playerListName = chatComponentConstructor.newInstance(gameProfile.getName());
- if (NmsVersion.v1_17.isSupported()) {
- return packetPlayOutConstructor.newInstance(gameProfile.getHandle(), 0, enumGamemode[1], playerListName);
- }
-
return packetPlayOutConstructor.newInstance(playerInfoPacket, gameProfile.getHandle(), 0, enumGamemode[1], playerListName);
} catch (Exception ex) {
ex.printStackTrace();
@@ -1008,8 +935,8 @@ public class ReflectionManager {
}
public static Object getNmsEntity(Entity entity) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getNmsEntity(entity);
+ if (nmsReflection != null) {
+ return nmsReflection.getNmsEntity(entity);
}
try {
@@ -1039,8 +966,8 @@ public class ReflectionManager {
}
public static Object getNmsItem(ItemStack itemstack) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getNmsItem(itemstack);
+ if (nmsReflection != null) {
+ return nmsReflection.getNmsItem(itemstack);
}
try {
@@ -1087,8 +1014,8 @@ public class ReflectionManager {
}
public static double getPing(Player player) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getPing(player);
+ if (nmsReflection != null) {
+ return nmsReflection.getPing(player);
}
try {
@@ -1101,8 +1028,8 @@ public class ReflectionManager {
}
public static float[] getSize(Entity entity) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getSize(entity);
+ if (nmsReflection != null) {
+ return nmsReflection.getSize(entity);
}
try {
@@ -1129,8 +1056,8 @@ public class ReflectionManager {
}
public static WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getSkullBlob(gameProfile);
+ if (nmsReflection != null) {
+ return nmsReflection.getSkullBlob(gameProfile);
}
try {
@@ -1153,8 +1080,8 @@ public class ReflectionManager {
}
public static Float getSoundModifier(Object entity) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getSoundModifier(entity);
+ if (nmsReflection != null) {
+ return nmsReflection.getSoundModifier(entity);
}
try {
@@ -1172,8 +1099,8 @@ public class ReflectionManager {
Object minecraftServer = getMinecraftServer();
LibsProfileLookupCaller callback = new LibsProfileLookupCaller();
- if (NmsVersion.v1_18.isSupported()) {
- v1_18ReflectionManager.injectCallback(playername, callback);
+ if (nmsReflection != null) {
+ nmsReflection.injectCallback(playername, callback);
} else {
for (Method method : getNmsClass("MinecraftServer").getMethods()) {
if (method.getReturnType().getSimpleName().equals("GameProfileRepository")) {
@@ -1202,8 +1129,8 @@ public class ReflectionManager {
}
public static void setBoundingBox(Entity entity, FakeBoundingBox newBox) {
- if (NmsVersion.v1_18.isSupported()) {
- v1_18ReflectionManager.setBoundingBox(entity, newBox.getX(), newBox.getY(), newBox.getZ());
+ if (nmsReflection != null) {
+ nmsReflection.setBoundingBox(entity, newBox.getX(), newBox.getY(), newBox.getZ());
return;
}
@@ -1220,8 +1147,8 @@ public class ReflectionManager {
}
public static Enum getSoundCategory(String category) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getSoundCategory(category);
+ if (nmsReflection != null) {
+ return nmsReflection.getSoundCategory(category);
}
return soundCategories.get(category);
@@ -1252,8 +1179,8 @@ public class ReflectionManager {
* @return null if the equipment slot is null
*/
public static Enum createEnumItemSlot(EquipmentSlot slot) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.createEnumItemSlot(slot);
+ if (nmsReflection != null) {
+ return nmsReflection.createEnumItemSlot(slot);
}
switch (slot) {
@@ -1333,8 +1260,8 @@ public class ReflectionManager {
}
public static Object getSoundString(Sound sound) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getSoundString(sound);
+ if (nmsReflection != null) {
+ return nmsReflection.getSoundString(sound);
}
try {
@@ -1381,8 +1308,8 @@ public class ReflectionManager {
public static Object convertInvalidMeta(Object value) {
if (value instanceof Optional) {
Optional opt = (Optional) value;
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.convertOptional(opt);
+ if (nmsReflection != null) {
+ return nmsReflection.convertOptional(opt);
}
if (!opt.isPresent()) {
@@ -1425,8 +1352,8 @@ public class ReflectionManager {
}
} else if (value instanceof Vector3F) {
Vector3F angle = (Vector3F) value;
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.convertVec3(angle);
+ if (nmsReflection != null) {
+ return nmsReflection.convertVec3(angle);
}
try {
@@ -1436,8 +1363,8 @@ public class ReflectionManager {
}
} else if (value instanceof EulerAngle) {
EulerAngle angle = (EulerAngle) value;
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.convertVec3(angle);
+ if (nmsReflection != null) {
+ return nmsReflection.convertVec3(angle);
}
try {
@@ -1446,8 +1373,8 @@ public class ReflectionManager {
ex.printStackTrace();
}
} else if (value instanceof Direction) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.convertDirection((Direction) value);
+ if (nmsReflection != null) {
+ return nmsReflection.convertDirection((Direction) value);
}
try {
@@ -1457,8 +1384,8 @@ public class ReflectionManager {
}
} else if (value instanceof BlockPosition) {
BlockPosition pos = (BlockPosition) value;
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getBlockPosition(pos.getX(), pos.getY(), pos.getZ());
+ if (nmsReflection != null) {
+ return nmsReflection.getBlockPosition(pos.getX(), pos.getY(), pos.getZ());
}
try {
@@ -1486,8 +1413,8 @@ public class ReflectionManager {
}
public static Material getMaterial(String name) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getMaterial(name);
+ if (nmsReflection != null) {
+ return nmsReflection.getMaterial(name);
}
try {
@@ -1501,7 +1428,7 @@ public class ReflectionManager {
Object mcKey = getNmsConstructor("MinecraftKey", String.class).newInstance(name);
- Object registry = getNmsField("IRegistry", NmsVersion.v1_17.isSupported() ? "Z" : "ITEM").get(null);
+ Object registry = getNmsField("IRegistry", "ITEM").get(null);
Method getMethod = getNmsMethod(getNmsClass("RegistryMaterials"), "get", mcKey.getClass());
Object item = getMethod.invoke(registry, mcKey);
@@ -1526,8 +1453,8 @@ public class ReflectionManager {
}
public static String getItemName(Material material) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getItemName(material);
+ if (nmsReflection != null) {
+ return nmsReflection.getItemName(material);
}
try {
@@ -1540,7 +1467,7 @@ public class ReflectionManager {
Object registry;
if (NmsVersion.v1_13.isSupported()) {
- registry = getNmsField("IRegistry", NmsVersion.v1_17.isSupported() ? "Z" : "ITEM").get(null);
+ registry = getNmsField("IRegistry", "ITEM").get(null);
} else {
registry = getNmsField("Item", "REGISTRY").get(null);
}
@@ -1562,8 +1489,8 @@ public class ReflectionManager {
}
public static Object getNmsVillagerData(VillagerData data) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getNmsVillagerData(data.getType(), data.getProfession());
+ if (nmsReflection != null) {
+ return nmsReflection.getNmsVillagerData(data.getType(), data.getProfession());
}
Object type = getVillagerType(data.getType());
@@ -1579,8 +1506,8 @@ public class ReflectionManager {
}
public static Object getVillagerType(Villager.Type type) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getVillagerType(type);
+ if (nmsReflection != null) {
+ return nmsReflection.getVillagerType(type);
}
try {
@@ -1619,8 +1546,8 @@ public class ReflectionManager {
}
public static Object getVillagerProfession(Villager.Profession profession) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getVillagerProfession(profession);
+ if (nmsReflection != null) {
+ return nmsReflection.getVillagerProfession(profession);
}
try {
@@ -1658,8 +1585,8 @@ public class ReflectionManager {
public static Object createDataWatcherItem(MetaIndex id, Object value) {
WrappedDataWatcherObject watcherObject = createDataWatcherObject(id, value);
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.createDataWatcherItem(watcherObject, convertInvalidMeta(value));
+ if (nmsReflection != null) {
+ return nmsReflection.createDataWatcherItem(watcherObject, convertInvalidMeta(value));
}
try {
@@ -1673,8 +1600,8 @@ public class ReflectionManager {
@Deprecated
public static Object createSoundEffect(String minecraftKey) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.createSoundEffect(minecraftKey);
+ if (nmsReflection != null) {
+ return nmsReflection.createSoundEffect(minecraftKey);
}
try {
@@ -1687,8 +1614,8 @@ public class ReflectionManager {
}
public static Object createMinecraftKey(String name) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.createMinecraftKey(name);
+ if (nmsReflection != null) {
+ return nmsReflection.createMinecraftKey(name);
}
try {
@@ -1701,8 +1628,8 @@ public class ReflectionManager {
}
public static Object getVec3D(Vector vector) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getVec3D(vector);
+ if (nmsReflection != null) {
+ return nmsReflection.getVec3D(vector);
}
try {
@@ -1715,8 +1642,8 @@ public class ReflectionManager {
}
public static Object getEntityType(EntityType entityType) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getEntityType(entityType);
+ if (nmsReflection != null) {
+ return nmsReflection.getEntityType(entityType);
}
try {
@@ -1735,8 +1662,8 @@ public class ReflectionManager {
}
public static Object registerEntityType(NamespacedKey key) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.registerEntityType(key);
+ if (nmsReflection != null) {
+ return nmsReflection.registerEntityType(key);
}
try {
@@ -1744,7 +1671,7 @@ public class ReflectionManager {
Class typesClass = getNmsClass("IRegistry");
- Object registry = typesClass.getField(NmsVersion.v1_17.isSupported() ? "Y" : "ENTITY_TYPE").get(null);
+ Object registry = typesClass.getField("ENTITY_TYPE").get(null);
Constructor c = getNmsClass("EntityTypes").getConstructors()[0];
@@ -1778,16 +1705,16 @@ public class ReflectionManager {
}
public static int getEntityTypeId(Object entityTypes) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getEntityTypeId(entityTypes);
+ if (nmsReflection != null) {
+ return nmsReflection.getEntityTypeId(entityTypes);
}
try {
Class typesClass = getNmsClass("IRegistry");
- Object registry = typesClass.getField(NmsVersion.v1_17.isSupported() ? "Y" : "ENTITY_TYPE").get(null);
+ Object registry = typesClass.getField("ENTITY_TYPE").get(null);
- return (int) registry.getClass().getMethod(NmsVersion.v1_17.isSupported() ? "getId" : "a", Object.class).invoke(registry, entityTypes);
+ return (int) registry.getClass().getMethod("a", Object.class).invoke(registry, entityTypes);
} catch (Exception ex) {
ex.printStackTrace();
}
@@ -1796,8 +1723,8 @@ public class ReflectionManager {
}
public static int getEntityTypeId(EntityType entityType) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getEntityTypeId(entityType);
+ if (nmsReflection != null) {
+ return nmsReflection.getEntityTypeId(entityType);
}
try {
@@ -1806,9 +1733,9 @@ public class ReflectionManager {
Class typesClass = getNmsClass("IRegistry");
- Object registry = typesClass.getField(NmsVersion.v1_17.isSupported() ? "Y" : "ENTITY_TYPE").get(null);
+ Object registry = typesClass.getField("ENTITY_TYPE").get(null);
- return (int) registry.getClass().getMethod(NmsVersion.v1_17.isSupported() ? "getId" : "a", Object.class).invoke(registry, entityTypes);
+ return (int) registry.getClass().getMethod("a", Object.class).invoke(registry, entityTypes);
}
return entityType.getTypeId();
@@ -1820,17 +1747,17 @@ public class ReflectionManager {
}
public static Object getEntityType(NamespacedKey name) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getEntityType(name);
+ if (nmsReflection != null) {
+ return nmsReflection.getEntityType(name);
}
try {
Class typesClass = getNmsClass("IRegistry");
- Object registry = typesClass.getField(NmsVersion.v1_17.isSupported() ? "Y" : "ENTITY_TYPE").get(null);
+ Object registry = typesClass.getField("ENTITY_TYPE").get(null);
Object mcKey = getNmsConstructor("MinecraftKey", String.class).newInstance(name.toString());
- return registry.getClass().getMethod(NmsVersion.v1_17.isSupported() ? "getId" : "a", mcKey.getClass()).invoke(registry, mcKey);
+ return registry.getClass().getMethod("a", mcKey.getClass()).invoke(registry, mcKey);
} catch (Exception ex) {
ex.printStackTrace();
}
@@ -1839,9 +1766,8 @@ public class ReflectionManager {
}
public static Object getNmsEntityPose(EntityPose entityPose) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getNmsEntityPose(
- entityPose == EntityPose.SNEAKING && NmsVersion.v1_15.isSupported() ? "CROUCHING" : entityPose.name());
+ if (nmsReflection != null) {
+ return nmsReflection.getNmsEntityPose(entityPose == EntityPose.SNEAKING && NmsVersion.v1_15.isSupported() ? "CROUCHING" : entityPose.name());
}
return Enum.valueOf(entityPoseClass, entityPose == EntityPose.SNEAKING && NmsVersion.v1_15.isSupported() ? "CROUCHING" : entityPose.name());
@@ -1863,8 +1789,8 @@ public class ReflectionManager {
}
public static int getCombinedIdByBlockData(BlockData data) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getCombinedIdByBlockData(data);
+ if (nmsReflection != null) {
+ return nmsReflection.getCombinedIdByBlockData(data);
}
try {
@@ -1879,8 +1805,8 @@ public class ReflectionManager {
}
public static int getCombinedIdByItemStack(ItemStack itemStack) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getCombinedIdByItemStack(itemStack);
+ if (nmsReflection != null) {
+ return nmsReflection.getCombinedIdByItemStack(itemStack);
}
try {
@@ -1901,8 +1827,8 @@ public class ReflectionManager {
}
public static BlockData getBlockDataByCombinedId(int id) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getBlockDataByCombinedId(id);
+ if (nmsReflection != null) {
+ return nmsReflection.getBlockDataByCombinedId(id);
}
try {
@@ -1919,8 +1845,8 @@ public class ReflectionManager {
}
public static ItemStack getItemStackByCombinedId(int id) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getItemStackByCombinedId(id);
+ if (nmsReflection != null) {
+ return nmsReflection.getItemStackByCombinedId(id);
}
try {
@@ -1947,8 +1873,8 @@ public class ReflectionManager {
}
public static Object getWorldServer(World w) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getWorldServer(w);
+ if (nmsReflection != null) {
+ return nmsReflection.getWorldServer(w);
}
try {
@@ -1961,8 +1887,8 @@ public class ReflectionManager {
}
public static ItemMeta getDeserializedItemMeta(Map meta) {
- if (NmsVersion.v1_18.isSupported()) {
- return v1_18ReflectionManager.getDeserializedItemMeta(meta);
+ if (nmsReflection != null) {
+ return nmsReflection.getDeserializedItemMeta(meta);
}
try {
@@ -2240,7 +2166,7 @@ public class ReflectionManager {
}
Object nmsEntity = ReflectionManager.createEntityInstance(disguiseType,
- NmsVersion.v1_18.isSupported() ? disguiseType.getEntityType().getKey().getKey() : nmsEntityName);
+ nmsReflection != null ? disguiseType.getEntityType().getKey().getKey() : nmsEntityName);
if (nmsEntity == null) {
DisguiseUtilities.getLogger().warning("Entity not found! (" + nmsEntityName + ")");
diff --git a/pom.xml b/pom.xml
index 55147b57..47d8fef2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,6 +9,7 @@
10.0.26-SNAPSHOT
shared
+ v1_17_R1
v1_18_R1
plugin
diff --git a/shared/pom.xml b/shared/pom.xml
index a213500e..276d8016 100644
--- a/shared/pom.xml
+++ b/shared/pom.xml
@@ -7,8 +7,8 @@
LibsDisguises
10.0.26-SNAPSHOT
- 4.0.0
+ 4.0.0
shared
diff --git a/v1_17_R1/pom.xml b/v1_17_R1/pom.xml
new file mode 100644
index 00000000..aa31a07c
--- /dev/null
+++ b/v1_17_R1/pom.xml
@@ -0,0 +1,81 @@
+
+
+
+ LibsDisguises
+ LibsDisguises
+ 10.0.26-SNAPSHOT
+ ../pom.xml
+
+
+ 4.0.0
+
+ v1_17_R1
+
+
+
+ org.spigotmc
+ spigot
+ 1.17.1-R0.1-SNAPSHOT
+ remapped-mojang
+ provided
+
+
+ org.spigotmc
+ spigot-api
+ 1.17.1-R0.1-SNAPSHOT
+ provided
+
+
+ LibsDisguises
+ shared
+ ${project.version}
+
+
+ com.comphenix.protocol
+ ProtocolLib
+
+
+
+
+
+
+ net.md-5
+ specialsource-maven-plugin
+ 1.2.2
+
+
+ package
+
+ remap
+
+ remap-obf
+
+ org.spigotmc:minecraft-server:1.17.1-R0.1-SNAPSHOT:txt:maps-mojang
+ true
+ org.spigotmc:spigot:1.17.1-R0.1-SNAPSHOT:jar:remapped-mojang
+ true
+ remapped-obf
+
+
+
+ package
+
+ remap
+
+ remap-spigot
+
+ ${project.build.directory}/${project.artifactId}-${project.version}-remapped-obf.jar
+ org.spigotmc:minecraft-server:1.17.1-R0.1-SNAPSHOT:csrg:maps-spigot
+ org.spigotmc:spigot:1.17.1-R0.1-SNAPSHOT:jar:remapped-obf
+ true
+ remapped-spigot
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/v1_17_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_17/ReflectionManager.java b/v1_17_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_17/ReflectionManager.java
new file mode 100644
index 00000000..9d7b938e
--- /dev/null
+++ b/v1_17_R1/src/main/java/me/libraryaddict/disguise/utilities/reflection/v1_17/ReflectionManager.java
@@ -0,0 +1,437 @@
+package me.libraryaddict.disguise.utilities.reflection.v1_17;
+
+import com.comphenix.protocol.wrappers.*;
+import com.comphenix.protocol.wrappers.EnumWrappers.Direction;
+import com.mojang.authlib.Agent;
+import com.mojang.authlib.GameProfile;
+import com.mojang.authlib.ProfileLookupCallback;
+import com.mojang.authlib.minecraft.MinecraftSessionService;
+import me.libraryaddict.disguise.utilities.reflection.ReflectionManagerAbstract;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Registry;
+import net.minecraft.core.Vector3f;
+import net.minecraft.network.chat.TextComponent;
+import net.minecraft.network.protocol.game.ClientboundPlayerInfoPacket;
+import net.minecraft.network.syncher.EntityDataAccessor;
+import net.minecraft.network.syncher.SynchedEntityData;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.server.dedicated.DedicatedServer;
+import net.minecraft.server.level.*;
+import net.minecraft.server.network.ServerGamePacketListenerImpl;
+import net.minecraft.server.network.ServerPlayerConnection;
+import net.minecraft.sounds.SoundEvent;
+import net.minecraft.sounds.SoundSource;
+import net.minecraft.world.damagesource.DamageSource;
+import net.minecraft.world.effect.MobEffect;
+import net.minecraft.world.effect.MobEffectInstance;
+import net.minecraft.world.entity.EntityDimensions;
+import net.minecraft.world.entity.npc.VillagerData;
+import net.minecraft.world.entity.npc.VillagerProfession;
+import net.minecraft.world.entity.npc.VillagerType;
+import net.minecraft.world.level.GameType;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.phys.AABB;
+import net.minecraft.world.phys.Vec3;
+import org.bukkit.*;
+import org.bukkit.block.data.BlockData;
+import org.bukkit.craftbukkit.libs.it.unimi.dsi.fastutil.ints.Int2ObjectFunction;
+import org.bukkit.craftbukkit.v1_17_R1.CraftArt;
+import org.bukkit.craftbukkit.v1_17_R1.CraftServer;
+import org.bukkit.craftbukkit.v1_17_R1.CraftSound;
+import org.bukkit.craftbukkit.v1_17_R1.CraftWorld;
+import org.bukkit.craftbukkit.v1_17_R1.block.data.CraftBlockData;
+import org.bukkit.craftbukkit.v1_17_R1.entity.CraftEntity;
+import org.bukkit.craftbukkit.v1_17_R1.entity.CraftPlayer;
+import org.bukkit.craftbukkit.v1_17_R1.inventory.CraftItemStack;
+import org.bukkit.craftbukkit.v1_17_R1.util.CraftMagicNumbers;
+import org.bukkit.craftbukkit.v1_17_R1.util.CraftNamespacedKey;
+import org.bukkit.entity.Entity;
+import org.bukkit.entity.EntityType;
+import org.bukkit.entity.Player;
+import org.bukkit.entity.Villager;
+import org.bukkit.inventory.EquipmentSlot;
+import org.bukkit.inventory.ItemStack;
+import org.bukkit.inventory.meta.ItemMeta;
+import org.bukkit.potion.PotionEffect;
+import org.bukkit.util.EulerAngle;
+import org.bukkit.util.Vector;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicInteger;
+
+public class ReflectionManager implements ReflectionManagerAbstract {
+ public boolean hasInvul(Entity entity) {
+ net.minecraft.world.entity.Entity nmsEntity = ((CraftEntity) entity).getHandle();
+
+ if (nmsEntity instanceof net.minecraft.world.entity.LivingEntity) {
+ return nmsEntity.invulnerableTime > 0;
+ } else {
+ return nmsEntity.isInvulnerableTo(DamageSource.GENERIC);
+ }
+ }
+
+ public int getIncrementedStateId(Player player) {
+ ServerPlayer serverPlayer = ((CraftPlayer) player).getHandle();
+ return serverPlayer.containerMenu.incrementStateId(); // TODO Check correct container
+ }
+
+ public int getNewEntityId() {
+ return getNewEntityId(true);
+ }
+
+ public int getNewEntityId(boolean increment) {
+ try {
+ Field entityCounter = net.minecraft.world.entity.Entity.class.getDeclaredField("b");
+ entityCounter.setAccessible(true);
+ AtomicInteger atomicInteger = (AtomicInteger) entityCounter.get(null);
+ if (increment) {
+ return atomicInteger.incrementAndGet();
+ } else {
+ return atomicInteger.get();
+ }
+ } catch (ReflectiveOperationException e) {
+ e.printStackTrace();
+ }
+
+ return -1;
+ }
+
+ public ServerGamePacketListenerImpl getPlayerConnectionOrPlayer(Player player) {
+ return ((CraftPlayer) player).getHandle().connection;
+ }
+
+ public net.minecraft.world.entity.Entity createEntityInstance(String entityName) {
+ Optional> optional = net.minecraft.world.entity.EntityType.byString(entityName.toLowerCase(Locale.ROOT));
+ if (optional.isPresent()) {
+ net.minecraft.world.entity.EntityType> entityType = optional.get();
+ ServerLevel world = getWorldServer(Bukkit.getWorlds().get(0));
+ net.minecraft.world.entity.Entity entity;
+ if (entityType == net.minecraft.world.entity.EntityType.PLAYER) {
+ WrappedGameProfile gameProfile = ReflectionManagerAbstract.getGameProfile(new UUID(0, 0), "Steve");
+ entity = new ServerPlayer(getMinecraftServer(), world, (GameProfile) gameProfile.getHandle());
+ }/* else if (entityType == net.minecraft.world.entity.EntityType.ENDER_PEARL) {
+ entity = new ThrownEnderpearl(world, (net.minecraft.world.entity.LivingEntity) createEntityInstance("cow"));
+ } else if (entityType == net.minecraft.world.entity.EntityType.FISHING_BOBBER) {
+ entity = new FishingHook((net.minecraft.world.entity.player.Player) createEntityInstance("player"), world, 0, 0);
+ }*/ else {
+ entity = entityType.create(world);
+ }
+
+ // Workaround for paper being 2 smart 4 me
+ entity.setPos(1.0, 1.0, 1.0);
+ entity.setPos(0.0, 0.0, 0.0);
+ return entity;
+ }
+
+ return null;
+ }
+
+ public MobEffect getMobEffectList(int id) {
+ return MobEffect.byId(id);
+ }
+
+ public MobEffectInstance createMobEffect(PotionEffect effect) {
+ return createMobEffect(effect.getType().getId(), effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles());
+ }
+
+ public MobEffectInstance createMobEffect(int id, int duration, int amplification, boolean ambient, boolean particles) {
+ return new MobEffectInstance(getMobEffectList(id), duration, amplification, ambient, particles);
+ }
+
+ public AABB getBoundingBox(Entity entity) {
+ return ((CraftEntity) entity).getHandle().getBoundingBox();
+ }
+
+ public double getXBoundingBox(Entity entity) {
+ return getBoundingBox(entity).maxX - getBoundingBox(entity).minX;
+ }
+
+ public double getYBoundingBox(Entity entity) {
+ return getBoundingBox(entity).maxY - getBoundingBox(entity).minY;
+ }
+
+ public double getZBoundingBox(Entity entity) {
+ return getBoundingBox(entity).maxZ - getBoundingBox(entity).minZ;
+ }
+
+ public ServerPlayer getPlayerFromPlayerConnection(Object nmsEntity) {
+ return ((ServerPlayerConnection) nmsEntity).getPlayer();
+ }
+
+ public Entity getBukkitEntity(Object nmsEntity) {
+ return ((net.minecraft.world.entity.Entity) nmsEntity).getBukkitEntity();
+ }
+
+ public ItemStack getBukkitItem(Object nmsItem) {
+ return CraftItemStack.asBukkitCopy((net.minecraft.world.item.ItemStack) nmsItem);
+ }
+
+ public ItemStack getCraftItem(ItemStack bukkitItem) {
+ return CraftItemStack.asCraftCopy(bukkitItem);
+ }
+
+ public SoundEvent getCraftSound(Sound sound) {
+ return CraftSound.getSoundEffect(sound);
+ }
+
+ public ServerEntity getEntityTrackerEntry(Entity target) throws Exception {
+ ServerLevel world = ((CraftWorld) target.getWorld()).getHandle();
+ ServerChunkCache chunkSource = world.getChunkProvider();
+ ChunkMap chunkMap = chunkSource.chunkMap;
+ Map entityMap = chunkMap.G;
+ ChunkMap.TrackedEntity trackedEntity = entityMap.get(target.getEntityId());
+ if (trackedEntity == null) {
+ return null;
+ }
+
+ Field field = ChunkMap.TrackedEntity.class.getDeclaredField("b");
+ field.setAccessible(true);
+
+ return (ServerEntity) field.get(trackedEntity);
+ }
+
+ public DedicatedServer getMinecraftServer() {
+ return ((CraftServer) Bukkit.getServer()).getServer();
+ }
+
+ public String getEnumArt(Art art) {
+ return Registry.MOTIVE.getKey(CraftArt.BukkitToNotch(art)).getPath();
+ }
+
+ public BlockPos getBlockPosition(int x, int y, int z) {
+ return new BlockPos(x, y, z);
+ }
+
+ public net.minecraft.core.Direction getEnumDirection(int direction) {
+ return net.minecraft.core.Direction.from2DDataValue(direction);
+ }
+
+ public ClientboundPlayerInfoPacket.Action getEnumPlayerInfoAction(int action) {
+ return ClientboundPlayerInfoPacket.Action.values()[action];
+ }
+
+ public ClientboundPlayerInfoPacket.PlayerUpdate getPlayerInfoData(WrappedGameProfile gameProfile) {
+ return new ClientboundPlayerInfoPacket.PlayerUpdate((GameProfile) gameProfile.getHandle(), 0, GameType.SURVIVAL,
+ new TextComponent(gameProfile.getName()));
+ }
+
+ public Object getNmsEntity(Entity entity) {
+ return ((CraftEntity) entity).getHandle();
+ }
+
+ public double getPing(Player player) {
+ return player.getPing();
+ }
+
+ public float[] getSize(Entity entity) {
+ net.minecraft.world.entity.Entity nmsEntity = ((CraftEntity) entity).getHandle();
+ EntityDimensions dimensions = nmsEntity.getDimensions(net.minecraft.world.entity.Pose.STANDING);
+ return new float[]{dimensions.width, nmsEntity.getEyeHeight()};
+ }
+
+ public WrappedGameProfile getSkullBlob(WrappedGameProfile gameProfile) {
+ DedicatedServer minecraftServer = getMinecraftServer();
+ MinecraftSessionService sessionService = minecraftServer.getSessionService();
+ return WrappedGameProfile.fromHandle(sessionService.fillProfileProperties((GameProfile) gameProfile.getHandle(), true));
+ }
+
+ public Float getSoundModifier(Object entity) {
+ if (!(entity instanceof net.minecraft.world.entity.LivingEntity)) {
+ return 0.0f;
+ } else {
+ return ((net.minecraft.world.entity.LivingEntity) entity).getVoicePitch();
+ }
+ }
+
+ public void injectCallback(String playername, ProfileLookupCallback callback) {
+ Agent agent = Agent.MINECRAFT;
+ getMinecraftServer().getProfileRepository().findProfilesByNames(new String[]{playername}, agent, callback);
+ }
+
+ public void setBoundingBox(Entity entity, double x, double y, double z) {
+ Location loc = entity.getLocation();
+ ((CraftEntity) entity).getHandle().setBoundingBox(
+ new AABB(loc.getX() - x / 2, loc.getY() - y / 2, loc.getZ() - z / 2, loc.getX() + x / 2, loc.getY() + y / 2, loc.getZ() + z / 2));
+ }
+
+ public Enum getSoundCategory(String category) {
+ return Arrays.stream(SoundSource.values()).filter(soundSource -> category.equalsIgnoreCase(soundSource.getName())).findAny().get();
+ }
+
+ /**
+ * Creates the NMS object EnumItemSlot from an EquipmentSlot.
+ *
+ * @param slot
+ * @return null if the equipment slot is null
+ */
+ public Enum createEnumItemSlot(EquipmentSlot slot) {
+ switch (slot) {
+ case HAND:
+ return net.minecraft.world.entity.EquipmentSlot.MAINHAND;
+ case OFF_HAND:
+ return net.minecraft.world.entity.EquipmentSlot.OFFHAND;
+ case FEET:
+ return net.minecraft.world.entity.EquipmentSlot.FEET;
+ case LEGS:
+ return net.minecraft.world.entity.EquipmentSlot.LEGS;
+ case CHEST:
+ return net.minecraft.world.entity.EquipmentSlot.CHEST;
+ case HEAD:
+ return net.minecraft.world.entity.EquipmentSlot.HEAD;
+ default:
+ return null;
+ }
+ }
+
+ public Object getSoundString(Sound sound) {
+ return CraftSound.getSoundEffect(sound).getLocation().toString(); // TODO
+ }
+
+ public Optional> convertOptional(Object val) {
+ if (val instanceof BlockPosition) {
+ BlockPosition pos = (BlockPosition) val;
+ return Optional.of(getBlockPosition(pos.getX(), pos.getY(), pos.getZ()));
+ } else if (val instanceof WrappedBlockData) {
+ Object obj = ((WrappedBlockData) val).getHandle();
+ return Optional.of(obj);
+ } else if (val instanceof ItemStack) {
+ Object obj = getNmsItem((ItemStack) val);
+ return Optional.of(obj);
+ } else if (val instanceof WrappedChatComponent) {
+ Object obj = ((WrappedChatComponent) val).getHandle();
+ return Optional.of(obj);
+ }
+
+ return Optional.empty();
+ }
+
+ public Vector3f convertVec3(Object object) {
+ if (object instanceof Vector3F) {
+ Vector3F vector3F = (Vector3F) object;
+ return new Vector3f(vector3F.getX(), vector3F.getY(), vector3F.getZ());
+ } else if (object instanceof EulerAngle) {
+ EulerAngle eulerAngle = (EulerAngle) object;
+ return new Vector3f((float) eulerAngle.getX(), (float) eulerAngle.getY(), (float) eulerAngle.getZ());
+ }
+
+ return null;
+ }
+
+ public net.minecraft.core.Direction convertDirection(Direction direction) {
+ return net.minecraft.core.Direction.from3DDataValue(direction.ordinal());
+ }
+
+ public Material getMaterial(String name) {
+ return CraftMagicNumbers.INSTANCE.getMaterial(name, CraftMagicNumbers.INSTANCE.getDataVersion());
+ }
+
+ public String getItemName(Material material) {
+ return Registry.ITEM.getKey(CraftMagicNumbers.getItem(material)).getPath();
+ }
+
+ public net.minecraft.world.item.ItemStack getNmsItem(ItemStack itemStack) {
+ return CraftItemStack.asNMSCopy(itemStack);
+ }
+
+ public VillagerData getNmsVillagerData(Villager.Type villagerType, Villager.Profession villagerProfession) {
+ VillagerType nmsVillagerType = Registry.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(villagerType.getKey()));
+ VillagerProfession nmsVillagerProfession = Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(villagerProfession.getKey()));
+
+ return new net.minecraft.world.entity.npc.VillagerData(nmsVillagerType, nmsVillagerProfession, 1);
+ }
+
+ public VillagerType getVillagerType(Villager.Type type) {
+ return Registry.VILLAGER_TYPE.get(CraftNamespacedKey.toMinecraft(type.getKey()));
+ }
+
+ public VillagerProfession getVillagerProfession(Villager.Profession profession) {
+ return Registry.VILLAGER_PROFESSION.get(CraftNamespacedKey.toMinecraft(profession.getKey()));
+ }
+
+ public SynchedEntityData.DataItem createDataWatcherItem(WrappedDataWatcher.WrappedDataWatcherObject wrappedDataWatcherObject, T metaItem) {
+ return new SynchedEntityData.DataItem<>((EntityDataAccessor) wrappedDataWatcherObject.getHandle(), metaItem);
+ }
+
+ @Deprecated
+ public SoundEvent createSoundEffect(String minecraftKey) {
+ return new SoundEvent(new ResourceLocation(minecraftKey));
+ }
+
+ @Override
+ public ResourceLocation createMinecraftKey(String name) {
+ return new ResourceLocation(name);
+ }
+
+ public Vec3 getVec3D(Vector vector) {
+ return new Vec3(vector.getX(), vector.getY(), vector.getZ());
+ }
+
+ public net.minecraft.world.entity.EntityType getEntityType(EntityType entityType) {
+ return net.minecraft.world.entity.EntityType.byString(
+ entityType.getName() == null ? entityType.name().toLowerCase(Locale.ENGLISH) : entityType.getName()).orElse(null);
+ }
+
+ public Object registerEntityType(NamespacedKey key) {
+ net.minecraft.world.entity.EntityType newEntity =
+ new net.minecraft.world.entity.EntityType<>(null, null, false, false, false, false, null, null, 0, 0);
+ Registry.register(Registry.ENTITY_TYPE, CraftNamespacedKey.toMinecraft(key), newEntity);
+ newEntity.getDescriptionId();
+ return newEntity; // TODO ??? Some reflection in legacy that I'm unsure about
+ }
+
+ public int getEntityTypeId(Object entityTypes) {
+ net.minecraft.world.entity.EntityType entityType = (net.minecraft.world.entity.EntityType) entityTypes;
+ return Registry.ENTITY_TYPE.getId(entityType);
+ }
+
+ public int getEntityTypeId(EntityType entityType) {
+ return getEntityTypeId(getEntityType(entityType));
+ }
+
+ public Object getEntityType(NamespacedKey name) {
+ return Registry.ENTITY_TYPE.get(CraftNamespacedKey.toMinecraft(name));
+ }
+
+ public Object getNmsEntityPose(String enumPose) {
+ return net.minecraft.world.entity.Pose.valueOf(enumPose);
+ }
+
+ public int getCombinedIdByBlockData(BlockData data) {
+ BlockState state = ((CraftBlockData) data).getState();
+ return Block.getId(state);
+ }
+
+ public int getCombinedIdByItemStack(ItemStack itemStack) {
+ Block block = CraftMagicNumbers.getBlock(itemStack.getType());
+ return Block.getId(block.defaultBlockState());
+ }
+
+ public BlockData getBlockDataByCombinedId(int id) {
+ return CraftBlockData.fromData(Block.stateById(id));
+ }
+
+ public ItemStack getItemStackByCombinedId(int id) {
+ return new ItemStack(CraftMagicNumbers.getMaterial(Block.stateById(id).getBlock()));
+ }
+
+ public ServerLevel getWorldServer(World w) {
+ return ((CraftWorld) w).getHandle();
+ }
+
+ public ItemMeta getDeserializedItemMeta(Map meta) {
+ try {
+ Class> aClass = Class.forName("org.bukkit.craftbukkit.v1_17_R1.inventory.CraftMetaItem$SerializableMeta");
+ Method deserialize = aClass.getDeclaredMethod("deserialize", Map.class);
+ Object itemMeta = deserialize.invoke(null, meta);
+
+ return (ItemMeta) itemMeta;
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ return null;
+ }
+}
diff --git a/v1_18_R1/pom.xml b/v1_18_R1/pom.xml
index 187f2ff7..a1704fdc 100644
--- a/v1_18_R1/pom.xml
+++ b/v1_18_R1/pom.xml
@@ -6,9 +6,10 @@
LibsDisguises
LibsDisguises
10.0.26-SNAPSHOT
+ ../pom.xml
- 4.0.0
+ 4.0.0
v1_18_R1