Update to 1.16
This commit is contained in:
parent
cd64d17a01
commit
1f847e5ad6
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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user