Update to 1.16
This commit is contained in:
		
							
								
								
									
										9
									
								
								pom.xml
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								pom.xml
									
									
									
									
									
								
							| @@ -83,17 +83,12 @@ | |||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>org.spigotmc</groupId> |             <groupId>org.spigotmc</groupId> | ||||||
|             <artifactId>spigot-api</artifactId> |             <artifactId>spigot-api</artifactId> | ||||||
|             <version>1.15-R0.1-SNAPSHOT</version> |             <version>1.16.1-R0.1-SNAPSHOT</version> | ||||||
|         </dependency> |         </dependency> | ||||||
|         <dependency> |         <dependency> | ||||||
|             <groupId>org.spigotmc</groupId> |             <groupId>org.spigotmc</groupId> | ||||||
|             <artifactId>spigot</artifactId> |             <artifactId>spigot</artifactId> | ||||||
|             <version>1.15.2-R0.1-SNAPSHOT</version> |             <version>1.16.1-R0.1-SNAPSHOT</version> | ||||||
|         </dependency> |  | ||||||
|         <dependency> |  | ||||||
|             <groupId>org.spigotmc</groupId> |  | ||||||
|             <artifactId>spigot</artifactId> |  | ||||||
|             <version>1.15.2-R0.1-SNAPSHOT</version> |  | ||||||
|         </dependency> |         </dependency> | ||||||
|         <!-- testing --> |         <!-- testing --> | ||||||
|         <dependency> |         <dependency> | ||||||
|   | |||||||
| @@ -60,6 +60,14 @@ public class LibsDisguises extends JavaPlugin { | |||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |         try { | ||||||
|  |             Class cl = Class.forName("org.bukkit.Server$Spigot"); | ||||||
|  |         } | ||||||
|  |         catch (ClassNotFoundException e) { | ||||||
|  |             getLogger().severe("Oh dear, you seem to be using CraftBukkit. Please use Spigot or Paper instead! This " + | ||||||
|  |                     "plugin will continue to load, but it will look like a mugging victim"); | ||||||
|  |         } | ||||||
|  |  | ||||||
|         WatcherSanitizer.init(); |         WatcherSanitizer.init(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -7,6 +7,7 @@ import me.libraryaddict.disguise.utilities.translations.TranslateType; | |||||||
| import org.apache.commons.lang.StringUtils; | import org.apache.commons.lang.StringUtils; | ||||||
| import org.bukkit.entity.Entity; | import org.bukkit.entity.Entity; | ||||||
| import org.bukkit.entity.EntityType; | import org.bukkit.entity.EntityType; | ||||||
|  | import org.omg.CORBA.UNKNOWN; | ||||||
|  |  | ||||||
| public enum DisguiseType { | public enum DisguiseType { | ||||||
|     AREA_EFFECT_CLOUD(3, 0), |     AREA_EFFECT_CLOUD(3, 0), | ||||||
| @@ -83,6 +84,8 @@ public enum DisguiseType { | |||||||
|  |  | ||||||
|     GUARDIAN, |     GUARDIAN, | ||||||
|  |  | ||||||
|  |     @NmsAddedIn(val = NmsVersion.v1_16) HOGLIN, | ||||||
|  |  | ||||||
|     HORSE, |     HORSE, | ||||||
|  |  | ||||||
|     HUSK, |     HUSK, | ||||||
| @@ -135,7 +138,9 @@ public enum DisguiseType { | |||||||
|  |  | ||||||
|     PIG, |     PIG, | ||||||
|  |  | ||||||
|     PIG_ZOMBIE, |     @NmsRemovedIn(val = NmsVersion.v1_16) PIG_ZOMBIE, | ||||||
|  |  | ||||||
|  |     @NmsAddedIn(val = NmsVersion.v1_16) PIGLIN, | ||||||
|  |  | ||||||
|     @NmsAddedIn(val = NmsVersion.v1_14) PILLAGER, |     @NmsAddedIn(val = NmsVersion.v1_14) PILLAGER, | ||||||
|  |  | ||||||
| @@ -183,6 +188,8 @@ public enum DisguiseType { | |||||||
|  |  | ||||||
|     STRAY, |     STRAY, | ||||||
|  |  | ||||||
|  |     @NmsAddedIn(val = NmsVersion.v1_16) STRIDER, | ||||||
|  |  | ||||||
|     THROWN_EXP_BOTTLE(75), |     THROWN_EXP_BOTTLE(75), | ||||||
|  |  | ||||||
|     @NmsRemovedIn(val = NmsVersion.v1_14) TIPPED_ARROW(60), |     @NmsRemovedIn(val = NmsVersion.v1_14) TIPPED_ARROW(60), | ||||||
| @@ -215,11 +222,15 @@ public enum DisguiseType { | |||||||
|  |  | ||||||
|     WOLF, |     WOLF, | ||||||
|  |  | ||||||
|  |     @NmsAddedIn(val = NmsVersion.v1_16) ZOGLIN, | ||||||
|  |  | ||||||
|     ZOMBIE, |     ZOMBIE, | ||||||
|  |  | ||||||
|     ZOMBIE_HORSE, |     ZOMBIE_HORSE, | ||||||
|  |  | ||||||
|     ZOMBIE_VILLAGER; |     ZOMBIE_VILLAGER, | ||||||
|  |  | ||||||
|  |     @NmsAddedIn(val = NmsVersion.v1_16) ZOMBIFIED_PIGLIN; | ||||||
|  |  | ||||||
|     public static DisguiseType getType(Entity entity) { |     public static DisguiseType getType(Entity entity) { | ||||||
|         DisguiseType disguiseType = getType(entity.getType()); |         DisguiseType disguiseType = getType(entity.getType()); | ||||||
|   | |||||||
| @@ -115,6 +115,7 @@ public class MetaIndex<Y> { | |||||||
|      * The shooter of the arrow, no visible effect if set |      * The shooter of the arrow, no visible effect if set | ||||||
|      */ |      */ | ||||||
|     @NmsAddedIn(val = NmsVersion.v1_13) |     @NmsAddedIn(val = NmsVersion.v1_13) | ||||||
|  |     @NmsRemovedIn(val = NmsVersion.v1_16) | ||||||
|     public static MetaIndex<Optional<UUID>> ARROW_UUID = new MetaIndex<>(ArrowWatcher.class, 1, Optional.empty()); |     public static MetaIndex<Optional<UUID>> ARROW_UUID = new MetaIndex<>(ArrowWatcher.class, 1, Optional.empty()); | ||||||
|  |  | ||||||
|     @NmsAddedIn(val = NmsVersion.v1_14) |     @NmsAddedIn(val = NmsVersion.v1_14) | ||||||
| @@ -296,7 +297,10 @@ public class MetaIndex<Y> { | |||||||
|     @NmsAddedIn(val = NmsVersion.v1_14) |     @NmsAddedIn(val = NmsVersion.v1_14) | ||||||
|     public static MetaIndex<Boolean> FIREWORK_SHOT_AT_ANGLE = new MetaIndex<>(FireworkWatcher.class, 2, false); |     public static MetaIndex<Boolean> FIREWORK_SHOT_AT_ANGLE = new MetaIndex<>(FireworkWatcher.class, 2, false); | ||||||
|  |  | ||||||
|     public static MetaIndex<Integer> FISHING_HOOK_HOOKED = new MetaIndex<>(FishingHookWatcher.class, 0, 0); |     public static MetaIndex<Integer> FISHING_HOOK_HOOKED_ID = new MetaIndex<>(FishingHookWatcher.class, 0, 0); | ||||||
|  |  | ||||||
|  |     @NmsAddedIn(val = NmsVersion.v1_16) | ||||||
|  |     public static MetaIndex<Boolean> FISHING_HOOK_HOOKED = new MetaIndex<>(FishingHookWatcher.class, 1, false); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * The type of fox, its coloring |      * The type of fox, its coloring | ||||||
| @@ -328,6 +332,9 @@ public class MetaIndex<Y> { | |||||||
|      */ |      */ | ||||||
|     public static MetaIndex<Integer> GUARDIAN_TARGET = new MetaIndex<>(GuardianWatcher.class, 1, 0); |     public static MetaIndex<Integer> GUARDIAN_TARGET = new MetaIndex<>(GuardianWatcher.class, 1, 0); | ||||||
|  |  | ||||||
|  |     @NmsAddedIn(val = NmsVersion.v1_16) | ||||||
|  |     public static MetaIndex<Boolean> HOGLIN_SHAKING = new MetaIndex<>(HoglinWatcher.class, 0, false); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * If horse has chest, set for donkey |      * If horse has chest, set for donkey | ||||||
|      */ |      */ | ||||||
| @@ -495,6 +502,18 @@ public class MetaIndex<Y> { | |||||||
|      */ |      */ | ||||||
|     public static MetaIndex<Integer> PIG_BOOST = new MetaIndex<>(PigWatcher.class, 1, 0); |     public static MetaIndex<Integer> PIG_BOOST = new MetaIndex<>(PigWatcher.class, 1, 0); | ||||||
|  |  | ||||||
|  |     @NmsAddedIn(val = NmsVersion.v1_16) | ||||||
|  |     public static MetaIndex<Boolean> PIGLIN_BABY = new MetaIndex<>(PiglinWatcher.class, 0, false); | ||||||
|  |  | ||||||
|  |     @NmsAddedIn(val = NmsVersion.v1_16) | ||||||
|  |     public static MetaIndex<Boolean> PIGLIN_SHAKING = new MetaIndex<>(PiglinWatcher.class, 1, false); | ||||||
|  |  | ||||||
|  |     @NmsAddedIn(val = NmsVersion.v1_16) | ||||||
|  |     public static MetaIndex<Boolean> PIGLIN_CROSSBOW = new MetaIndex<>(PiglinWatcher.class, 2, false); | ||||||
|  |  | ||||||
|  |     @NmsAddedIn(val = NmsVersion.v1_16) | ||||||
|  |     public static MetaIndex<Boolean> PIGLIN_DANCING = new MetaIndex<>(PiglinWatcher.class, 3, false); | ||||||
|  |  | ||||||
|     @NmsAddedIn(val = NmsVersion.v1_14) |     @NmsAddedIn(val = NmsVersion.v1_14) | ||||||
|     public static MetaIndex<Boolean> PILLAGER_AIMING_BOW = new MetaIndex<>(PillagerWatcher.class, 0, false); |     public static MetaIndex<Boolean> PILLAGER_AIMING_BOW = new MetaIndex<>(PillagerWatcher.class, 0, false); | ||||||
|  |  | ||||||
| @@ -539,6 +558,15 @@ public class MetaIndex<Y> { | |||||||
|  |  | ||||||
|     public static MetaIndex<Byte> SNOWMAN_DERP = new MetaIndex<>(SnowmanWatcher.class, 0, (byte) 16); |     public static MetaIndex<Byte> SNOWMAN_DERP = new MetaIndex<>(SnowmanWatcher.class, 0, (byte) 16); | ||||||
|  |  | ||||||
|  |     @NmsAddedIn(val = NmsVersion.v1_16) | ||||||
|  |     public static MetaIndex<Integer> STRIDER_SADDLE_UNKNOWN = new MetaIndex<>(StriderWatcher.class, 0, 0); | ||||||
|  |  | ||||||
|  |     @NmsAddedIn(val = NmsVersion.v1_16) | ||||||
|  |     public static MetaIndex<Boolean> STRIDER_WARM = new MetaIndex<>(StriderWatcher.class, 1, false); | ||||||
|  |  | ||||||
|  |     @NmsAddedIn(val = NmsVersion.v1_16) | ||||||
|  |     public static MetaIndex<Boolean> STRIDER_SADDLED = new MetaIndex<>(StriderWatcher.class, 2, false); | ||||||
|  |  | ||||||
|     public static MetaIndex<Byte> SPIDER_CLIMB = new MetaIndex<>(SpiderWatcher.class, 0, (byte) 0); |     public static MetaIndex<Byte> SPIDER_CLIMB = new MetaIndex<>(SpiderWatcher.class, 0, (byte) 0); | ||||||
|  |  | ||||||
|     public static MetaIndex<ItemStack> SPLASH_POTION_ITEM = new MetaIndex<>(SplashPotionWatcher.class, 0, |     public static MetaIndex<ItemStack> SPLASH_POTION_ITEM = new MetaIndex<>(SplashPotionWatcher.class, 0, | ||||||
| @@ -610,6 +638,12 @@ public class MetaIndex<Y> { | |||||||
|  |  | ||||||
|     public static MetaIndex<Integer> WOLF_COLLAR = new MetaIndex<>(WolfWatcher.class, 2, 14); |     public static MetaIndex<Integer> WOLF_COLLAR = new MetaIndex<>(WolfWatcher.class, 2, 14); | ||||||
|  |  | ||||||
|  |     @NmsAddedIn(val = NmsVersion.v1_16) | ||||||
|  |     public static MetaIndex<Integer> WOLF_ANGER = new MetaIndex<>(WolfWatcher.class, 3, 0); | ||||||
|  |  | ||||||
|  |     @NmsAddedIn(val = NmsVersion.v1_16) | ||||||
|  |     public static MetaIndex<Boolean> ZOGLIN_BABY = new MetaIndex<>(ZoglinWatcher.class, 0, false); | ||||||
|  |  | ||||||
|     @NmsRemovedIn(val = NmsVersion.v1_14) |     @NmsRemovedIn(val = NmsVersion.v1_14) | ||||||
|     public static MetaIndex<Boolean> ZOMBIE_AGGRESSIVE = new MetaIndex<>(ZombieWatcher.class, 2, false); |     public static MetaIndex<Boolean> ZOMBIE_AGGRESSIVE = new MetaIndex<>(ZombieWatcher.class, 2, false); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -4,26 +4,31 @@ import me.libraryaddict.disguise.disguisetypes.Disguise; | |||||||
| import me.libraryaddict.disguise.disguisetypes.FlagWatcher; | import me.libraryaddict.disguise.disguisetypes.FlagWatcher; | ||||||
| import me.libraryaddict.disguise.disguisetypes.MetaIndex; | import me.libraryaddict.disguise.disguisetypes.MetaIndex; | ||||||
|  |  | ||||||
| public class FishingHookWatcher extends FlagWatcher | public class FishingHookWatcher extends FlagWatcher { | ||||||
| { |     public FishingHookWatcher(Disguise disguise) { | ||||||
|     public FishingHookWatcher(Disguise disguise) |  | ||||||
|     { |  | ||||||
|         super(disguise); |         super(disguise); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public void setHooked(int hookedId) |     public int getHookedId() { | ||||||
|     { |         int hooked = getData(MetaIndex.FISHING_HOOK_HOOKED_ID); | ||||||
|         setData(MetaIndex.FISHING_HOOK_HOOKED, hookedId + 1); |  | ||||||
|         sendData(MetaIndex.FISHING_HOOK_HOOKED); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     public int getHooked() |  | ||||||
|     { |  | ||||||
|         int hooked = getData(MetaIndex.FISHING_HOOK_HOOKED); |  | ||||||
|  |  | ||||||
|         if (hooked > 0) |         if (hooked > 0) | ||||||
|             hooked--; |             hooked--; | ||||||
|  |  | ||||||
|         return hooked; |         return hooked; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public void setHookedId(int hookedId) { | ||||||
|  |         setData(MetaIndex.FISHING_HOOK_HOOKED_ID, hookedId + 1); | ||||||
|  |         sendData(MetaIndex.FISHING_HOOK_HOOKED_ID); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public boolean isHooked() { | ||||||
|  |         return getData(MetaIndex.FISHING_HOOK_HOOKED); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setHooked(boolean hooked) { | ||||||
|  |         setData(MetaIndex.FISHING_HOOK_HOOKED, hooked); | ||||||
|  |         sendData(MetaIndex.FISHING_HOOK_HOOKED); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -0,0 +1,24 @@ | |||||||
|  | package me.libraryaddict.disguise.disguisetypes.watchers; | ||||||
|  |  | ||||||
|  | import me.libraryaddict.disguise.disguisetypes.Disguise; | ||||||
|  | import me.libraryaddict.disguise.disguisetypes.MetaIndex; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Created by libraryaddict on 25/06/2020. | ||||||
|  |  */ | ||||||
|  | public class HoglinWatcher extends AgeableWatcher { | ||||||
|  |     public HoglinWatcher(Disguise disguise) { | ||||||
|  |         super(disguise); | ||||||
|  |  | ||||||
|  |         setShaking(false); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public boolean isShaking() { | ||||||
|  |         return !getData(MetaIndex.HOGLIN_SHAKING); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setShaking(boolean shaking) { | ||||||
|  |         setData(MetaIndex.HOGLIN_SHAKING, !shaking); | ||||||
|  |         sendData(MetaIndex.HOGLIN_SHAKING); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,51 @@ | |||||||
|  | package me.libraryaddict.disguise.disguisetypes.watchers; | ||||||
|  |  | ||||||
|  | import me.libraryaddict.disguise.disguisetypes.Disguise; | ||||||
|  | import me.libraryaddict.disguise.disguisetypes.MetaIndex; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Created by libraryaddict on 25/06/2020. | ||||||
|  |  */ | ||||||
|  | public class PiglinWatcher extends InsentientWatcher { | ||||||
|  |     public PiglinWatcher(Disguise disguise) { | ||||||
|  |         super(disguise); | ||||||
|  |  | ||||||
|  |         setShaking(false); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public boolean isBaby() { | ||||||
|  |         return getData(MetaIndex.PIGLIN_BABY); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setBaby(boolean baby) { | ||||||
|  |         setData(MetaIndex.PIGLIN_BABY, baby); | ||||||
|  |         sendData(MetaIndex.PIGLIN_BABY); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public boolean isDancing() { | ||||||
|  |         return getData(MetaIndex.PIGLIN_DANCING); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setDancing(boolean dancing) { | ||||||
|  |         setData(MetaIndex.PIGLIN_DANCING, dancing); | ||||||
|  |         sendData(MetaIndex.PIGLIN_DANCING); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public boolean isUsingCrossbow() { | ||||||
|  |         return getData(MetaIndex.PIGLIN_CROSSBOW); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setUsingCrossbow(boolean crossbow) { | ||||||
|  |         setData(MetaIndex.PIGLIN_CROSSBOW, crossbow); | ||||||
|  |         sendData(MetaIndex.PIGLIN_CROSSBOW); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public boolean isShaking() { | ||||||
|  |         return !getData(MetaIndex.PIGLIN_SHAKING); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setShaking(boolean shaking) { | ||||||
|  |         setData(MetaIndex.PIGLIN_SHAKING, !shaking); | ||||||
|  |         sendData(MetaIndex.PIGLIN_SHAKING); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,22 @@ | |||||||
|  | package me.libraryaddict.disguise.disguisetypes.watchers; | ||||||
|  |  | ||||||
|  | import me.libraryaddict.disguise.disguisetypes.Disguise; | ||||||
|  | import me.libraryaddict.disguise.disguisetypes.MetaIndex; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Created by libraryaddict on 25/06/2020. | ||||||
|  |  */ | ||||||
|  | public class StriderWatcher extends AgeableWatcher { | ||||||
|  |     public StriderWatcher(Disguise disguise) { | ||||||
|  |         super(disguise); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public boolean isSaddled() { | ||||||
|  |         return getData(MetaIndex.STRIDER_SADDLED); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setSaddled(boolean saddled) { | ||||||
|  |         setData(MetaIndex.STRIDER_SADDLED, saddled); | ||||||
|  |         sendData(MetaIndex.STRIDER_SADDLED); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -52,6 +52,15 @@ public class WolfWatcher extends TameableWatcher { | |||||||
|         setTameableFlag(2, angry); |         setTameableFlag(2, angry); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public int getAnger() { | ||||||
|  |         return getData(MetaIndex.WOLF_ANGER); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setAnger(int anger) { | ||||||
|  |         setData(MetaIndex.WOLF_ANGER, anger); | ||||||
|  |         sendData(MetaIndex.WOLF_ANGER); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Used for tail rotation. |      * Used for tail rotation. | ||||||
|      * |      * | ||||||
|   | |||||||
| @@ -0,0 +1,22 @@ | |||||||
|  | package me.libraryaddict.disguise.disguisetypes.watchers; | ||||||
|  |  | ||||||
|  | import me.libraryaddict.disguise.disguisetypes.Disguise; | ||||||
|  | import me.libraryaddict.disguise.disguisetypes.MetaIndex; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * Created by libraryaddict on 25/06/2020. | ||||||
|  |  */ | ||||||
|  | public class ZoglinWatcher extends InsentientWatcher { | ||||||
|  |     public ZoglinWatcher(Disguise disguise) { | ||||||
|  |         super(disguise); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public boolean isBaby() { | ||||||
|  |         return getData(MetaIndex.ZOGLIN_BABY); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setBaby(boolean baby) { | ||||||
|  |         setData(MetaIndex.ZOGLIN_BABY, baby); | ||||||
|  |         sendData(MetaIndex.ZOGLIN_BABY); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -13,6 +13,7 @@ import com.google.gson.Gson; | |||||||
| import com.google.gson.GsonBuilder; | import com.google.gson.GsonBuilder; | ||||||
| import com.google.gson.JsonSyntaxException; | import com.google.gson.JsonSyntaxException; | ||||||
| import com.mojang.authlib.properties.PropertyMap; | import com.mojang.authlib.properties.PropertyMap; | ||||||
|  | import com.mojang.datafixers.util.Pair; | ||||||
| import lombok.Getter; | import lombok.Getter; | ||||||
| import lombok.Setter; | import lombok.Setter; | ||||||
| import me.libraryaddict.disguise.DisguiseAPI; | import me.libraryaddict.disguise.DisguiseAPI; | ||||||
| @@ -1988,36 +1989,25 @@ public class DisguiseUtilities { | |||||||
|                                 .createPacket(0, player.getPassenger(), player)); |                                 .createPacket(0, player.getPassenger(), player)); | ||||||
|             } |             } | ||||||
|  |  | ||||||
|             sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, |             if (NmsVersion.v1_16.isSupported()) { | ||||||
|                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), |                 List<Pair<Object, Object>> list = new ArrayList<>(); | ||||||
|                     ReflectionManager.getNmsItem(new ItemStack(Material.STONE))) |  | ||||||
|                     .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), |                 for (EquipmentSlot slot : EquipmentSlot.values()) { | ||||||
|                             ReflectionManager.getNmsItem(player.getInventory().getHelmet()))); |                     list.add(Pair.of(ReflectionManager.createEnumItemSlot(slot), | ||||||
|             sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, |                             ReflectionManager.getNmsItem(player.getInventory().getItem(slot)))); | ||||||
|                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), |                 } | ||||||
|                     ReflectionManager.getNmsItem(new ItemStack(Material.STONE))) |  | ||||||
|                     .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(EquipmentSlot.CHEST), |                 sendSelfPacket(player, | ||||||
|                             ReflectionManager.getNmsItem(player.getInventory().getChestplate()))); |                         manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, list).createPacket(0, list)); | ||||||
|             sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, |             } else { | ||||||
|                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), |                 for (EquipmentSlot slot : EquipmentSlot.values()) { | ||||||
|                     ReflectionManager.getNmsItem(new ItemStack(Material.STONE))) |                     sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, | ||||||
|                     .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(EquipmentSlot.LEGS), |                             ReflectionManager.createEnumItemSlot(slot), | ||||||
|                             ReflectionManager.getNmsItem(player.getInventory().getLeggings()))); |                             ReflectionManager.getNmsItem(player.getInventory().getItem(slot))) | ||||||
|             sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, |                             .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(slot), | ||||||
|                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), |                                     ReflectionManager.getNmsItem(player.getInventory().getItem(slot)))); | ||||||
|                     ReflectionManager.getNmsItem(new ItemStack(Material.STONE))) |                 } | ||||||
|                     .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(EquipmentSlot.FEET), |             } | ||||||
|                             ReflectionManager.getNmsItem(player.getInventory().getBoots()))); |  | ||||||
|             sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, |  | ||||||
|                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), |  | ||||||
|                     ReflectionManager.getNmsItem(new ItemStack(Material.STONE))) |  | ||||||
|                     .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(EquipmentSlot.HAND), |  | ||||||
|                             ReflectionManager.getNmsItem(player.getInventory().getItemInMainHand()))); |  | ||||||
|             sendSelfPacket(player, manager.createPacketConstructor(Server.ENTITY_EQUIPMENT, 0, |  | ||||||
|                     ReflectionManager.createEnumItemSlot(EquipmentSlot.HEAD), |  | ||||||
|                     ReflectionManager.getNmsItem(new ItemStack(Material.STONE))) |  | ||||||
|                     .createPacket(player.getEntityId(), ReflectionManager.createEnumItemSlot(EquipmentSlot.OFF_HAND), |  | ||||||
|                             ReflectionManager.getNmsItem(player.getInventory().getItemInOffHand()))); |  | ||||||
|  |  | ||||||
|             Location loc = player.getLocation(); |             Location loc = player.getLocation(); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -50,7 +50,8 @@ public class PacketHandlerAttributes implements IPacketHandler { | |||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         if (disguise.isMiscDisguise()) { |         // Skip if its 1.16, PL can't handle it atm | ||||||
|  |         if (disguise.isMiscDisguise() || NmsVersion.v1_16.isSupported()) { | ||||||
|             return; |             return; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -4,12 +4,14 @@ import com.comphenix.protocol.PacketType; | |||||||
| import com.comphenix.protocol.events.PacketContainer; | import com.comphenix.protocol.events.PacketContainer; | ||||||
| import com.comphenix.protocol.wrappers.WrappedDataWatcher; | import com.comphenix.protocol.wrappers.WrappedDataWatcher; | ||||||
| import com.comphenix.protocol.wrappers.WrappedWatchableObject; | import com.comphenix.protocol.wrappers.WrappedWatchableObject; | ||||||
|  | import com.mojang.datafixers.util.Pair; | ||||||
| import me.libraryaddict.disguise.DisguiseConfig; | import me.libraryaddict.disguise.DisguiseConfig; | ||||||
| import me.libraryaddict.disguise.disguisetypes.Disguise; | import me.libraryaddict.disguise.disguisetypes.Disguise; | ||||||
| import me.libraryaddict.disguise.disguisetypes.MetaIndex; | import me.libraryaddict.disguise.disguisetypes.MetaIndex; | ||||||
| import me.libraryaddict.disguise.utilities.packets.IPacketHandler; | import me.libraryaddict.disguise.utilities.packets.IPacketHandler; | ||||||
| import me.libraryaddict.disguise.utilities.packets.LibsPackets; | import me.libraryaddict.disguise.utilities.packets.LibsPackets; | ||||||
| import me.libraryaddict.disguise.utilities.packets.PacketsHandler; | import me.libraryaddict.disguise.utilities.packets.PacketsHandler; | ||||||
|  | import me.libraryaddict.disguise.utilities.reflection.NmsVersion; | ||||||
| import me.libraryaddict.disguise.utilities.reflection.ReflectionManager; | import me.libraryaddict.disguise.utilities.reflection.ReflectionManager; | ||||||
| import org.bukkit.Material; | import org.bukkit.Material; | ||||||
| import org.bukkit.entity.Entity; | import org.bukkit.entity.Entity; | ||||||
| @@ -38,6 +40,107 @@ public class PacketHandlerEquipment implements IPacketHandler { | |||||||
|     @Override |     @Override | ||||||
|     public void handle(Disguise disguise, PacketContainer sentPacket, LibsPackets packets, Player observer, |     public void handle(Disguise disguise, PacketContainer sentPacket, LibsPackets packets, Player observer, | ||||||
|             Entity entity) { |             Entity entity) { | ||||||
|  |         if (NmsVersion.v1_16.isSupported()) { | ||||||
|  |             handleNew(disguise, sentPacket, packets, observer, entity); | ||||||
|  |         } else { | ||||||
|  |             handleOld(disguise, sentPacket, packets, observer, entity); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void handleNew(Disguise disguise, PacketContainer sentPacket, LibsPackets packets, Player observer, | ||||||
|  |             Entity entity) { | ||||||
|  |         // Else if the disguise is updating equipment | ||||||
|  |  | ||||||
|  |         List<Pair<Object, Object>> slots = (List<Pair<Object, Object>>) packets.getPackets().get(0).getModifier() | ||||||
|  |                 .read(1); | ||||||
|  |         List<Pair<Object, Object>> newSlots = new ArrayList<>(); | ||||||
|  |         boolean constructed = false; | ||||||
|  |  | ||||||
|  |         for (Pair<Object, Object> pair : slots) { | ||||||
|  |             EquipmentSlot slot = ReflectionManager.createEquipmentSlot(pair.getFirst()); | ||||||
|  |  | ||||||
|  |             org.bukkit.inventory.ItemStack itemStack = disguise.getWatcher().getItemStack(slot); | ||||||
|  |  | ||||||
|  |             if (itemStack != null) { | ||||||
|  |                 if (!constructed) { | ||||||
|  |                     constructed = true; | ||||||
|  |  | ||||||
|  |                     if (packets.getPackets().size() > 1) { | ||||||
|  |                         packets.getPackets().remove(1); | ||||||
|  |                     } else { | ||||||
|  |                         packets.clear(); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     PacketContainer equipPacket = sentPacket.shallowClone(); | ||||||
|  |  | ||||||
|  |                     packets.getPackets().add(1, equipPacket); | ||||||
|  |  | ||||||
|  |                     equipPacket.getModifier().write(1, newSlots); | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 newSlots.add(Pair.of(pair.getFirst(), | ||||||
|  |                         ReflectionManager.getNmsItem(itemStack.getType() == Material.AIR ? null : itemStack))); | ||||||
|  |             } else { | ||||||
|  |                 newSlots.add(pair); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             if (disguise.getWatcher().isRightClicking() && slot == EquipmentSlot.HAND) { | ||||||
|  |                 ItemStack heldItem = packets.getPackets().get(0).getItemModifier().read(0); | ||||||
|  |  | ||||||
|  |                 if (heldItem != null && heldItem.getType() != Material.AIR) { | ||||||
|  |                     // Convert the datawatcher | ||||||
|  |                     List<WrappedWatchableObject> list = new ArrayList<>(); | ||||||
|  |  | ||||||
|  |                     if (DisguiseConfig.isMetaPacketsEnabled()) { | ||||||
|  |                         WrappedWatchableObject watch = ReflectionManager.createWatchable(MetaIndex.ENTITY_META, | ||||||
|  |                                 WrappedDataWatcher.getEntityWatcher(entity).getByte(0)); | ||||||
|  |  | ||||||
|  |                         if (watch != null) | ||||||
|  |                             list.add(watch); | ||||||
|  |  | ||||||
|  |                         list = disguise.getWatcher().convert(list); | ||||||
|  |                     } else { | ||||||
|  |                         for (WrappedWatchableObject obj : disguise.getWatcher().getWatchableObjects()) { | ||||||
|  |                             if (obj.getIndex() == 0) { | ||||||
|  |                                 list.add(obj); | ||||||
|  |                                 break; | ||||||
|  |                             } | ||||||
|  |                         } | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     // Construct the packets to return | ||||||
|  |                     PacketContainer packetBlock = new PacketContainer(PacketType.Play.Server.ENTITY_METADATA); | ||||||
|  |  | ||||||
|  |                     packetBlock.getModifier().write(0, entity.getEntityId()); | ||||||
|  |                     packetBlock.getWatchableCollectionModifier().write(0, list); | ||||||
|  |  | ||||||
|  |                     PacketContainer packetUnblock = packetBlock.deepClone(); | ||||||
|  |                     // Make a packet to send the 'unblock' | ||||||
|  |                     for (WrappedWatchableObject watcher : packetUnblock.getWatchableCollectionModifier().read(0)) { | ||||||
|  |                         watcher.setValue((byte) ((byte) watcher.getValue() & ~(1 << 4))); | ||||||
|  |                     } | ||||||
|  |  | ||||||
|  |                     // Send the unblock before the itemstack change so that the 2nd metadata packet works. Why? | ||||||
|  |                     // Scheduler | ||||||
|  |                     // delay. | ||||||
|  |  | ||||||
|  |                     PacketContainer packet1 = packets.getPackets().get(0); | ||||||
|  |  | ||||||
|  |                     packets.clear(); | ||||||
|  |  | ||||||
|  |                     packets.addPacket(packetUnblock); | ||||||
|  |                     packets.addPacket(packet1); | ||||||
|  |                     packets.addPacket(packetBlock); | ||||||
|  |                     // Silly mojang made the right clicking datawatcher value only valid for one use. So I have | ||||||
|  |                     // to reset | ||||||
|  |                     // it. | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void handleOld(Disguise disguise, PacketContainer sentPacket, LibsPackets packets, Player observer, | ||||||
|  |             Entity entity) { | ||||||
|         // Else if the disguise is updating equipment |         // Else if the disguise is updating equipment | ||||||
|  |  | ||||||
|         EquipmentSlot slot = ReflectionManager.createEquipmentSlot(packets.getPackets().get(0).getModifier().read(1)); |         EquipmentSlot slot = ReflectionManager.createEquipmentSlot(packets.getPackets().get(0).getModifier().read(1)); | ||||||
|   | |||||||
| @@ -74,8 +74,7 @@ public class PacketHandlerSpawn implements IPacketHandler { | |||||||
|         Disguise disguise = packets.getDisguise(); |         Disguise disguise = packets.getDisguise(); | ||||||
|  |  | ||||||
|         if (DisguiseConfig.isMiscDisguisesForLivingEnabled()) { |         if (DisguiseConfig.isMiscDisguisesForLivingEnabled()) { | ||||||
|             if (disguise.getWatcher() instanceof LivingWatcher) { |             if (disguise.getWatcher() instanceof LivingWatcher && !NmsVersion.v1_16.isSupported()) { | ||||||
|  |  | ||||||
|                 ArrayList<WrappedAttribute> attributes = new ArrayList<>(); |                 ArrayList<WrappedAttribute> attributes = new ArrayList<>(); | ||||||
|  |  | ||||||
|                 WrappedAttribute.Builder builder = WrappedAttribute.newBuilder().attributeKey("generic.maxHealth"); |                 WrappedAttribute.Builder builder = WrappedAttribute.newBuilder().attributeKey("generic.maxHealth"); | ||||||
|   | |||||||
| @@ -14,7 +14,6 @@ import io.netty.buffer.Unpooled; | |||||||
| import io.netty.handler.codec.DecoderException; | import io.netty.handler.codec.DecoderException; | ||||||
| import me.libraryaddict.disguise.LibsDisguises; | import me.libraryaddict.disguise.LibsDisguises; | ||||||
| import me.libraryaddict.disguise.utilities.modded.ModdedManager; | import me.libraryaddict.disguise.utilities.modded.ModdedManager; | ||||||
| import net.minecraft.server.v1_15_R1.PacketDataSerializer; |  | ||||||
| import org.bukkit.entity.Player; | import org.bukkit.entity.Player; | ||||||
|  |  | ||||||
| import java.lang.reflect.InvocationTargetException; | import java.lang.reflect.InvocationTargetException; | ||||||
| @@ -141,15 +140,16 @@ public class PacketListenerModdedClient extends PacketAdapter { | |||||||
|         PacketContainer packet1 = new PacketContainer(PacketType.Login.Server.CUSTOM_PAYLOAD); |         PacketContainer packet1 = new PacketContainer(PacketType.Login.Server.CUSTOM_PAYLOAD); | ||||||
|         packet1.getIntegers().write(0, packetId1); |         packet1.getIntegers().write(0, packetId1); | ||||||
|         packet1.getMinecraftKeys().write(0, new com.comphenix.protocol.wrappers.MinecraftKey("fml", "handshake")); |         packet1.getMinecraftKeys().write(0, new com.comphenix.protocol.wrappers.MinecraftKey("fml", "handshake")); | ||||||
|         packet1.getModifier() |        // packet1.getModifier() | ||||||
|                 .write(2, new PacketDataSerializer(Unpooled.wrappedBuffer(ModdedManager.getFmlHandshake()))); |         //        .write(2, new PacketDataSerializer(Unpooled.wrappedBuffer(ModdedManager.getFmlHandshake()))); | ||||||
|  |  | ||||||
|         PacketContainer packet2 = new PacketContainer(PacketType.Login.Server.CUSTOM_PAYLOAD); |         PacketContainer packet2 = new PacketContainer(PacketType.Login.Server.CUSTOM_PAYLOAD); | ||||||
|         packet2.getIntegers().write(0, packetId2); |         packet2.getIntegers().write(0, packetId2); | ||||||
|         packet2.getMinecraftKeys().write(0, new MinecraftKey("fml", "handshake")); |         packet2.getMinecraftKeys().write(0, new MinecraftKey("fml", "handshake")); | ||||||
|         packet2.getModifier() |        // packet2.getModifier() | ||||||
|                 .write(2, new PacketDataSerializer(Unpooled.wrappedBuffer(ModdedManager.getFmlRegistries()))); |         //        .write(2, new PacketDataSerializer(Unpooled.wrappedBuffer(ModdedManager.getFmlRegistries()))); | ||||||
|  |  | ||||||
|  |         //TODO | ||||||
|         try { |         try { | ||||||
|             ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), packet1); |             ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), packet1); | ||||||
|             ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), packet2); |             ProtocolLibrary.getProtocolManager().sendServerPacket(event.getPlayer(), packet2); | ||||||
|   | |||||||
| @@ -7,7 +7,8 @@ public enum NmsVersion { | |||||||
|     v1_12, |     v1_12, | ||||||
|     v1_13, |     v1_13, | ||||||
|     v1_14, |     v1_14, | ||||||
|     v1_15; |     v1_15, | ||||||
|  |     v1_16; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * If this nms version isn't newer than the running version |      * If this nms version isn't newer than the running version | ||||||
|   | |||||||
| @@ -100,10 +100,15 @@ public class ReflectionManager { | |||||||
|         pingField = getNmsField("EntityPlayer", "ping"); |         pingField = getNmsField("EntityPlayer", "ping"); | ||||||
|  |  | ||||||
|         if (NmsVersion.v1_14.isSupported()) { |         if (NmsVersion.v1_14.isSupported()) { | ||||||
|             chunkProviderField = getNmsField("World", "chunkProvider"); |  | ||||||
|             chunkMapField = getNmsField("ChunkProviderServer", "playerChunkMap"); |             chunkMapField = getNmsField("ChunkProviderServer", "playerChunkMap"); | ||||||
|             trackedEntitiesField = getNmsField("PlayerChunkMap", "trackedEntities"); |             trackedEntitiesField = getNmsField("PlayerChunkMap", "trackedEntities"); | ||||||
|             entityTrackerField = getNmsField("PlayerChunkMap$EntityTracker", "trackerEntry"); |             entityTrackerField = getNmsField("PlayerChunkMap$EntityTracker", "trackerEntry"); | ||||||
|  |  | ||||||
|  |             if (NmsVersion.v1_16.isSupported()) { | ||||||
|  |                 chunkProviderField = getNmsField("WorldServer", "chunkProvider"); | ||||||
|  |             } else { | ||||||
|  |                 chunkProviderField = getNmsField("World", "chunkProvider"); | ||||||
|  |             } | ||||||
|         } else { |         } else { | ||||||
|             trackerField = getNmsField("WorldServer", "tracker"); |             trackerField = getNmsField("WorldServer", "tracker"); | ||||||
|             entitiesField = getNmsField("EntityTracker", "trackedEntities"); |             entitiesField = getNmsField("EntityTracker", "trackedEntities"); | ||||||
| @@ -1348,8 +1353,14 @@ public class ReflectionManager { | |||||||
|  |  | ||||||
|             Constructor c = getNmsClass("EntityTypes").getConstructors()[0]; |             Constructor c = getNmsClass("EntityTypes").getConstructors()[0]; | ||||||
|  |  | ||||||
|  |             Object entityType; | ||||||
|  |  | ||||||
|             // UGLY :D |             // UGLY :D | ||||||
|             Object entityType = c.newInstance(null, null, false, false, false, false, null); |             if (NmsVersion.v1_16.isSupported()) { | ||||||
|  |                 entityType = c.newInstance(null, null, false, false, false, false, null, null, 0, 0); | ||||||
|  |             } else { | ||||||
|  |                 entityType = c.newInstance(null, null, false, false, false, false, null); | ||||||
|  |             } | ||||||
|  |  | ||||||
|             for (Field f : entityType.getClass().getDeclaredFields()) { |             for (Field f : entityType.getClass().getDeclaredFields()) { | ||||||
|                 if (f.getType() != String.class) { |                 if (f.getType() != String.class) { | ||||||
| @@ -1564,6 +1575,7 @@ public class ReflectionManager { | |||||||
|                 case PIG_ZOMBIE: |                 case PIG_ZOMBIE: | ||||||
|                 case HUSK: |                 case HUSK: | ||||||
|                 case DROWNED: |                 case DROWNED: | ||||||
|  |                 case ZOMBIFIED_PIGLIN: | ||||||
|                     watcherClass = ZombieWatcher.class; |                     watcherClass = ZombieWatcher.class; | ||||||
|                     break; |                     break; | ||||||
|                 case MAGMA_CUBE: |                 case MAGMA_CUBE: | ||||||
| @@ -1735,6 +1747,9 @@ public class ReflectionManager { | |||||||
|                 case TRADER_LLAMA: |                 case TRADER_LLAMA: | ||||||
|                     nmsEntityName = "LLamaTrader"; // Interesting capitalization |                     nmsEntityName = "LLamaTrader"; // Interesting capitalization | ||||||
|                     break; |                     break; | ||||||
|  |                 case ZOMBIFIED_PIGLIN: | ||||||
|  |                     nmsEntityName = "PigZombie"; | ||||||
|  |                     break; | ||||||
|                 default: |                 default: | ||||||
|                     break; |                     break; | ||||||
|             } |             } | ||||||
|   | |||||||
| @@ -91,6 +91,9 @@ public enum DisguiseSoundEnums { | |||||||
|             new Sound[]{Sound.ENTITY_GUARDIAN_DEATH, Sound.ENTITY_GUARDIAN_DEATH_LAND}, |             new Sound[]{Sound.ENTITY_GUARDIAN_DEATH, Sound.ENTITY_GUARDIAN_DEATH_LAND}, | ||||||
|             new Sound[]{Sound.ENTITY_GUARDIAN_AMBIENT, Sound.ENTITY_GUARDIAN_AMBIENT_LAND}, Sound.ENTITY_GUARDIAN_FLOP), |             new Sound[]{Sound.ENTITY_GUARDIAN_AMBIENT, Sound.ENTITY_GUARDIAN_AMBIENT_LAND}, Sound.ENTITY_GUARDIAN_FLOP), | ||||||
|  |  | ||||||
|  |     HOGLIN(Sound.ENTITY_HOGLIN_HURT, Sound.ENTITY_HOGLIN_STEP, Sound.ENTITY_HOGLIN_DEATH, Sound.ENTITY_HOGLIN_AMBIENT, | ||||||
|  |             Sound.ENTITY_HOGLIN_CONVERTED_TO_ZOMBIFIED, Sound.ENTITY_HOGLIN_ANGRY, Sound.ENTITY_HOGLIN_RETREAT), | ||||||
|  |  | ||||||
|     HORSE(Sound.ENTITY_HORSE_HURT, new Sound[]{Sound.ENTITY_HORSE_STEP, Sound.ENTITY_HORSE_STEP_WOOD}, |     HORSE(Sound.ENTITY_HORSE_HURT, new Sound[]{Sound.ENTITY_HORSE_STEP, Sound.ENTITY_HORSE_STEP_WOOD}, | ||||||
|             Sound.ENTITY_HORSE_DEATH, Sound.ENTITY_HORSE_AMBIENT, Sound.ENTITY_HORSE_GALLOP, Sound.ENTITY_HORSE_SADDLE, |             Sound.ENTITY_HORSE_DEATH, Sound.ENTITY_HORSE_AMBIENT, Sound.ENTITY_HORSE_GALLOP, Sound.ENTITY_HORSE_SADDLE, | ||||||
|             Sound.ENTITY_DONKEY_ANGRY, Sound.ENTITY_HORSE_ARMOR, Sound.ENTITY_HORSE_LAND, Sound.ENTITY_HORSE_JUMP, |             Sound.ENTITY_DONKEY_ANGRY, Sound.ENTITY_HORSE_ARMOR, Sound.ENTITY_HORSE_LAND, Sound.ENTITY_HORSE_JUMP, | ||||||
| @@ -129,8 +132,12 @@ public enum DisguiseSoundEnums { | |||||||
|  |  | ||||||
|     PIG(Sound.ENTITY_PIG_HURT, Sound.ENTITY_PIG_STEP, Sound.ENTITY_PIG_DEATH, Sound.ENTITY_PIG_AMBIENT), |     PIG(Sound.ENTITY_PIG_HURT, Sound.ENTITY_PIG_STEP, Sound.ENTITY_PIG_DEATH, Sound.ENTITY_PIG_AMBIENT), | ||||||
|  |  | ||||||
|     PIG_ZOMBIE(Sound.ENTITY_ZOMBIE_PIGMAN_HURT, null, Sound.ENTITY_ZOMBIE_PIGMAN_DEATH, |     PIGLIN(Sound.ENTITY_PIGLIN_HURT, Sound.ENTITY_PIGLIN_STEP, Sound.ENTITY_PIGLIN_DEATH, Sound.ENTITY_PIGLIN_AMBIENT, | ||||||
|             Sound.ENTITY_ZOMBIE_PIGMAN_AMBIENT, Sound.ENTITY_ZOMBIE_PIGMAN_ANGRY), |             Sound.ENTITY_PIGLIN_RETREAT, Sound.ENTITY_PIGLIN_JEALOUS, Sound.ENTITY_PIGLIN_ADMIRING_ITEM, | ||||||
|  |             Sound.ENTITY_PIGLIN_CELEBRATE), | ||||||
|  |  | ||||||
|  |     PIG_ZOMBIE("ENTITY_ZOMBIE_PIGMAN_HURT", null, "ENTITY_ZOMBIE_PIGMAN_DEATH", "ENTITY_ZOMBIE_PIGMAN_AMBIENT", | ||||||
|  |             "ENTITY_ZOMBIE_PIGMAN_ANGRY"), | ||||||
|  |  | ||||||
|     PLAYER(Sound.ENTITY_PLAYER_HURT, Arrays.stream(Sound.values()) |     PLAYER(Sound.ENTITY_PLAYER_HURT, Arrays.stream(Sound.values()) | ||||||
|             .filter(sound -> sound.name().startsWith("BLOCK_") && sound.name().endsWith("_STEP")).toArray(Sound[]::new), |             .filter(sound -> sound.name().startsWith("BLOCK_") && sound.name().endsWith("_STEP")).toArray(Sound[]::new), | ||||||
| @@ -185,15 +192,21 @@ public enum DisguiseSoundEnums { | |||||||
|  |  | ||||||
|     STRAY(Sound.ENTITY_STRAY_HURT, Sound.ENTITY_STRAY_STEP, Sound.ENTITY_STRAY_DEATH, Sound.ENTITY_STRAY_AMBIENT), |     STRAY(Sound.ENTITY_STRAY_HURT, Sound.ENTITY_STRAY_STEP, Sound.ENTITY_STRAY_DEATH, Sound.ENTITY_STRAY_AMBIENT), | ||||||
|  |  | ||||||
|  |     STRIDER(Sound.ENTITY_STRIDER_HURT, new Sound[]{Sound.ENTITY_STRIDER_STEP, Sound.ENTITY_STRIDER_STEP_LAVA}, | ||||||
|  |             Sound.ENTITY_STRIDER_DEATH, Sound.ENTITY_STRIDER_AMBIENT, Sound.ENTITY_STRIDER_EAT, | ||||||
|  |             Sound.ENTITY_STRIDER_HAPPY, Sound.ENTITY_STRIDER_RETREAT, Sound.ENTITY_STRIDER_SADDLE), | ||||||
|  |  | ||||||
|     SQUID(Sound.ENTITY_SQUID_HURT, null, Sound.ENTITY_SQUID_DEATH, Sound.ENTITY_SQUID_AMBIENT, |     SQUID(Sound.ENTITY_SQUID_HURT, null, Sound.ENTITY_SQUID_DEATH, Sound.ENTITY_SQUID_AMBIENT, | ||||||
|             Sound.ENTITY_SQUID_SQUIRT, Sound.ENTITY_FISH_SWIM), |             Sound.ENTITY_SQUID_SQUIRT, Sound.ENTITY_FISH_SWIM), | ||||||
|  |  | ||||||
|     TROPICAL_FISH(Sound.ENTITY_TROPICAL_FISH_HURT, null, Sound.ENTITY_TROPICAL_FISH_DEATH, |     TROPICAL_FISH(Sound.ENTITY_TROPICAL_FISH_HURT, null, Sound.ENTITY_TROPICAL_FISH_DEATH, | ||||||
|             Sound.ENTITY_TROPICAL_FISH_AMBIENT, Sound.ENTITY_TROPICAL_FISH_FLOP, Sound.ENTITY_FISH_SWIM), |             Sound.ENTITY_TROPICAL_FISH_AMBIENT, Sound.ENTITY_TROPICAL_FISH_FLOP, Sound.ENTITY_FISH_SWIM), | ||||||
|  |  | ||||||
|     TURTLE(new Sound[]{Sound.ENTITY_TURTLE_HURT, Sound.ENTITY_TURTLE_HURT_BABY}, |     TURTLE(new Sound[]{Sound.ENTITY_TURTLE_HURT, Sound.ENTITY_TURTLE_HURT_BABY}, new Sound[] | ||||||
|             new Sound[]{Sound.ENTITY_TURTLE_SHAMBLE, Sound.ENTITY_TURTLE_SHAMBLE_BABY}, |  | ||||||
|             new Sound[]{Sound.ENTITY_TURTLE_DEATH, Sound.ENTITY_TURTLE_DEATH_BABY}, Sound.ENTITY_TURTLE_AMBIENT_LAND, |             {Sound.ENTITY_TURTLE_SHAMBLE, Sound.ENTITY_TURTLE_SHAMBLE_BABY}, new Sound[] | ||||||
|  |  | ||||||
|  |             {Sound.ENTITY_TURTLE_DEATH, Sound.ENTITY_TURTLE_DEATH_BABY}, Sound.ENTITY_TURTLE_AMBIENT_LAND, | ||||||
|             Sound.ENTITY_TURTLE_LAY_EGG), |             Sound.ENTITY_TURTLE_LAY_EGG), | ||||||
|  |  | ||||||
|     VEX(Sound.ENTITY_VEX_HURT, null, Sound.ENTITY_VEX_DEATH, Sound.ENTITY_VEX_AMBIENT, Sound.ENTITY_VEX_CHARGE), |     VEX(Sound.ENTITY_VEX_HURT, null, Sound.ENTITY_VEX_DEATH, Sound.ENTITY_VEX_AMBIENT, Sound.ENTITY_VEX_CHARGE), | ||||||
| @@ -216,6 +229,9 @@ public enum DisguiseSoundEnums { | |||||||
|             Sound.ENTITY_WOLF_GROWL, Sound.ENTITY_WOLF_PANT, Sound.ENTITY_WOLF_HOWL, Sound.ENTITY_WOLF_SHAKE, |             Sound.ENTITY_WOLF_GROWL, Sound.ENTITY_WOLF_PANT, Sound.ENTITY_WOLF_HOWL, Sound.ENTITY_WOLF_SHAKE, | ||||||
|             Sound.ENTITY_WOLF_WHINE), |             Sound.ENTITY_WOLF_WHINE), | ||||||
|  |  | ||||||
|  |     ZOGLIN(Sound.ENTITY_ZOGLIN_HURT, Sound.ENTITY_ZOGLIN_STEP, Sound.ENTITY_ZOGLIN_DEATH, Sound.ENTITY_ZOGLIN_AMBIENT, | ||||||
|  |             Sound.ENTITY_ZOGLIN_ANGRY, Sound.ENTITY_ZOGLIN_ATTACK), | ||||||
|  |  | ||||||
|     ZOMBIE(Sound.ENTITY_ZOMBIE_HURT, Sound.ENTITY_ZOMBIE_STEP, Sound.ENTITY_ZOMBIE_DEATH, Sound.ENTITY_ZOMBIE_AMBIENT, |     ZOMBIE(Sound.ENTITY_ZOMBIE_HURT, Sound.ENTITY_ZOMBIE_STEP, Sound.ENTITY_ZOMBIE_DEATH, Sound.ENTITY_ZOMBIE_AMBIENT, | ||||||
|             Sound.ENTITY_ZOMBIE_INFECT, Sound.ENTITY_ZOMBIE_ATTACK_WOODEN_DOOR, Sound.ENTITY_ZOMBIE_BREAK_WOODEN_DOOR, |             Sound.ENTITY_ZOMBIE_INFECT, Sound.ENTITY_ZOMBIE_ATTACK_WOODEN_DOOR, Sound.ENTITY_ZOMBIE_BREAK_WOODEN_DOOR, | ||||||
|             Sound.ENTITY_ZOMBIE_ATTACK_IRON_DOOR), |             Sound.ENTITY_ZOMBIE_ATTACK_IRON_DOOR), | ||||||
| @@ -228,9 +244,14 @@ public enum DisguiseSoundEnums { | |||||||
|     ZOMBIE_VILLAGER(Sound.ENTITY_ZOMBIE_VILLAGER_HURT, Sound.ENTITY_ZOMBIE_VILLAGER_STEP, |     ZOMBIE_VILLAGER(Sound.ENTITY_ZOMBIE_VILLAGER_HURT, Sound.ENTITY_ZOMBIE_VILLAGER_STEP, | ||||||
|             Sound.ENTITY_ZOMBIE_VILLAGER_DEATH, Sound.ENTITY_ZOMBIE_VILLAGER_AMBIENT, Sound.ENTITY_ZOMBIE_INFECT, |             Sound.ENTITY_ZOMBIE_VILLAGER_DEATH, Sound.ENTITY_ZOMBIE_VILLAGER_AMBIENT, Sound.ENTITY_ZOMBIE_INFECT, | ||||||
|             Sound.ENTITY_ZOMBIE_ATTACK_WOODEN_DOOR, Sound.ENTITY_ZOMBIE_BREAK_WOODEN_DOOR, |             Sound.ENTITY_ZOMBIE_ATTACK_WOODEN_DOOR, Sound.ENTITY_ZOMBIE_BREAK_WOODEN_DOOR, | ||||||
|             Sound.ENTITY_ZOMBIE_ATTACK_IRON_DOOR); |             Sound.ENTITY_ZOMBIE_ATTACK_IRON_DOOR), | ||||||
|  |  | ||||||
|  |     ZOMBIIFIED_PIGLIN(Sound.ENTITY_ZOMBIFIED_PIGLIN_HURT, null, Sound.ENTITY_ZOMBIFIED_PIGLIN_DEATH, | ||||||
|  |             Sound.ENTITY_ZOMBIFIED_PIGLIN_AMBIENT, Sound.ENTITY_ZOMBIFIED_PIGLIN_ANGRY, | ||||||
|  |             Sound.ENTITY_PIGLIN_CONVERTED_TO_ZOMBIFIED); | ||||||
|  |  | ||||||
|     @Getter |     @Getter | ||||||
|     private HashMap<Sound, SoundType> sounds = new HashMap<>(); |     private HashMap<String, SoundType> sounds = new HashMap<>(); | ||||||
|  |  | ||||||
|     DisguiseSoundEnums(Object hurt, Object step, Object death, Object idle, Object... sounds) { |     DisguiseSoundEnums(Object hurt, Object step, Object death, Object idle, Object... sounds) { | ||||||
|         if (LibsDisguises.getInstance() != null) { |         if (LibsDisguises.getInstance() != null) { | ||||||
| @@ -262,12 +283,26 @@ public enum DisguiseSoundEnums { | |||||||
|             } |             } | ||||||
|         } else if (sound instanceof Sound) { |         } else if (sound instanceof Sound) { | ||||||
|             addSound((Sound) sound, type); |             addSound((Sound) sound, type); | ||||||
|  |         } else if (sound instanceof String[]) { | ||||||
|  |             for (String s : (String[]) sound) { | ||||||
|  |                 if (s == null) { | ||||||
|  |                     continue; | ||||||
|  |                 } | ||||||
|  |  | ||||||
|  |                 addSound(s, type); | ||||||
|  |             } | ||||||
|  |         } else if (sound instanceof String) { | ||||||
|  |             addSound((String) sound, type); | ||||||
|         } else { |         } else { | ||||||
|             throw new IllegalArgumentException("Was given an unknown object " + sound); |             throw new IllegalArgumentException("Was given an unknown object " + sound); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     private void addSound(Sound sound, SoundType type) { |     private void addSound(Sound sound, SoundType type) { | ||||||
|  |         addSound(sound.name(), type); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private void addSound(String sound, SoundType type) { | ||||||
|         sounds.put(sound, type); |         sounds.put(sound, type); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -46,7 +46,7 @@ public class CompileMethods { | |||||||
|  |  | ||||||
|                 int i = 0; |                 int i = 0; | ||||||
|  |  | ||||||
|                 for (Map.Entry<Sound, SoundGroup.SoundType> entry : e.getSounds().entrySet()) { |                 for (Map.Entry<String, SoundGroup.SoundType> entry : e.getSounds().entrySet()) { | ||||||
|                     if (entry.getValue() != type) { |                     if (entry.getValue() != type) { | ||||||
|                         continue; |                         continue; | ||||||
|                     } |                     } | ||||||
| @@ -55,7 +55,7 @@ public class CompileMethods { | |||||||
|                         sound.append(","); |                         sound.append(","); | ||||||
|                     } |                     } | ||||||
|  |  | ||||||
|                     sound.append(entry.getKey().name()); |                     sound.append(entry.getKey()); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user