From 3626069994cf0df95c71f2d63fd679000ba5c164 Mon Sep 17 00:00:00 2001 From: BuildTools Date: Fri, 20 May 2022 10:38:18 +0300 Subject: [PATCH] More elements, optimized code and bug fixes --- pom.xml | 5 +- src/main/java/me/tud/diskuise/Diskuise.java | 2 +- .../expressions/ExprDisguiseClone.java | 63 +++++++++++ .../ageable/conditions/CondIsAdult.java | 24 ++-- .../ageable/conditions/CondIsBaby.java | 24 ++-- .../ageable/effects/EffDisguiseSetAge.java | 23 ++-- .../ageable/expressions/ExprDisguiseAge.java | 24 ++-- .../expressions/ExprDisguiseColor.java | 26 ++--- .../expressions/ExprDisguiseParticleType.java | 23 ++-- .../expressions/ExprDisguiseRadius.java | 36 +++--- .../arrow/conditions/CondIsCritical.java | 9 +- .../effects/EffDisguiseMakeCritical.java | 5 +- .../expressions/ExprDisguiseCritical.java | 14 +-- .../axolotl/conditions/CondIsPlayingDead.java | 9 +- .../effects/EffDisguiseMakePlayDead.java | 5 +- .../expressions/ExprDisguisePlayingDead.java | 13 +-- .../expressions/ExprDisguiseVariant.java | 13 +-- .../expressions/ExprDisguiseItemStack.java | 14 +-- .../conditions/CondIsGridLocked.java | 7 +- .../effects/EffDisguiseLockGrid.java | 6 +- .../expressions/ExprDisguiseBlock.java | 19 ++-- .../expressions/ExprDisguiseBlockData.java | 12 +- .../expressions/ExprDisguiseGridLocked.java | 13 +-- .../flag/conditions/CondHasCustomName.java | 6 +- .../flag/conditions/CondIsBurning.java | 6 +- .../conditions/CondIsCustomNameVisible.java | 6 +- .../flag/conditions/CondIsGlowing.java | 13 +-- .../flag/conditions/CondIsInvisible.java | 6 +- .../flag/conditions/CondIsSneaking.java | 6 +- .../flag/conditions/CondIsSwimming.java | 49 ++++++++ .../flag/conditions/CondIsUpsideDown.java | 6 +- .../flag/effects/EffDisguiseMakeSwim.java | 52 +++++++++ .../flag/expressions/ExprDisguiseBurning.java | 5 +- .../expressions/ExprDisguiseCustomName.java | 16 +-- .../ExprDisguiseCustomNameVisible.java | 5 +- .../expressions/ExprDisguiseGlowColor.java | 5 +- .../flag/expressions/ExprDisguiseGlowing.java | 5 +- .../expressions/ExprDisguiseInvisible.java | 6 +- .../expressions/ExprDisguiseItemMainHand.java | 26 ++--- .../expressions/ExprDisguiseItemOffhand.java | 26 ++--- .../flag/expressions/ExprDisguiseSlot.java | 78 ++++--------- .../expressions/ExprDisguiseSneaking.java | 5 +- .../expressions/ExprDisguiseSwimming.java | 78 +++++++++++++ .../expressions/ExprDisguiseUpsideDown.java | 5 +- .../conditions/CondIsAggressive.java | 18 +-- .../insentient/effects/EffDisguiseMakeAI.java | 54 +++++++++ .../effects/EffDisguiseMakeAggressive.java | 15 ++- .../effects/EffDisguiseMakeEnraged.java | 53 +++++++++ .../expressions/ExprDisguiseAI.java | 82 ++++++++++++++ .../expressions/ExprDisguiseAggressive.java | 26 ++--- .../expressions/ExprDisguiseEnraged.java | 81 ++++++++++++++ .../expressions/ExprDisguiseCracks.java | 105 ++++++++++++++++++ .../expressions/ExprDisguiseItem.java | 14 +-- .../expressions/ExprDisguiseRotation.java | 27 ++--- .../living/conditions/CondIsHandRaised.java | 11 +- .../conditions/CondIsParticlesAmbient.java | 7 +- .../living/conditions/CondIsSpinning.java | 7 +- .../EffDisguiseMakeParticlesAmbient.java | 5 +- .../living/effects/EffDisguiseMakeSpin.java | 5 +- .../living/effects/EffDisguiseRaiseHand.java | 5 +- .../expressions/ExprDisguiseArrowsStuck.java | 31 +++--- .../expressions/ExprDisguiseHandRaised.java | 16 +-- .../expressions/ExprDisguiseHealth.java | 27 ++--- .../expressions/ExprDisguiseMaxHealth.java | 22 ++-- .../ExprDisguiseParticleColor.java | 24 ++-- .../ExprDisguiseParticlesAmbient.java | 13 +-- .../expressions/ExprDisguiseSpinning.java | 13 +-- .../painting/expressions/ExprDisguiseArt.java | 12 +- .../conditions/CondHasShoulderParrot.java | 11 +- .../player/conditions/CondIsCapeEnabled.java | 7 +- .../conditions/CondIsDisplayedInTab.java | 7 +- .../player/conditions/CondIsHatEnabled.java | 7 +- .../conditions/CondIsJacketEnabled.java | 7 +- .../player/conditions/CondIsLeftHanded.java | 7 +- .../conditions/CondIsLeftPantsEnabled.java | 7 +- .../conditions/CondIsLeftSleeveEnabled.java | 7 +- .../conditions/CondIsPlayerNameVisible.java | 7 +- .../player/conditions/CondIsRightHanded.java | 7 +- .../conditions/CondIsRightPantsEnabled.java | 7 +- .../conditions/CondIsRightSleeveEnabled.java | 7 +- .../effects/EffDisguiseMakeDisplayInTab.java | 6 +- .../EffDisguiseMakePlayerNameVisible.java | 5 +- .../effects/EffDisguiseMakePreferredHand.java | 5 +- .../player/effects/EffDisguiseSetSkin.java | 9 +- .../player/expressions/ExprDisguiseCape.java | 14 +-- .../ExprDisguiseDisplayedInTab.java | 13 +-- .../player/expressions/ExprDisguiseHat.java | 13 +-- .../expressions/ExprDisguiseJacket.java | 13 +-- .../expressions/ExprDisguiseLeftPants.java | 13 +-- .../expressions/ExprDisguiseLeftSleeve.java | 13 +-- .../ExprDisguiseParrotVariant.java | 11 +- .../ExprDisguisePlayerNameVisible.java | 13 +-- .../ExprDisguisePreferredHand.java | 8 +- .../expressions/ExprDisguiseRightPants.java | 13 +-- .../expressions/ExprDisguiseRightSleeve.java | 13 +-- .../ExprDisguiseShoulderHasParrot.java | 16 +-- 96 files changed, 1039 insertions(+), 699 deletions(-) create mode 100644 src/main/java/me/tud/diskuise/elements/expressions/ExprDisguiseClone.java create mode 100644 src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsSwimming.java create mode 100644 src/main/java/me/tud/diskuise/elements/watchers/flag/effects/EffDisguiseMakeSwim.java create mode 100644 src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseSwimming.java rename src/main/java/me/tud/diskuise/elements/watchers/{enderman => insentient}/conditions/CondIsAggressive.java (68%) create mode 100644 src/main/java/me/tud/diskuise/elements/watchers/insentient/effects/EffDisguiseMakeAI.java rename src/main/java/me/tud/diskuise/elements/watchers/{enderman => insentient}/effects/EffDisguiseMakeAggressive.java (73%) create mode 100644 src/main/java/me/tud/diskuise/elements/watchers/insentient/effects/EffDisguiseMakeEnraged.java create mode 100644 src/main/java/me/tud/diskuise/elements/watchers/insentient/expressions/ExprDisguiseAI.java rename src/main/java/me/tud/diskuise/elements/watchers/{enderman => insentient}/expressions/ExprDisguiseAggressive.java (71%) create mode 100644 src/main/java/me/tud/diskuise/elements/watchers/insentient/expressions/ExprDisguiseEnraged.java create mode 100644 src/main/java/me/tud/diskuise/elements/watchers/irongolem/expressions/ExprDisguiseCracks.java diff --git a/pom.xml b/pom.xml index 124d9f5..9142182 100644 --- a/pom.xml +++ b/pom.xml @@ -24,8 +24,9 @@ maven-compiler-plugin 3.8.1 - 14 - 14 + 17 + 17 + --enable-preview diff --git a/src/main/java/me/tud/diskuise/Diskuise.java b/src/main/java/me/tud/diskuise/Diskuise.java index f459108..6348f95 100644 --- a/src/main/java/me/tud/diskuise/Diskuise.java +++ b/src/main/java/me/tud/diskuise/Diskuise.java @@ -16,7 +16,7 @@ public final class Diskuise extends JavaPlugin { private static Diskuise instance; private static SkriptAddon addon; - private static int resourceId = 101529; + private static final int resourceId = 101529; @Override public void onEnable() { diff --git a/src/main/java/me/tud/diskuise/elements/expressions/ExprDisguiseClone.java b/src/main/java/me/tud/diskuise/elements/expressions/ExprDisguiseClone.java new file mode 100644 index 0000000..4abe1a2 --- /dev/null +++ b/src/main/java/me/tud/diskuise/elements/expressions/ExprDisguiseClone.java @@ -0,0 +1,63 @@ +package me.tud.diskuise.elements.expressions; + +import ch.njol.skript.Skript; +import ch.njol.skript.bukkitutil.EntityUtils; +import ch.njol.skript.doc.*; +import ch.njol.skript.entity.EntityData; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.ExpressionType; +import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.lang.util.SimpleExpression; +import ch.njol.util.Kleenean; +import me.libraryaddict.disguise.disguisetypes.*; +import org.bukkit.entity.EntityType; +import org.bukkit.event.Event; +import org.jetbrains.annotations.Nullable; + +import java.security.InvalidParameterException; + +@Name("Clone disguise") +@Description("Clones an already existing disguise") +@Examples({"set {anotherDisguise} to clone of {disguise}"}) +@Since("0.1") +@RequiredPlugins({"LibsDisguises"}) +public class ExprDisguiseClone extends SimpleExpression { + + static { + Skript.registerExpression(ExprDisguiseClone.class, Disguise.class, ExpressionType.PROPERTY, + "clone[d] [of] %disguise% [dis(g|k)uise]"); + } + + Expression toClone; + + @Override + protected @Nullable + Disguise[] get(Event e) { + Disguise toClone = this.toClone.getSingle(e); + if (toClone == null) return null; + Disguise disguise = toClone.clone(); + return new Disguise[]{disguise}; + } + + @Override + public boolean isSingle() { + return true; + } + + @Override + public Class getReturnType() { + return Disguise.class; + } + + @Override + public String toString(@Nullable Event e, boolean debug) { + return null; + } + + @Override + @SuppressWarnings("unchecked") + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { + toClone = (Expression) exprs[0]; + return true; + } +} diff --git a/src/main/java/me/tud/diskuise/elements/watchers/ageable/conditions/CondIsAdult.java b/src/main/java/me/tud/diskuise/elements/watchers/ageable/conditions/CondIsAdult.java index 98d2324..9adfe08 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/ageable/conditions/CondIsAdult.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/ageable/conditions/CondIsAdult.java @@ -7,6 +7,7 @@ import ch.njol.skript.lang.SkriptParser; import ch.njol.util.Kleenean; import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.FlagWatcher; import me.libraryaddict.disguise.disguisetypes.MobDisguise; import me.libraryaddict.disguise.disguisetypes.watchers.*; import org.bukkit.event.Event; @@ -30,22 +31,13 @@ public class CondIsAdult extends Condition { @Override public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); - MobDisguise mobDisguise = (MobDisguise) disguise; - assert mobDisguise != null; - LivingWatcher watcher = mobDisguise.getWatcher(); - try { - return ((AgeableWatcher) watcher).isBaby() != isNegated(); - } catch (ClassCastException ignore) {} - try { - return ((ZombieWatcher) watcher).isBaby() != isNegated(); - } catch (ClassCastException ignore) {} - try { - return ((PiglinWatcher) watcher).isBaby() != isNegated(); - } catch (ClassCastException ignore) {} - try { - return ((ZoglinWatcher) watcher).isBaby() != isNegated(); - } catch (ClassCastException ignore) {} - return false; + boolean isBaby = false; + FlagWatcher watcher = disguise.getWatcher(); + if (watcher instanceof AgeableWatcher) isBaby = ((AgeableWatcher) watcher).isBaby(); + else if (watcher instanceof ZombieWatcher) isBaby = ((ZombieWatcher) watcher).isBaby(); + else if (watcher instanceof PiglinWatcher) isBaby = ((PiglinWatcher) watcher).isBaby(); + else if (watcher instanceof ZoglinWatcher) isBaby = ((ZoglinWatcher) watcher).isBaby(); + return isBaby != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/ageable/conditions/CondIsBaby.java b/src/main/java/me/tud/diskuise/elements/watchers/ageable/conditions/CondIsBaby.java index 6226a5a..25359f1 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/ageable/conditions/CondIsBaby.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/ageable/conditions/CondIsBaby.java @@ -7,6 +7,7 @@ import ch.njol.skript.lang.SkriptParser; import ch.njol.util.Kleenean; import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.FlagWatcher; import me.libraryaddict.disguise.disguisetypes.MobDisguise; import me.libraryaddict.disguise.disguisetypes.watchers.*; import org.bukkit.event.Event; @@ -30,22 +31,13 @@ public class CondIsBaby extends Condition { @Override public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); - MobDisguise mobDisguise = (MobDisguise) disguise; - assert mobDisguise != null; - LivingWatcher watcher = mobDisguise.getWatcher(); - try { - return ((AgeableWatcher) watcher).isBaby() == isNegated(); - } catch (ClassCastException ignore) {} - try { - return ((ZombieWatcher) watcher).isBaby() == isNegated(); - } catch (ClassCastException ignore) {} - try { - return ((PiglinWatcher) watcher).isBaby() == isNegated(); - } catch (ClassCastException ignore) {} - try { - return ((ZoglinWatcher) watcher).isBaby() == isNegated(); - } catch (ClassCastException ignore) {} - return false; + boolean isBaby = false; + FlagWatcher watcher = disguise.getWatcher(); + if (watcher instanceof AgeableWatcher) isBaby = ((AgeableWatcher) watcher).isBaby(); + else if (watcher instanceof ZombieWatcher) isBaby = ((ZombieWatcher) watcher).isBaby(); + else if (watcher instanceof PiglinWatcher) isBaby = ((PiglinWatcher) watcher).isBaby(); + else if (watcher instanceof ZoglinWatcher) isBaby = ((ZoglinWatcher) watcher).isBaby(); + return isBaby == isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/ageable/effects/EffDisguiseSetAge.java b/src/main/java/me/tud/diskuise/elements/watchers/ageable/effects/EffDisguiseSetAge.java index 4a7f8ac..b950c56 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/ageable/effects/EffDisguiseSetAge.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/ageable/effects/EffDisguiseSetAge.java @@ -7,6 +7,7 @@ import ch.njol.skript.lang.SkriptParser; import ch.njol.util.Kleenean; import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.FlagWatcher; import me.libraryaddict.disguise.disguisetypes.MobDisguise; import me.libraryaddict.disguise.disguisetypes.watchers.*; import me.tud.diskuise.utils.DisguiseUtil; @@ -37,26 +38,18 @@ public class EffDisguiseSetAge extends Effect { @Override protected void execute(Event e) { Disguise disguise = this.disguise.getSingle(e); - MobDisguise mobDisguise = (MobDisguise) disguise; - assert mobDisguise != null; + if (disguise == null) return; boolean isAdult; if (pattern == 0) isAdult = Boolean.TRUE.equals(this.bool.getSingle(e)); else isAdult = false; isAdult = isAdult == isNegated; - LivingWatcher watcher = mobDisguise.getWatcher(); - try { - ((AgeableWatcher) watcher).setBaby(!isAdult); - } catch (ClassCastException ignore) {} - try { - ((ZombieWatcher) watcher).setBaby(!isAdult); - } catch (ClassCastException ignore) {} - try { - ((PiglinWatcher) watcher).setBaby(!isAdult); - } catch (ClassCastException ignore) {} - try { - ((ZoglinWatcher) watcher).setBaby(!isAdult); - } catch (ClassCastException ignore) {} + FlagWatcher watcher = disguise.getWatcher(); + if (watcher instanceof AgeableWatcher) ((AgeableWatcher) watcher).setBaby(!isAdult); + else if (watcher instanceof ZombieWatcher) ((ZombieWatcher) watcher).setBaby(!isAdult); + else if (watcher instanceof PiglinWatcher) ((PiglinWatcher) watcher).setBaby(!isAdult); + else if (watcher instanceof ZoglinWatcher) ((ZoglinWatcher) watcher).setBaby(!isAdult); + else return; DisguiseUtil.update(disguise); } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/ageable/expressions/ExprDisguiseAge.java b/src/main/java/me/tud/diskuise/elements/watchers/ageable/expressions/ExprDisguiseAge.java index 08bc136..270a9b5 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/ageable/expressions/ExprDisguiseAge.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/ageable/expressions/ExprDisguiseAge.java @@ -8,6 +8,7 @@ import ch.njol.skript.lang.util.SimpleExpression; import ch.njol.util.Kleenean; import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.FlagWatcher; import me.libraryaddict.disguise.disguisetypes.MobDisguise; import me.libraryaddict.disguise.disguisetypes.watchers.*; import org.bukkit.event.Event; @@ -27,27 +28,18 @@ public class ExprDisguiseAge extends SimpleExpression { } Expression disguise; - boolean isBaby = false; @Override protected @Nullable String[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); - MobDisguise mobDisguise = (MobDisguise) disguise; - assert mobDisguise != null; - LivingWatcher watcher = mobDisguise.getWatcher(); - try { - if (((AgeableWatcher) watcher).isBaby()) isBaby = true; - } catch (ClassCastException ignore) {} - try { - if (((ZombieWatcher) watcher).isBaby()) isBaby = true; - } catch (ClassCastException ignore) {} - try { - if (((PiglinWatcher) watcher).isBaby()) isBaby = true; - } catch (ClassCastException ignore) {} - try { - if (((ZoglinWatcher) watcher).isBaby()) isBaby = true; - } catch (ClassCastException ignore) {} + if (disguise == null) return null; + FlagWatcher watcher = disguise.getWatcher(); + boolean isBaby = false; + if (watcher instanceof AgeableWatcher) isBaby = ((AgeableWatcher) watcher).isBaby(); + else if (watcher instanceof ZombieWatcher) isBaby = ((ZombieWatcher) watcher).isBaby(); + else if (watcher instanceof PiglinWatcher) isBaby = ((PiglinWatcher) watcher).isBaby(); + else if (watcher instanceof ZoglinWatcher) isBaby = ((ZoglinWatcher) watcher).isBaby(); String age = (isBaby) ? "baby" : "adult"; return new String[]{age}; } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/areaeffectcloud/expressions/ExprDisguiseColor.java b/src/main/java/me/tud/diskuise/elements/watchers/areaeffectcloud/expressions/ExprDisguiseColor.java index 704eeab..25faed1 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/areaeffectcloud/expressions/ExprDisguiseColor.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/areaeffectcloud/expressions/ExprDisguiseColor.java @@ -37,12 +37,8 @@ public class ExprDisguiseColor extends SimpleExpression { protected SkriptColor[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - AreaEffectCloudWatcher watcher; - try { - watcher = (AreaEffectCloudWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - Bukkit.broadcastMessage(watcher.getColor().toString()); - return new SkriptColor[]{SkriptColor.fromBukkitColor(watcher.getColor())}; + return new SkriptColor[]{SkriptColor.fromBukkitColor(disguise.getWatcher() instanceof AreaEffectCloudWatcher ? + ((AreaEffectCloudWatcher) disguise.getWatcher()).getColor() : null)}; } @Override @@ -70,8 +66,8 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Override public @Nullable Class[] acceptChange(Changer.ChangeMode mode) { - if (mode == Changer.ChangeMode.SET || - mode == Changer.ChangeMode.RESET) return CollectionUtils.array(Color.class); + if (mode == Changer.ChangeMode.SET) + return CollectionUtils.array(Color.class); return null; } @@ -80,16 +76,12 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; AreaEffectCloudWatcher watcher; - try { - watcher = (AreaEffectCloudWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof AreaEffectCloudWatcher) watcher = (AreaEffectCloudWatcher) disguise.getWatcher(); + else return; - org.bukkit.Color color = org.bukkit.Color.WHITE; - if (mode == Changer.ChangeMode.SET) { - if (delta[0] != null) { - color = ((SkriptColor) delta[0]).asBukkitColor(); - } - } + org.bukkit.Color color; + if (mode == Changer.ChangeMode.SET && delta[0] != null) color = ((SkriptColor) delta[0]).asBukkitColor(); + else return; watcher.setColor(color); DisguiseUtil.update(disguise); } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/areaeffectcloud/expressions/ExprDisguiseParticleType.java b/src/main/java/me/tud/diskuise/elements/watchers/areaeffectcloud/expressions/ExprDisguiseParticleType.java index 1ef9bc9..c5caba9 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/areaeffectcloud/expressions/ExprDisguiseParticleType.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/areaeffectcloud/expressions/ExprDisguiseParticleType.java @@ -35,11 +35,8 @@ public class ExprDisguiseParticleType extends SimpleExpression { protected Particle[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - AreaEffectCloudWatcher watcher; - try { - watcher = (AreaEffectCloudWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - return new Particle[]{watcher.getParticleType()}; + return new Particle[]{disguise.getWatcher() instanceof AreaEffectCloudWatcher ? + ((AreaEffectCloudWatcher) disguise.getWatcher()).getParticleType() : null}; } @Override @@ -67,8 +64,9 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Override public @Nullable Class[] acceptChange(Changer.ChangeMode mode) { - if (mode == Changer.ChangeMode.SET || - mode == Changer.ChangeMode.RESET) return CollectionUtils.array(Particle.class); + switch (mode) { + case SET, RESET -> { return CollectionUtils.array(Particle.class); } + } return null; } @@ -77,16 +75,11 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; AreaEffectCloudWatcher watcher; - try { - watcher = (AreaEffectCloudWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof AreaEffectCloudWatcher) watcher = (AreaEffectCloudWatcher) disguise.getWatcher(); + else return; Particle particle = Particle.SPELL_MOB; - if (mode == Changer.ChangeMode.SET) { - if (delta[0] != null) { - particle = (Particle) delta[0]; - } - } + if (mode == Changer.ChangeMode.SET && delta[0] != null) particle = (Particle) delta[0]; watcher.setParticleType(particle); DisguiseUtil.update(disguise); } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/areaeffectcloud/expressions/ExprDisguiseRadius.java b/src/main/java/me/tud/diskuise/elements/watchers/areaeffectcloud/expressions/ExprDisguiseRadius.java index 362e5c7..08f86ca 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/areaeffectcloud/expressions/ExprDisguiseRadius.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/areaeffectcloud/expressions/ExprDisguiseRadius.java @@ -11,6 +11,7 @@ import ch.njol.util.coll.CollectionUtils; import me.libraryaddict.disguise.disguisetypes.Disguise; import me.libraryaddict.disguise.disguisetypes.watchers.AreaEffectCloudWatcher; +import me.libraryaddict.disguise.disguisetypes.watchers.AxolotlWatcher; import me.tud.diskuise.utils.DisguiseUtil; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; @@ -34,11 +35,8 @@ public class ExprDisguiseRadius extends SimpleExpression { protected Number[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - AreaEffectCloudWatcher watcher; - try { - watcher = (AreaEffectCloudWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - return new Number[]{watcher.getRadius()}; + return new Number[]{disguise.getWatcher() instanceof AreaEffectCloudWatcher ? + ((AreaEffectCloudWatcher) disguise.getWatcher()).getRadius() : null}; } @Override @@ -66,32 +64,32 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Override public @Nullable Class[] acceptChange(Changer.ChangeMode mode) { - if (mode == Changer.ChangeMode.SET || - mode == Changer.ChangeMode.ADD || - mode == Changer.ChangeMode.REMOVE || - mode == Changer.ChangeMode.RESET) return CollectionUtils.array(Number.class); + switch (mode) { + case SET, ADD, REMOVE, RESET -> { return CollectionUtils.array(Number.class); } + } return null; } @Override public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { - if (delta[0] == null) return; Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; AreaEffectCloudWatcher watcher; - try { - watcher = (AreaEffectCloudWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof AreaEffectCloudWatcher) watcher = (AreaEffectCloudWatcher) disguise.getWatcher(); + else return; - float value = ((Number) delta[0]).floatValue(); + float value = 0; + if (mode != Changer.ChangeMode.RESET) value = ((Number) delta[0]).floatValue(); float radius = watcher.getRadius(); - if (mode != Changer.ChangeMode.SET && mode != Changer.ChangeMode.RESET) { - if (mode == Changer.ChangeMode.REMOVE) value *= -1; - radius += value; + switch (mode) { + case SET -> radius = value; + case RESET -> radius = 3f; + case ADD, REMOVE -> { + if (mode == Changer.ChangeMode.REMOVE) value *= -1; + radius += value; + } } - else if (mode == Changer.ChangeMode.RESET) radius = 3f; - else radius = value; watcher.setRadius(radius); DisguiseUtil.update(disguise); } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/arrow/conditions/CondIsCritical.java b/src/main/java/me/tud/diskuise/elements/watchers/arrow/conditions/CondIsCritical.java index a836ea4..29e0d27 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/arrow/conditions/CondIsCritical.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/arrow/conditions/CondIsCritical.java @@ -7,7 +7,9 @@ import ch.njol.skript.lang.SkriptParser; import ch.njol.util.Kleenean; import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.watchers.AreaEffectCloudWatcher; import me.libraryaddict.disguise.disguisetypes.watchers.ArrowWatcher; +import me.libraryaddict.disguise.disguisetypes.watchers.FallingBlockWatcher; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; @@ -30,11 +32,8 @@ public class CondIsCritical extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - ArrowWatcher watcher; - try { - watcher = (ArrowWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - return watcher.isCritical() != isNegated(); + return disguise.getWatcher() instanceof ArrowWatcher && + ((ArrowWatcher) disguise.getWatcher()).isCritical() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/arrow/effects/EffDisguiseMakeCritical.java b/src/main/java/me/tud/diskuise/elements/watchers/arrow/effects/EffDisguiseMakeCritical.java index 637041d..ad37da3 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/arrow/effects/EffDisguiseMakeCritical.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/arrow/effects/EffDisguiseMakeCritical.java @@ -32,9 +32,8 @@ protected void execute(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; ArrowWatcher watcher; - try { - watcher = (ArrowWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof ArrowWatcher) watcher = (ArrowWatcher) disguise.getWatcher(); + else return; watcher.setCritical(bool); DisguiseUtil.update(disguise); } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/arrow/expressions/ExprDisguiseCritical.java b/src/main/java/me/tud/diskuise/elements/watchers/arrow/expressions/ExprDisguiseCritical.java index f400678..877e865 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/arrow/expressions/ExprDisguiseCritical.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/arrow/expressions/ExprDisguiseCritical.java @@ -10,6 +10,7 @@ import ch.njol.util.Kleenean; import ch.njol.util.coll.CollectionUtils; import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.watchers.AreaEffectCloudWatcher; import me.libraryaddict.disguise.disguisetypes.watchers.ArrowWatcher; import me.tud.diskuise.utils.DisguiseUtil; import org.bukkit.event.Event; @@ -34,12 +35,8 @@ public class ExprDisguiseCritical extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - ArrowWatcher watcher; - try { - watcher = (ArrowWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - return new Boolean[]{watcher.isCritical()}; + return new Boolean[]{disguise.getWatcher() instanceof ArrowWatcher ? + ((ArrowWatcher) disguise.getWatcher()).isCritical() : null}; } @Override @@ -76,9 +73,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; ArrowWatcher watcher; - try { - watcher = (ArrowWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof ArrowWatcher) watcher = (ArrowWatcher) disguise.getWatcher(); + else return; boolean bool = Boolean.TRUE.equals(delta[0]); watcher.setCritical(bool); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/axolotl/conditions/CondIsPlayingDead.java b/src/main/java/me/tud/diskuise/elements/watchers/axolotl/conditions/CondIsPlayingDead.java index 6c5f4e4..b484f66 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/axolotl/conditions/CondIsPlayingDead.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/axolotl/conditions/CondIsPlayingDead.java @@ -7,7 +7,9 @@ import ch.njol.skript.lang.SkriptParser; import ch.njol.util.Kleenean; import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.watchers.ArrowWatcher; import me.libraryaddict.disguise.disguisetypes.watchers.AxolotlWatcher; +import me.libraryaddict.disguise.disguisetypes.watchers.FallingBlockWatcher; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; @@ -30,11 +32,8 @@ public class CondIsPlayingDead extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - AxolotlWatcher watcher; - try { - watcher = (AxolotlWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - return watcher.isPlayingDead() != isNegated(); + return disguise.getWatcher() instanceof AxolotlWatcher && + ((AxolotlWatcher) disguise.getWatcher()).isPlayingDead() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/axolotl/effects/EffDisguiseMakePlayDead.java b/src/main/java/me/tud/diskuise/elements/watchers/axolotl/effects/EffDisguiseMakePlayDead.java index 2034a7d..7e48897 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/axolotl/effects/EffDisguiseMakePlayDead.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/axolotl/effects/EffDisguiseMakePlayDead.java @@ -32,9 +32,8 @@ protected void execute(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; AxolotlWatcher watcher; - try { - watcher = (AxolotlWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof AxolotlWatcher) watcher = (AxolotlWatcher) disguise.getWatcher(); + else return; watcher.setPlayingDead(bool); DisguiseUtil.update(disguise); } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/axolotl/expressions/ExprDisguisePlayingDead.java b/src/main/java/me/tud/diskuise/elements/watchers/axolotl/expressions/ExprDisguisePlayingDead.java index 7333856..ffaed91 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/axolotl/expressions/ExprDisguisePlayingDead.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/axolotl/expressions/ExprDisguisePlayingDead.java @@ -34,12 +34,8 @@ public class ExprDisguisePlayingDead extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - AxolotlWatcher watcher; - try { - watcher = (AxolotlWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - return new Boolean[]{watcher.isPlayingDead()}; + return new Boolean[]{disguise.getWatcher() instanceof AxolotlWatcher ? + ((AxolotlWatcher) disguise.getWatcher()).isPlayingDead() : null}; } @Override @@ -76,9 +72,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; AxolotlWatcher watcher; - try { - watcher = (AxolotlWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof AxolotlWatcher) watcher = (AxolotlWatcher) disguise.getWatcher(); + else return; boolean bool = Boolean.TRUE.equals(delta[0]); watcher.setPlayingDead(bool); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/axolotl/expressions/ExprDisguiseVariant.java b/src/main/java/me/tud/diskuise/elements/watchers/axolotl/expressions/ExprDisguiseVariant.java index 1f057bc..f84a191 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/axolotl/expressions/ExprDisguiseVariant.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/axolotl/expressions/ExprDisguiseVariant.java @@ -35,12 +35,8 @@ public class ExprDisguiseVariant extends SimpleExpression { protected Axolotl.Variant[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - AxolotlWatcher watcher; - try { - watcher = (AxolotlWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - return new Axolotl.Variant[]{watcher.getVariant()}; + return new Axolotl.Variant[]{disguise.getWatcher() instanceof AxolotlWatcher ? + ((AxolotlWatcher) disguise.getWatcher()).getVariant() : null}; } @Override @@ -77,9 +73,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; AxolotlWatcher watcher; - try { - watcher = (AxolotlWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof AxolotlWatcher) watcher = (AxolotlWatcher) disguise.getWatcher(); + else return; assert delta[0] != null; watcher.setVariant((Axolotl.Variant) delta[0]); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/droppeditem/expressions/ExprDisguiseItemStack.java b/src/main/java/me/tud/diskuise/elements/watchers/droppeditem/expressions/ExprDisguiseItemStack.java index c1d0c74..d7289c2 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/droppeditem/expressions/ExprDisguiseItemStack.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/droppeditem/expressions/ExprDisguiseItemStack.java @@ -10,6 +10,8 @@ import ch.njol.util.Kleenean; import ch.njol.util.coll.CollectionUtils; import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.watchers.AreaEffectCloudWatcher; +import me.libraryaddict.disguise.disguisetypes.watchers.AxolotlWatcher; import me.libraryaddict.disguise.disguisetypes.watchers.DroppedItemWatcher; import me.tud.diskuise.utils.DisguiseUtil; import org.bukkit.event.Event; @@ -35,11 +37,8 @@ public class ExprDisguiseItemStack extends SimpleExpression { protected ItemStack[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - DroppedItemWatcher watcher; - try { - watcher = (DroppedItemWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - return new ItemStack[]{watcher.getItemStack()}; + return new ItemStack[]{disguise.getWatcher() instanceof DroppedItemWatcher ? + ((DroppedItemWatcher) disguise.getWatcher()).getItemStack() : null}; } @Override @@ -76,9 +75,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; DroppedItemWatcher watcher; - try { - watcher = (DroppedItemWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof DroppedItemWatcher) watcher = (DroppedItemWatcher) disguise.getWatcher(); + else return; ItemStack itemStack = (ItemStack) delta[0]; watcher.setItemStack(itemStack); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/conditions/CondIsGridLocked.java b/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/conditions/CondIsGridLocked.java index 2e5c1c7..992e9e5 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/conditions/CondIsGridLocked.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/conditions/CondIsGridLocked.java @@ -30,11 +30,8 @@ public class CondIsGridLocked extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - FallingBlockWatcher watcher; - try { - watcher = (FallingBlockWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - return watcher.isGridLocked() != isNegated(); + return disguise.getWatcher() instanceof FallingBlockWatcher && + ((FallingBlockWatcher) disguise.getWatcher()).isGridLocked() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/effects/EffDisguiseLockGrid.java b/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/effects/EffDisguiseLockGrid.java index 2ad67ae..e17bc7c 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/effects/EffDisguiseLockGrid.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/effects/EffDisguiseLockGrid.java @@ -7,6 +7,7 @@ import ch.njol.skript.lang.SkriptParser; import ch.njol.util.Kleenean; import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.watchers.AxolotlWatcher; import me.libraryaddict.disguise.disguisetypes.watchers.FallingBlockWatcher; import me.tud.diskuise.utils.DisguiseUtil; import org.bukkit.event.Event; @@ -34,9 +35,8 @@ protected void execute(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; FallingBlockWatcher watcher; - try { - watcher = (FallingBlockWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof FallingBlockWatcher) watcher = (FallingBlockWatcher) disguise.getWatcher(); + else return; watcher.setGridLocked(bool); DisguiseUtil.update(disguise); } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/expressions/ExprDisguiseBlock.java b/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/expressions/ExprDisguiseBlock.java index 6de529b..86edf90 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/expressions/ExprDisguiseBlock.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/expressions/ExprDisguiseBlock.java @@ -10,6 +10,7 @@ import ch.njol.util.Kleenean; import ch.njol.util.coll.CollectionUtils; import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.watchers.AxolotlWatcher; import me.libraryaddict.disguise.disguisetypes.watchers.FallingBlockWatcher; import me.tud.diskuise.utils.DisguiseUtil; import org.bukkit.block.data.BlockData; @@ -36,11 +37,8 @@ public class ExprDisguiseBlock extends SimpleExpression { protected ItemStack[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - FallingBlockWatcher watcher; - try { - watcher = (FallingBlockWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - return new ItemStack[]{watcher.getBlock()}; + return new ItemStack[]{disguise.getWatcher() instanceof FallingBlockWatcher ? + ((FallingBlockWatcher) disguise.getWatcher()).getBlock() : null}; } @Override @@ -77,18 +75,15 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; FallingBlockWatcher watcher; - try { - watcher = (FallingBlockWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof FallingBlockWatcher) watcher = (FallingBlockWatcher) disguise.getWatcher(); + else return; - if (delta[0] instanceof ItemStack) { - ItemStack block = (ItemStack) delta[0]; + if (delta[0] instanceof ItemStack block) { if (!block.getType().isBlock()) return; watcher.setBlock(block); } - else if (delta[0] instanceof BlockData) { - BlockData blockData = (BlockData) delta[0]; + else if (delta[0] instanceof BlockData blockData) { watcher.setBlockData(blockData); } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/expressions/ExprDisguiseBlockData.java b/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/expressions/ExprDisguiseBlockData.java index d7a88cf..f235cab 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/expressions/ExprDisguiseBlockData.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/expressions/ExprDisguiseBlockData.java @@ -35,11 +35,8 @@ public class ExprDisguiseBlockData extends SimpleExpression { protected BlockData[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - FallingBlockWatcher watcher; - try { - watcher = (FallingBlockWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - return new BlockData[]{watcher.getBlockData()}; + return new BlockData[]{disguise.getWatcher() instanceof FallingBlockWatcher ? + ((FallingBlockWatcher) disguise.getWatcher()).getBlockData() : null}; } @Override @@ -76,9 +73,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; FallingBlockWatcher watcher; - try { - watcher = (FallingBlockWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof FallingBlockWatcher) watcher = (FallingBlockWatcher) disguise.getWatcher(); + else return; BlockData blockData = (BlockData) delta[0]; watcher.setBlockData(blockData); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/expressions/ExprDisguiseGridLocked.java b/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/expressions/ExprDisguiseGridLocked.java index 1b9222c..4160f1d 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/expressions/ExprDisguiseGridLocked.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/fallingblock/expressions/ExprDisguiseGridLocked.java @@ -34,12 +34,8 @@ public class ExprDisguiseGridLocked extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - FallingBlockWatcher watcher; - try { - watcher = (FallingBlockWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - return new Boolean[]{watcher.isGridLocked()}; + return new Boolean[]{disguise.getWatcher() instanceof FallingBlockWatcher ? + ((FallingBlockWatcher) disguise.getWatcher()).isGridLocked() : null}; } @Override @@ -76,9 +72,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; FallingBlockWatcher watcher; - try { - watcher = (FallingBlockWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof FallingBlockWatcher) watcher = (FallingBlockWatcher) disguise.getWatcher(); + else return; boolean bool = Boolean.TRUE.equals(delta[0]); watcher.setGridLocked(bool); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondHasCustomName.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondHasCustomName.java index 229da3b..e019d54 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondHasCustomName.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondHasCustomName.java @@ -31,10 +31,8 @@ public class CondHasCustomName extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - if (!disguise.isMobDisguise()) return false; - FlagWatcher watcher = disguise.getWatcher(); - if (watcher == null) return false; - return watcher.hasCustomName() != isNegated(); + return disguise.getWatcher() != null && + disguise.getWatcher().hasCustomName() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsBurning.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsBurning.java index 98c4d0c..fb87d14 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsBurning.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsBurning.java @@ -30,10 +30,8 @@ public class CondIsBurning extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - if (!disguise.isMobDisguise()) return false; - FlagWatcher watcher = disguise.getWatcher(); - if (watcher == null) return false; - return watcher.isBurning() != isNegated(); + return disguise.getWatcher() != null && + disguise.getWatcher().isBurning() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsCustomNameVisible.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsCustomNameVisible.java index 604ca94..a5bd762 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsCustomNameVisible.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsCustomNameVisible.java @@ -30,10 +30,8 @@ public class CondIsCustomNameVisible extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - if (!disguise.isMobDisguise()) return false; - FlagWatcher watcher = disguise.getWatcher(); - if (watcher == null) return false; - return watcher.isCustomNameVisible() != isNegated(); + return disguise.getWatcher() != null && + disguise.getWatcher().isCustomNameVisible() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsGlowing.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsGlowing.java index 2366b44..520ce93 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsGlowing.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsGlowing.java @@ -34,15 +34,12 @@ public class CondIsGlowing extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); SkriptColor color = this.color != null ? (SkriptColor) this.color.getSingle(e) : null; - if (disguise == null) return false; - if (!disguise.isMobDisguise()) return false; - FlagWatcher watcher = disguise.getWatcher(); - if (watcher == null) return false; - if (color != null && watcher.isGlowing()) { - if (color.asChatColor() == watcher.getGlowColor()) return watcher.isGlowing() != isNegated(); - return watcher.isGlowing() == isNegated(); + if (disguise == null || disguise.getWatcher() == null) return false; + if (color != null && disguise.getWatcher().isGlowing()) { + if (color.asChatColor() == disguise.getWatcher().getGlowColor()) return disguise.getWatcher().isGlowing() != isNegated(); + return disguise.getWatcher().isGlowing() == isNegated(); } - return watcher.isGlowing() != isNegated(); + return disguise.getWatcher().isGlowing() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsInvisible.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsInvisible.java index d1a5cda..92e1c57 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsInvisible.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsInvisible.java @@ -31,10 +31,8 @@ public class CondIsInvisible extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - if (!disguise.isMobDisguise()) return false; - FlagWatcher watcher = disguise.getWatcher(); - if (watcher == null) return false; - return watcher.isInvisible() != isNegated(); + return disguise.getWatcher() != null && + disguise.getWatcher().isInvisible() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsSneaking.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsSneaking.java index 63f1239..2a9650a 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsSneaking.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsSneaking.java @@ -30,10 +30,8 @@ public class CondIsSneaking extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - if (!disguise.isMobDisguise()) return false; - FlagWatcher watcher = disguise.getWatcher(); - if (watcher == null) return false; - return watcher.isSneaking() != isNegated(); + return disguise.getWatcher() != null && + disguise.getWatcher().isSneaking() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsSwimming.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsSwimming.java new file mode 100644 index 0000000..c6f6d8c --- /dev/null +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsSwimming.java @@ -0,0 +1,49 @@ +package me.tud.diskuise.elements.watchers.flag.conditions; + +import ch.njol.skript.Skript; +import ch.njol.skript.doc.*; +import ch.njol.skript.lang.Condition; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.SkriptParser; +import ch.njol.util.Kleenean; +import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.FlagWatcher; +import org.bukkit.event.Event; +import org.jetbrains.annotations.Nullable; + +@Name("Disguise - Is Burning") +@Description("Checks if a disguise appears to be burning") +@Examples({"if {dis} is burning:", + "\tset burning state of {dis} to false"}) +@Since("0.2-beta0") +@RequiredPlugins({"LibsDisguises"}) +public class CondIsSwimming extends Condition { + + static { + Skript.registerCondition(CondIsSwimming.class, + "[dis(k|g)uise] %disguise% (1¦is|2¦is(n't| not)) swim[(ing|s)]"); + } + + Expression disguise; + + @Override + public boolean check(Event e) { + Disguise disguise = this.disguise.getSingle(e); + if (disguise == null) return false; + return disguise.getWatcher() != null && + disguise.getWatcher().isSwimming() != isNegated(); + } + + @Override + public String toString(@Nullable Event e, boolean debug) { + return null; + } + + @Override + @SuppressWarnings("unchecked") + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { + if (parseResult.mark == 2) setNegated(true); + disguise = (Expression) exprs[0]; + return true; + } +} diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsUpsideDown.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsUpsideDown.java index 27396a7..849fae5 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsUpsideDown.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/conditions/CondIsUpsideDown.java @@ -30,10 +30,8 @@ public class CondIsUpsideDown extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - if (!disguise.isMobDisguise()) return false; - FlagWatcher watcher = disguise.getWatcher(); - if (watcher == null) return false; - return watcher.isUpsideDown() != isNegated(); + return disguise.getWatcher() != null && + disguise.getWatcher().isUpsideDown() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/effects/EffDisguiseMakeSwim.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/effects/EffDisguiseMakeSwim.java new file mode 100644 index 0000000..44ee7b7 --- /dev/null +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/effects/EffDisguiseMakeSwim.java @@ -0,0 +1,52 @@ +package me.tud.diskuise.elements.watchers.flag.effects; + +import ch.njol.skript.Skript; +import ch.njol.skript.doc.*; +import ch.njol.skript.lang.Effect; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.SkriptParser; +import ch.njol.util.Kleenean; +import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.FlagWatcher; +import me.tud.diskuise.utils.DisguiseUtil; +import org.bukkit.event.Event; +import org.jetbrains.annotations.Nullable; + +@Name("Disguise - Make Swim") +@Description("Sets if a disguise appears to be swimming") +@Examples("make player's disguise swim") +@Since("0.2-beta3") +@RequiredPlugins({"LibsDisguises"}) +public class EffDisguiseMakeSwim extends Effect { + + static { + Skript.registerEffect(EffDisguiseMakeSwim.class, + "make [dis(k|g)uise] %disguise% [1¦not] swim[(ing|s)]"); + } + + Expression disguise; + boolean bool; + + @Override + protected void execute(Event e) { + Disguise disguise = this.disguise.getSingle(e); + if (disguise == null) return; + FlagWatcher watcher = disguise.getWatcher(); + if (watcher == null) return; + watcher.setSwimming(bool); + DisguiseUtil.update(disguise); + } + + @Override + public String toString(@Nullable Event e, boolean debug) { + return null; + } + + @Override + @SuppressWarnings("unchecked") + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { + disguise = (Expression) exprs[0]; + bool = parseResult.mark != 1; + return true; + } +} diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseBurning.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseBurning.java index 0e4f7d7..10424be 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseBurning.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseBurning.java @@ -34,9 +34,8 @@ public class ExprDisguiseBurning extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - FlagWatcher watcher = disguise.getWatcher(); - if (watcher == null) return null; - return new Boolean[]{watcher.isBurning()}; + return new Boolean[]{disguise.getWatcher() != null ? + disguise.getWatcher().isBurning() : null}; } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseCustomName.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseCustomName.java index 67c3d98..8fe347c 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseCustomName.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseCustomName.java @@ -34,9 +34,8 @@ public class ExprDisguiseCustomName extends SimpleExpression { protected String[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - FlagWatcher watcher = disguise.getWatcher(); - if (watcher == null) return null; - return new String[]{watcher.getCustomName()}; + return new String[]{disguise.getWatcher() != null ? + disguise.getWatcher().getCustomName() : null}; } @Override @@ -64,7 +63,9 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Override public @Nullable Class[] acceptChange(Changer.ChangeMode mode) { - if (mode == Changer.ChangeMode.SET || mode == Changer.ChangeMode.RESET || mode == Changer.ChangeMode.DELETE) return CollectionUtils.array(String.class); + switch (mode) { + case SET, RESET, DELETE -> { return CollectionUtils.array(String.class); } + } return null; } @@ -72,11 +73,10 @@ Class[] acceptChange(Changer.ChangeMode mode) { public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; - if (mode != Changer.ChangeMode.SET) { - disguise.getWatcher().setCustomName(null); - return; + switch (mode) { + case RESET, DELETE -> disguise.getWatcher().setCustomName(null); + case SET -> disguise.getWatcher().setCustomName((String) delta[0]); } - disguise.getWatcher().setCustomName((String) delta[0]); DisguiseUtil.update(disguise); } } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseCustomNameVisible.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseCustomNameVisible.java index 0287c94..553e2e0 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseCustomNameVisible.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseCustomNameVisible.java @@ -34,9 +34,8 @@ public class ExprDisguiseCustomNameVisible extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - FlagWatcher watcher = disguise.getWatcher(); - if (watcher == null) return null; - return new Boolean[]{watcher.isCustomNameVisible()}; + return new Boolean[]{disguise.getWatcher() != null ? + disguise.getWatcher().isCustomNameVisible() : null}; } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseGlowColor.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseGlowColor.java index 79fdee5..24e13cc 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseGlowColor.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseGlowColor.java @@ -36,9 +36,8 @@ public class ExprDisguiseGlowColor extends SimpleExpression { protected SkriptColor[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - FlagWatcher watcher = disguise.getWatcher(); - if (watcher == null) return null; - return new SkriptColor[]{SkriptColor.valueOf(watcher.getGlowColor().name())}; + return new SkriptColor[]{SkriptColor.valueOf(disguise.getWatcher() != null ? + disguise.getWatcher().getGlowColor().name() : null)}; } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseGlowing.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseGlowing.java index edf1232..80faacd 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseGlowing.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseGlowing.java @@ -34,9 +34,8 @@ public class ExprDisguiseGlowing extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - FlagWatcher watcher = disguise.getWatcher(); - if (watcher == null) return null; - return new Boolean[]{watcher.isGlowing()}; + return new Boolean[]{disguise.getWatcher() != null ? + disguise.getWatcher().isGlowing() : null}; } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseInvisible.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseInvisible.java index d3cf988..b521ce4 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseInvisible.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseInvisible.java @@ -35,10 +35,8 @@ public class ExprDisguiseInvisible extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - if (!disguise.isMobDisguise()) return null; - FlagWatcher watcher = disguise.getWatcher(); - if (watcher == null) return null; - return new Boolean[]{watcher.isInvisible() != isNegated}; + return new Boolean[]{disguise.getWatcher() != null ? + disguise.getWatcher().isInvisible() : null}; } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseItemMainHand.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseItemMainHand.java index a9ad171..4817708 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseItemMainHand.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseItemMainHand.java @@ -37,9 +37,8 @@ public class ExprDisguiseItemMainHand extends SimpleExpression { ItemStack[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - if (!disguise.isMobDisguise()) return null; - FlagWatcher watcher = disguise.getWatcher(); - return new ItemStack[]{(watcher.getItemInMainHand() != null ? watcher.getItemInMainHand() : new ItemStack(Material.AIR))}; + return new ItemStack[]{disguise.getWatcher() != null ? + disguise.getWatcher().getItemInMainHand() : null}; } @Override @@ -64,26 +63,23 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye } @Override - public Class[] acceptChange(final Changer.ChangeMode changeMode) { - if ( - changeMode != Changer.ChangeMode.SET && - changeMode != Changer.ChangeMode.DELETE && - changeMode != Changer.ChangeMode.REMOVE_ALL && - changeMode != Changer.ChangeMode.RESET) return null; - return CollectionUtils.array(ItemStack.class); + public Class[] acceptChange(final Changer.ChangeMode mode) { + switch (mode) { + case SET, DELETE, REMOVE_ALL, RESET -> { return CollectionUtils.array(ItemStack.class); } + } + return null; } @Override - public void change(Event e, Object[] delta, Changer.ChangeMode changeMode) { + public void change(Event e, Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; if (!disguise.isMobDisguise()) return; FlagWatcher watcher = disguise.getWatcher(); - if (changeMode != Changer.ChangeMode.SET) { - watcher.setItemInMainHand(new ItemStack(Material.AIR)); - return; + switch (mode) { + case SET -> watcher.setItemInMainHand((ItemStack) delta[0]); + case DELETE, REMOVE_ALL, RESET -> watcher.setItemInMainHand(new ItemStack(Material.AIR)); } - watcher.setItemInMainHand((ItemStack) delta[0]); DisguiseUtil.update(disguise); } } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseItemOffhand.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseItemOffhand.java index 15606e1..096de9a 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseItemOffhand.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseItemOffhand.java @@ -37,9 +37,8 @@ public class ExprDisguiseItemOffhand extends SimpleExpression { ItemStack[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - if (!disguise.isMobDisguise()) return null; - FlagWatcher watcher = disguise.getWatcher(); - return new ItemStack[]{(watcher.getItemInOffHand() != null ? watcher.getItemInOffHand() : new ItemStack(Material.AIR))}; + return new ItemStack[]{disguise.getWatcher() != null ? + disguise.getWatcher().getItemInOffHand() : null}; } @Override @@ -64,26 +63,23 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye } @Override - public Class[] acceptChange(final Changer.ChangeMode changeMode) { - if ( - changeMode != Changer.ChangeMode.SET && - changeMode != Changer.ChangeMode.DELETE && - changeMode != Changer.ChangeMode.REMOVE_ALL && - changeMode != Changer.ChangeMode.RESET) return null; - return CollectionUtils.array(ItemStack.class); + public Class[] acceptChange(final Changer.ChangeMode mode) { + switch (mode) { + case SET, DELETE, REMOVE_ALL, RESET -> { return CollectionUtils.array(ItemStack.class); } + } + return null; } @Override - public void change(Event e, Object[] delta, Changer.ChangeMode changeMode) { + public void change(Event e, Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; if (!disguise.isMobDisguise()) return; FlagWatcher watcher = disguise.getWatcher(); - if (changeMode != Changer.ChangeMode.SET) { - watcher.setItemInOffHand(new ItemStack(Material.AIR)); - return; + switch (mode) { + case SET -> watcher.setItemInOffHand((ItemStack) delta[0]); + case DELETE, REMOVE_ALL, RESET -> watcher.setItemInOffHand(new ItemStack(Material.AIR)); } - watcher.setItemInOffHand((ItemStack) delta[0]); DisguiseUtil.update(disguise); } } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseSlot.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseSlot.java index a767f6f..17b8b9b 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseSlot.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseSlot.java @@ -39,34 +39,17 @@ public class ExprDisguiseSlot extends SimpleExpression { ItemStack[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - if (!disguise.isMobDisguise()) return null; - FlagWatcher watcher = disguise.getWatcher(); - ItemStack itemStack; - EquipmentSlot slot; + EquipmentSlot slot = null; switch (mark) { - case 1: - slot = EquipmentSlot.HEAD; - break; - case 2: - slot = EquipmentSlot.CHEST; - break; - case 3: - slot = EquipmentSlot.LEGS; - break; - case 4: - slot = EquipmentSlot.FEET; - break; - case 5: - slot = EquipmentSlot.HAND; - break; - case 6: - slot = EquipmentSlot.OFF_HAND; - break; - default: - return new ItemStack[]{new ItemStack(Material.AIR, 1)}; + case 1 -> slot = EquipmentSlot.HEAD; + case 2 -> slot = EquipmentSlot.CHEST; + case 3 -> slot = EquipmentSlot.LEGS; + case 4 -> slot = EquipmentSlot.FEET; + case 5 -> slot = EquipmentSlot.HAND; + case 6 -> slot = EquipmentSlot.OFF_HAND; } - itemStack = watcher.getItemStack(slot); - return new ItemStack[]{itemStack != null ? itemStack : new ItemStack(Material.AIR, 1)}; + return new ItemStack[]{disguise.getWatcher() != null ? + disguise.getWatcher().getItemStack(slot) : null}; } @Override @@ -92,47 +75,30 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye } @Override - public Class[] acceptChange(final Changer.ChangeMode changeMode) { - if ( - changeMode != Changer.ChangeMode.SET && - changeMode != Changer.ChangeMode.DELETE && - changeMode != Changer.ChangeMode.REMOVE_ALL && - changeMode != Changer.ChangeMode.RESET) return null; - return CollectionUtils.array(ItemStack.class); + public Class[] acceptChange(final Changer.ChangeMode mode) { + switch (mode) { + case SET, DELETE, REMOVE_ALL, RESET -> { return CollectionUtils.array(ItemStack.class); } + } + return null; } @Override - public void change(Event e, Object[] delta, Changer.ChangeMode changeMode) { + public void change(Event e, Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; - if (!disguise.isMobDisguise()) return; FlagWatcher watcher = disguise.getWatcher(); ItemStack itemStack = new ItemStack(Material.AIR, 1); try { itemStack = (ItemStack) delta[0]; } catch (NullPointerException ignore) {} - EquipmentSlot slot; + EquipmentSlot slot = null; switch (mark) { - case 1: - slot = EquipmentSlot.HEAD; - break; - case 2: - slot = EquipmentSlot.CHEST; - break; - case 3: - slot = EquipmentSlot.LEGS; - break; - case 4: - slot = EquipmentSlot.FEET; - break; - case 5: - slot = EquipmentSlot.HAND; - break; - case 6: - slot = EquipmentSlot.OFF_HAND; - break; - default: - return; + case 1 -> slot = EquipmentSlot.HEAD; + case 2 -> slot = EquipmentSlot.CHEST; + case 3 -> slot = EquipmentSlot.LEGS; + case 4 -> slot = EquipmentSlot.FEET; + case 5 -> slot = EquipmentSlot.HAND; + case 6 -> slot = EquipmentSlot.OFF_HAND; } watcher.setItemStack(slot, itemStack); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseSneaking.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseSneaking.java index 68a1e65..5b621d1 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseSneaking.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseSneaking.java @@ -34,9 +34,8 @@ public class ExprDisguiseSneaking extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - FlagWatcher watcher = disguise.getWatcher(); - if (watcher == null) return null; - return new Boolean[]{watcher.isSneaking()}; + return new Boolean[]{disguise.getWatcher() != null ? + disguise.getWatcher().isSneaking() : null}; } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseSwimming.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseSwimming.java new file mode 100644 index 0000000..ca828a7 --- /dev/null +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseSwimming.java @@ -0,0 +1,78 @@ +package me.tud.diskuise.elements.watchers.flag.expressions; + +import ch.njol.skript.Skript; +import ch.njol.skript.classes.Changer; +import ch.njol.skript.doc.*; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.ExpressionType; +import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.lang.util.SimpleExpression; +import ch.njol.util.Kleenean; +import ch.njol.util.coll.CollectionUtils; +import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.FlagWatcher; +import me.tud.diskuise.utils.DisguiseUtil; +import org.bukkit.event.Event; +import org.jetbrains.annotations.Nullable; + +@Name("Disguise - Swimming") +@Description("Set or get if a disguise appears to be swimming") +@Examples("set swim of disguise {dis} to true") +@Since("0.2-beta3") +@RequiredPlugins({"LibsDisguises"}) +public class ExprDisguiseSwimming extends SimpleExpression { + + static { + Skript.registerExpression(ExprDisguiseSwimming.class, Boolean.class, ExpressionType.PROPERTY, + "[the] swim[(ing|s)] [(value|option|state)] of [dis(k|g)uise] %disguise%", + "[dis(k|g)uise] %disguise%'s swim[(ing|s)] [(value|option|state)]"); + } + + Expression disguise; + + @Override + protected Boolean[] get(Event e) { + Disguise disguise = this.disguise.getSingle(e); + if (disguise == null) return null; + return new Boolean[]{disguise.getWatcher() != null ? + disguise.getWatcher().isSwimming() : null}; + } + + @Override + public boolean isSingle() { + return true; + } + + @Override + public Class getReturnType() { + return Boolean.class; + } + + @Override + public String toString(@Nullable Event e, boolean debug) { + return null; + } + + @Override + @SuppressWarnings("unchecked") + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { + disguise = (Expression) exprs[0]; + return true; + } + + @Override + public @Nullable + Class[] acceptChange(Changer.ChangeMode mode) { + if (mode == Changer.ChangeMode.SET) return CollectionUtils.array(Boolean.class); + return null; + } + + @Override + public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { + Disguise disguise = this.disguise.getSingle(e); + if (disguise == null) return; + boolean bool = Boolean.TRUE.equals(delta[0]); + disguise.getWatcher().setSwimming(bool); + DisguiseUtil.update(disguise); + } +} diff --git a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseUpsideDown.java b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseUpsideDown.java index 09ea383..8fa5ffb 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseUpsideDown.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/flag/expressions/ExprDisguiseUpsideDown.java @@ -34,9 +34,8 @@ public class ExprDisguiseUpsideDown extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - FlagWatcher watcher = disguise.getWatcher(); - if (watcher == null) return null; - return new Boolean[]{watcher.isUpsideDown()}; + return new Boolean[]{disguise.getWatcher() != null ? + disguise.getWatcher().isUpsideDown() : null}; } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/enderman/conditions/CondIsAggressive.java b/src/main/java/me/tud/diskuise/elements/watchers/insentient/conditions/CondIsAggressive.java similarity index 68% rename from src/main/java/me/tud/diskuise/elements/watchers/enderman/conditions/CondIsAggressive.java rename to src/main/java/me/tud/diskuise/elements/watchers/insentient/conditions/CondIsAggressive.java index fbe0bc0..d9364e7 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/enderman/conditions/CondIsAggressive.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/insentient/conditions/CondIsAggressive.java @@ -1,4 +1,4 @@ -package me.tud.diskuise.elements.watchers.enderman.conditions; +package me.tud.diskuise.elements.watchers.insentient.conditions; import ch.njol.skript.Skript; import ch.njol.skript.doc.*; @@ -8,14 +8,15 @@ import ch.njol.util.Kleenean; import me.libraryaddict.disguise.disguisetypes.Disguise; import me.libraryaddict.disguise.disguisetypes.watchers.EndermanWatcher; +import me.libraryaddict.disguise.disguisetypes.watchers.GhastWatcher; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; -@Name("Enderman Disguise - Is Aggressive") -@Description("Checks if an enderman disguise is aggressive") +@Name("Insentient Disguise - Is Aggressive") +@Description("Checks if an insentient disguise is aggressive") @Examples({"if {dis} is aggressive:", "\tset aggressive state of {dis} to false"}) -@Since("0.2-beta1") +@Since("0.2-beta3") @RequiredPlugins({"LibsDisguises"}) public class CondIsAggressive extends Condition { @@ -30,11 +31,10 @@ public class CondIsAggressive extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - EndermanWatcher watcher; - try { - watcher = (EndermanWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - return watcher.isAggressive() != isNegated(); + boolean isAggressive = false; + if (disguise.getWatcher() instanceof EndermanWatcher) isAggressive = ((EndermanWatcher) disguise.getWatcher()).isAggressive(); + else if (disguise.getWatcher() instanceof GhastWatcher) isAggressive = ((GhastWatcher) disguise.getWatcher()).isAggressive(); + return isAggressive != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/insentient/effects/EffDisguiseMakeAI.java b/src/main/java/me/tud/diskuise/elements/watchers/insentient/effects/EffDisguiseMakeAI.java new file mode 100644 index 0000000..fa5ff3a --- /dev/null +++ b/src/main/java/me/tud/diskuise/elements/watchers/insentient/effects/EffDisguiseMakeAI.java @@ -0,0 +1,54 @@ +package me.tud.diskuise.elements.watchers.insentient.effects; + +import ch.njol.skript.Skript; +import ch.njol.skript.doc.*; +import ch.njol.skript.lang.Effect; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.SkriptParser; +import ch.njol.util.Kleenean; +import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.watchers.InsentientWatcher; +import me.libraryaddict.disguise.disguisetypes.watchers.PlayerWatcher; +import me.tud.diskuise.utils.DisguiseUtil; +import org.bukkit.event.Event; +import org.jetbrains.annotations.Nullable; + +@Name("Insentient Disguise - Make AI") +@Description("Sets if an insentient disguise has AI") +@Examples("make player's disguise have ai") +@Since("0.2-beta2") +@RequiredPlugins({"LibsDisguises"}) +public class EffDisguiseMakeAI extends Effect { + + static { + Skript.registerEffect(EffDisguiseMakeAI.class, + "make [dis(k|g)uise] %disguise% [1¦not] have (ai|artificial intelligence)"); + } + + Expression disguise; + boolean bool; + + @Override + protected void execute(Event e) { + Disguise disguise = this.disguise.getSingle(e); + if (disguise == null) return; + InsentientWatcher watcher; + if (disguise.getWatcher() instanceof InsentientWatcher) watcher = (InsentientWatcher) disguise.getWatcher(); + else return; + watcher.setAI(bool); + DisguiseUtil.update(disguise); + } + + @Override + public String toString(@Nullable Event e, boolean debug) { + return null; + } + + @Override + @SuppressWarnings("unchecked") + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { + disguise = (Expression) exprs[0]; + bool = parseResult.mark != 1; + return true; + } +} diff --git a/src/main/java/me/tud/diskuise/elements/watchers/enderman/effects/EffDisguiseMakeAggressive.java b/src/main/java/me/tud/diskuise/elements/watchers/insentient/effects/EffDisguiseMakeAggressive.java similarity index 73% rename from src/main/java/me/tud/diskuise/elements/watchers/enderman/effects/EffDisguiseMakeAggressive.java rename to src/main/java/me/tud/diskuise/elements/watchers/insentient/effects/EffDisguiseMakeAggressive.java index 6ec219c..3bc2241 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/enderman/effects/EffDisguiseMakeAggressive.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/insentient/effects/EffDisguiseMakeAggressive.java @@ -1,4 +1,4 @@ -package me.tud.diskuise.elements.watchers.enderman.effects; +package me.tud.diskuise.elements.watchers.insentient.effects; import ch.njol.skript.Skript; import ch.njol.skript.doc.*; @@ -8,12 +8,13 @@ import ch.njol.util.Kleenean; import me.libraryaddict.disguise.disguisetypes.Disguise; import me.libraryaddict.disguise.disguisetypes.watchers.EndermanWatcher; +import me.libraryaddict.disguise.disguisetypes.watchers.GhastWatcher; import me.tud.diskuise.utils.DisguiseUtil; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; -@Name("Enderman Disguise - Make Aggressive") -@Description("Sets if an enderman disguise appears to be aggressive") +@Name("Insentient Disguise - Make Aggressive") +@Description("Sets if an insentient disguise appears to be aggressive") @Examples({"make player's disguise aggressive"}) @Since("0.2-beta3") @RequiredPlugins({"LibsDisguises"}) @@ -31,11 +32,9 @@ public class EffDisguiseMakeAggressive extends Effect { protected void execute(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; - EndermanWatcher watcher; - try { - watcher = (EndermanWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } - watcher.setAggressive(bool); + if (disguise.getWatcher() instanceof EndermanWatcher) ((EndermanWatcher) disguise.getWatcher()).setAggressive(bool); + else if (disguise.getWatcher() instanceof GhastWatcher) ((GhastWatcher) disguise.getWatcher()).setAggressive(bool); + else return; DisguiseUtil.update(disguise); } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/insentient/effects/EffDisguiseMakeEnraged.java b/src/main/java/me/tud/diskuise/elements/watchers/insentient/effects/EffDisguiseMakeEnraged.java new file mode 100644 index 0000000..6a542a2 --- /dev/null +++ b/src/main/java/me/tud/diskuise/elements/watchers/insentient/effects/EffDisguiseMakeEnraged.java @@ -0,0 +1,53 @@ +package me.tud.diskuise.elements.watchers.insentient.effects; + +import ch.njol.skript.Skript; +import ch.njol.skript.doc.*; +import ch.njol.skript.lang.Effect; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.SkriptParser; +import ch.njol.util.Kleenean; +import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.watchers.InsentientWatcher; +import me.tud.diskuise.utils.DisguiseUtil; +import org.bukkit.event.Event; +import org.jetbrains.annotations.Nullable; + +@Name("Insentient Disguise - Make Enraged") +@Description("Sets if an insentient disguise appears to be enraged") +@Examples("make player's disguise enraged") +@Since("0.2-beta2") +@RequiredPlugins({"LibsDisguises"}) +public class EffDisguiseMakeEnraged extends Effect { + + static { + Skript.registerEffect(EffDisguiseMakeEnraged.class, + "make [dis(k|g)uise] %disguise% [1¦not] enrage[d]"); + } + + Expression disguise; + boolean bool; + + @Override + protected void execute(Event e) { + Disguise disguise = this.disguise.getSingle(e); + if (disguise == null) return; + InsentientWatcher watcher; + if (disguise.getWatcher() instanceof InsentientWatcher) watcher = (InsentientWatcher) disguise.getWatcher(); + else return; + watcher.setEnraged(bool); + DisguiseUtil.update(disguise); + } + + @Override + public String toString(@Nullable Event e, boolean debug) { + return null; + } + + @Override + @SuppressWarnings("unchecked") + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { + disguise = (Expression) exprs[0]; + bool = parseResult.mark != 1; + return true; + } +} diff --git a/src/main/java/me/tud/diskuise/elements/watchers/insentient/expressions/ExprDisguiseAI.java b/src/main/java/me/tud/diskuise/elements/watchers/insentient/expressions/ExprDisguiseAI.java new file mode 100644 index 0000000..763a7aa --- /dev/null +++ b/src/main/java/me/tud/diskuise/elements/watchers/insentient/expressions/ExprDisguiseAI.java @@ -0,0 +1,82 @@ +package me.tud.diskuise.elements.watchers.insentient.expressions; + +import ch.njol.skript.Skript; +import ch.njol.skript.classes.Changer; +import ch.njol.skript.doc.*; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.ExpressionType; +import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.lang.util.SimpleExpression; +import ch.njol.util.Kleenean; +import ch.njol.util.coll.CollectionUtils; +import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.watchers.InsentientWatcher; +import me.libraryaddict.disguise.disguisetypes.watchers.PlayerWatcher; +import me.tud.diskuise.utils.DisguiseUtil; +import org.bukkit.event.Event; +import org.jetbrains.annotations.Nullable; + +@Name("Insentient Disguise - AI") +@Description("Set or get if an insentient disguise has AI") +@Examples("set ai of disguise {dis} to true") +@Since("0.2-beta3") +@RequiredPlugins({"LibsDisguises"}) +public class ExprDisguiseAI extends SimpleExpression { + + static { + Skript.registerExpression(ExprDisguiseAI.class, Boolean.class, ExpressionType.PROPERTY, + "[the] [(is|has)] (ai|artificial intelligence) [(value|option|state)] of [dis(k|g)uise] %disguise%", + "[dis(k|g)uise] %disguise%'s [(is|has)] (ai|artificial intelligence) [(value|option|state)]"); + } + + Expression disguise; + + @Override + protected Boolean[] get(Event e) { + Disguise disguise = this.disguise.getSingle(e); + if (disguise == null) return null; + return new Boolean[]{disguise.getWatcher() instanceof InsentientWatcher ? + ((InsentientWatcher) disguise.getWatcher()).isAI() : null}; + } + + @Override + public boolean isSingle() { + return true; + } + + @Override + public Class getReturnType() { + return Boolean.class; + } + + @Override + public String toString(@Nullable Event e, boolean debug) { + return null; + } + + @Override + @SuppressWarnings("unchecked") + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { + disguise = (Expression) exprs[0]; + return true; + } + + @Override + public @Nullable + Class[] acceptChange(Changer.ChangeMode mode) { + if (mode == Changer.ChangeMode.SET) return CollectionUtils.array(Boolean.class); + return null; + } + + @Override + public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { + Disguise disguise = this.disguise.getSingle(e); + if (disguise == null) return; + InsentientWatcher watcher; + if (disguise.getWatcher() instanceof InsentientWatcher) watcher = (InsentientWatcher) disguise.getWatcher(); + else return; + boolean bool = Boolean.TRUE.equals(delta[0]); + watcher.setAI(bool); + DisguiseUtil.update(disguise); + } +} diff --git a/src/main/java/me/tud/diskuise/elements/watchers/enderman/expressions/ExprDisguiseAggressive.java b/src/main/java/me/tud/diskuise/elements/watchers/insentient/expressions/ExprDisguiseAggressive.java similarity index 71% rename from src/main/java/me/tud/diskuise/elements/watchers/enderman/expressions/ExprDisguiseAggressive.java rename to src/main/java/me/tud/diskuise/elements/watchers/insentient/expressions/ExprDisguiseAggressive.java index b5b575c..29263f2 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/enderman/expressions/ExprDisguiseAggressive.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/insentient/expressions/ExprDisguiseAggressive.java @@ -1,4 +1,4 @@ -package me.tud.diskuise.elements.watchers.enderman.expressions; +package me.tud.diskuise.elements.watchers.insentient.expressions; import ch.njol.skript.Skript; import ch.njol.skript.classes.Changer; @@ -11,12 +11,14 @@ import ch.njol.util.coll.CollectionUtils; import me.libraryaddict.disguise.disguisetypes.Disguise; import me.libraryaddict.disguise.disguisetypes.watchers.EndermanWatcher; +import me.libraryaddict.disguise.disguisetypes.watchers.GhastWatcher; +import me.libraryaddict.disguise.disguisetypes.watchers.InsentientWatcher; import me.tud.diskuise.utils.DisguiseUtil; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; -@Name("Enderman Disguise - Aggressive") -@Description("Set or get if an enderman disguise appears to be aggressive") +@Name("Insentient Disguise - Aggressive") +@Description("Set or get if an insentient disguise appears to be aggressive") @Examples("set aggressiveness of disguise {dis} to true") @Since("0.2-beta3") @RequiredPlugins({"LibsDisguises"}) @@ -34,12 +36,10 @@ public class ExprDisguiseAggressive extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - EndermanWatcher watcher; - try { - watcher = (EndermanWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - return new Boolean[]{watcher.isAggressive()}; + boolean isAggressive = false; + if (disguise.getWatcher() instanceof EndermanWatcher) isAggressive = ((EndermanWatcher) disguise.getWatcher()).isAggressive(); + else if (disguise.getWatcher() instanceof GhastWatcher) isAggressive = ((GhastWatcher) disguise.getWatcher()).isAggressive(); + return new Boolean[]{isAggressive}; } @Override @@ -75,12 +75,10 @@ Class[] acceptChange(Changer.ChangeMode mode) { public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; - EndermanWatcher watcher; - try { - watcher = (EndermanWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } boolean bool = Boolean.TRUE.equals(delta[0]); - watcher.setAggressive(bool); + if (disguise.getWatcher() instanceof EndermanWatcher) ((EndermanWatcher) disguise.getWatcher()).setAggressive(bool); + else if (disguise.getWatcher() instanceof GhastWatcher) ((GhastWatcher) disguise.getWatcher()).setAggressive(bool); + else return; DisguiseUtil.update(disguise); } } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/insentient/expressions/ExprDisguiseEnraged.java b/src/main/java/me/tud/diskuise/elements/watchers/insentient/expressions/ExprDisguiseEnraged.java new file mode 100644 index 0000000..18ca678 --- /dev/null +++ b/src/main/java/me/tud/diskuise/elements/watchers/insentient/expressions/ExprDisguiseEnraged.java @@ -0,0 +1,81 @@ +package me.tud.diskuise.elements.watchers.insentient.expressions; + +import ch.njol.skript.Skript; +import ch.njol.skript.classes.Changer; +import ch.njol.skript.doc.*; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.ExpressionType; +import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.lang.util.SimpleExpression; +import ch.njol.util.Kleenean; +import ch.njol.util.coll.CollectionUtils; +import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.watchers.InsentientWatcher; +import me.tud.diskuise.utils.DisguiseUtil; +import org.bukkit.event.Event; +import org.jetbrains.annotations.Nullable; + +@Name("Insentient Disguise - Enraged") +@Description("Set or get if an insentient disguise appears to be enraged") +@Examples("set enraged of disguise {dis} to true") +@Since("0.2-beta3") +@RequiredPlugins({"LibsDisguises"}) +public class ExprDisguiseEnraged extends SimpleExpression { + + static { + Skript.registerExpression(ExprDisguiseEnraged.class, Boolean.class, ExpressionType.PROPERTY, + "[the] [is] enrage[d] [(value|option|state)] of [dis(k|g)uise] %disguise%", + "[dis(k|g)uise] %disguise%'s [is] enrage[d] [(value|option|state)]"); + } + + Expression disguise; + + @Override + protected Boolean[] get(Event e) { + Disguise disguise = this.disguise.getSingle(e); + if (disguise == null) return null; + return new Boolean[]{disguise.getWatcher() instanceof InsentientWatcher ? + ((InsentientWatcher) disguise.getWatcher()).isEnraged() : null}; + } + + @Override + public boolean isSingle() { + return true; + } + + @Override + public Class getReturnType() { + return Boolean.class; + } + + @Override + public String toString(@Nullable Event e, boolean debug) { + return null; + } + + @Override + @SuppressWarnings("unchecked") + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { + disguise = (Expression) exprs[0]; + return true; + } + + @Override + public @Nullable + Class[] acceptChange(Changer.ChangeMode mode) { + if (mode == Changer.ChangeMode.SET) return CollectionUtils.array(Boolean.class); + return null; + } + + @Override + public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { + Disguise disguise = this.disguise.getSingle(e); + if (disguise == null) return; + InsentientWatcher watcher; + if (disguise.getWatcher() instanceof InsentientWatcher) watcher = (InsentientWatcher) disguise.getWatcher(); + else return; + boolean bool = Boolean.TRUE.equals(delta[0]); + watcher.setEnraged(bool); + DisguiseUtil.update(disguise); + } +} diff --git a/src/main/java/me/tud/diskuise/elements/watchers/irongolem/expressions/ExprDisguiseCracks.java b/src/main/java/me/tud/diskuise/elements/watchers/irongolem/expressions/ExprDisguiseCracks.java new file mode 100644 index 0000000..d62e7e8 --- /dev/null +++ b/src/main/java/me/tud/diskuise/elements/watchers/irongolem/expressions/ExprDisguiseCracks.java @@ -0,0 +1,105 @@ +package me.tud.diskuise.elements.watchers.irongolem.expressions; + +import ch.njol.skript.Skript; +import ch.njol.skript.classes.Changer; +import ch.njol.skript.doc.*; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.ExpressionType; +import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.lang.util.SimpleExpression; +import ch.njol.util.Kleenean; +import ch.njol.util.coll.CollectionUtils; +import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.GolemCrack; +import me.libraryaddict.disguise.disguisetypes.watchers.InsentientWatcher; +import me.libraryaddict.disguise.disguisetypes.watchers.IronGolemWatcher; +import me.libraryaddict.disguise.disguisetypes.watchers.ItemFrameWatcher; +import me.tud.diskuise.utils.DisguiseUtil; +import org.bukkit.event.Event; +import org.jetbrains.annotations.Nullable; + +@Name("Iron Golem Disguise - Cracks") +@Description({"Set or get the cracks in an iron golem disguise", "The stages go from 1-4 (1 being no cracks and 4 being full of cracks)"}) +@Examples("set the golem cracks of {_dis} to 3") +@Since("0.2-beta3") +@RequiredPlugins({"LibsDisguises"}) +public class ExprDisguiseCracks extends SimpleExpression { + + static { + Skript.registerExpression(ExprDisguiseCracks.class, Number.class, ExpressionType.PROPERTY, + "[the] [[iron[ ]]golem] crack[s] [stage] of [dis(k|g)uise] %disguise%", + "[dis(k|g)uise] %disguise%'s [[iron[ ]]golem] crack[s] [stage]"); + } + + Expression disguise; + + @Override + protected Number[] get(Event e) { + Disguise disguise = this.disguise.getSingle(e); + if (disguise == null) return null; + IronGolemWatcher watcher; + if (disguise.getWatcher() instanceof IronGolemWatcher) watcher = (IronGolemWatcher) disguise.getWatcher(); + else return null; + if (watcher.getCracks() == null) return new Number[]{1}; + Integer stage = null; + switch (watcher.getCracks()) { + case HEALTH_100 -> stage = 1; + case HEALTH_75 -> stage = 2; + case HEALTH_50 -> stage = 3; + case HEALTH_25 -> stage = 4; + } + return new Number[]{stage}; + } + + @Override + public boolean isSingle() { + return true; + } + + @Override + public Class getReturnType() { + return Number.class; + } + + @Override + public String toString(@Nullable Event e, boolean debug) { + return null; + } + + @Override + @SuppressWarnings("unchecked") + public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelayed, SkriptParser.ParseResult parseResult) { + disguise = (Expression) exprs[0]; + return true; + } + + @Override + public @Nullable + Class[] acceptChange(Changer.ChangeMode mode) { + switch (mode) { + case SET, RESET, REMOVE_ALL -> { return CollectionUtils.array(Number.class); } + } + return null; + } + + @Override + public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { + if (delta[0] == null) return; + Disguise disguise = this.disguise.getSingle(e); + if (disguise == null) return; + IronGolemWatcher watcher; + if (disguise.getWatcher() instanceof IronGolemWatcher) watcher = (IronGolemWatcher) disguise.getWatcher(); + else return; + GolemCrack crack = GolemCrack.HEALTH_100; + if (mode == Changer.ChangeMode.SET) { + switch (((Number) delta[0]).intValue()) { + case 2 -> crack = GolemCrack.HEALTH_75; + case 3 -> crack = GolemCrack.HEALTH_50; + case 4 -> crack = GolemCrack.HEALTH_25; + } + } + + watcher.setCracks(crack); + DisguiseUtil.update(disguise); + } +} diff --git a/src/main/java/me/tud/diskuise/elements/watchers/itemframe/expressions/ExprDisguiseItem.java b/src/main/java/me/tud/diskuise/elements/watchers/itemframe/expressions/ExprDisguiseItem.java index 5d42d17..578b593 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/itemframe/expressions/ExprDisguiseItem.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/itemframe/expressions/ExprDisguiseItem.java @@ -10,6 +10,8 @@ import ch.njol.util.Kleenean; import ch.njol.util.coll.CollectionUtils; import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.watchers.InsentientWatcher; +import me.libraryaddict.disguise.disguisetypes.watchers.IronGolemWatcher; import me.libraryaddict.disguise.disguisetypes.watchers.ItemFrameWatcher; import me.tud.diskuise.utils.DisguiseUtil; import org.bukkit.event.Event; @@ -35,11 +37,8 @@ public class ExprDisguiseItem extends SimpleExpression { protected ItemStack[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - ItemFrameWatcher watcher; - try { - watcher = (ItemFrameWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - return new ItemStack[]{watcher.getItem()}; + return new ItemStack[]{disguise.getWatcher() instanceof ItemFrameWatcher ? + ((ItemFrameWatcher) disguise.getWatcher()).getItem() : null}; } @Override @@ -76,9 +75,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; ItemFrameWatcher watcher; - try { - watcher = (ItemFrameWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof ItemFrameWatcher) watcher = (ItemFrameWatcher) disguise.getWatcher(); + else return; ItemStack itemStack = (ItemStack) delta[0]; watcher.setItem(itemStack); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/itemframe/expressions/ExprDisguiseRotation.java b/src/main/java/me/tud/diskuise/elements/watchers/itemframe/expressions/ExprDisguiseRotation.java index bdceeab..1a95b42 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/itemframe/expressions/ExprDisguiseRotation.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/itemframe/expressions/ExprDisguiseRotation.java @@ -34,11 +34,8 @@ public class ExprDisguiseRotation extends SimpleExpression { protected Number[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - ItemFrameWatcher watcher; - try { - watcher = (ItemFrameWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - return new Number[]{watcher.getRotation()}; + return new Number[]{disguise.getWatcher() instanceof ItemFrameWatcher ? + ((ItemFrameWatcher) disguise.getWatcher()).getRotation() : null}; } @Override @@ -66,7 +63,9 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Override public @Nullable Class[] acceptChange(Changer.ChangeMode mode) { - if (mode == Changer.ChangeMode.SET || mode == Changer.ChangeMode.ADD || mode == Changer.ChangeMode.REMOVE) return CollectionUtils.array(Number.class); + switch (mode) { + case SET, ADD, REMOVE -> { return CollectionUtils.array(Number.class); } + } return null; } @@ -76,18 +75,20 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; ItemFrameWatcher watcher; - try { - watcher = (ItemFrameWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof ItemFrameWatcher) watcher = (ItemFrameWatcher) disguise.getWatcher(); + else return; int value = ((Number) delta[0]).intValue(); int rotation = watcher.getRotation(); - if (mode != Changer.ChangeMode.SET) { - if (mode == Changer.ChangeMode.REMOVE) value *= -1; - rotation += value; + switch (mode) { + case SET -> rotation = value; + case ADD, REMOVE -> { + if (mode == Changer.ChangeMode.REMOVE) value *= -1; + rotation += value; + } } - else rotation = value; + watcher.setRotation(rotation); DisguiseUtil.update(disguise); } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/living/conditions/CondIsHandRaised.java b/src/main/java/me/tud/diskuise/elements/watchers/living/conditions/CondIsHandRaised.java index 6e25104..b98ae10 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/living/conditions/CondIsHandRaised.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/living/conditions/CondIsHandRaised.java @@ -7,6 +7,7 @@ import ch.njol.skript.lang.SkriptParser; import ch.njol.util.Kleenean; import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.watchers.ArrowWatcher; import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; @@ -32,12 +33,10 @@ public class CondIsHandRaised extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - if (!isMainHand) return watcher.isOffhandRaised() != isNegated(); - return watcher.isMainHandRaised() != isNegated(); + if (!isMainHand) return disguise.getWatcher() instanceof LivingWatcher && + ((LivingWatcher) disguise.getWatcher()).isOffhandRaised() != isNegated(); + return disguise.getWatcher() instanceof LivingWatcher && + disguise.getWatcher().isMainHandRaised() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/living/conditions/CondIsParticlesAmbient.java b/src/main/java/me/tud/diskuise/elements/watchers/living/conditions/CondIsParticlesAmbient.java index 98252db..7163f44 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/living/conditions/CondIsParticlesAmbient.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/living/conditions/CondIsParticlesAmbient.java @@ -30,11 +30,8 @@ public class CondIsParticlesAmbient extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - return watcher.isPotionParticlesAmbient() != isNegated(); + return disguise.getWatcher() instanceof LivingWatcher && + ((LivingWatcher) disguise.getWatcher()).isPotionParticlesAmbient() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/living/conditions/CondIsSpinning.java b/src/main/java/me/tud/diskuise/elements/watchers/living/conditions/CondIsSpinning.java index d43bb5d..d5451be 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/living/conditions/CondIsSpinning.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/living/conditions/CondIsSpinning.java @@ -30,11 +30,8 @@ public class CondIsSpinning extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - return watcher.isSpinning() != isNegated(); + return disguise.getWatcher() instanceof LivingWatcher && + ((LivingWatcher) disguise.getWatcher()).isSpinning() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/living/effects/EffDisguiseMakeParticlesAmbient.java b/src/main/java/me/tud/diskuise/elements/watchers/living/effects/EffDisguiseMakeParticlesAmbient.java index 75f53ca..a15d3f1 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/living/effects/EffDisguiseMakeParticlesAmbient.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/living/effects/EffDisguiseMakeParticlesAmbient.java @@ -32,9 +32,8 @@ protected void execute(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof LivingWatcher) watcher = (LivingWatcher) disguise.getWatcher(); + else return; watcher.setPotionParticlesAmbient(bool); DisguiseUtil.update(disguise); } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/living/effects/EffDisguiseMakeSpin.java b/src/main/java/me/tud/diskuise/elements/watchers/living/effects/EffDisguiseMakeSpin.java index 4bdc116..8697d24 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/living/effects/EffDisguiseMakeSpin.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/living/effects/EffDisguiseMakeSpin.java @@ -32,9 +32,8 @@ protected void execute(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof LivingWatcher) watcher = (LivingWatcher) disguise.getWatcher(); + else return; watcher.setSpinning(bool); DisguiseUtil.update(disguise); } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/living/effects/EffDisguiseRaiseHand.java b/src/main/java/me/tud/diskuise/elements/watchers/living/effects/EffDisguiseRaiseHand.java index 1092174..f28f76c 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/living/effects/EffDisguiseRaiseHand.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/living/effects/EffDisguiseRaiseHand.java @@ -34,9 +34,8 @@ protected void execute(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof LivingWatcher) watcher = (LivingWatcher) disguise.getWatcher(); + else return; if (!isMainHand) watcher.setOffhandRaised(bool); else watcher.setMainHandRaised(bool); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseArrowsStuck.java b/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseArrowsStuck.java index 475e02c..d660390 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseArrowsStuck.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseArrowsStuck.java @@ -10,6 +10,7 @@ import ch.njol.util.Kleenean; import ch.njol.util.coll.CollectionUtils; import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.watchers.FallingBlockWatcher; import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher; import me.tud.diskuise.utils.DisguiseUtil; import org.bukkit.event.Event; @@ -33,11 +34,8 @@ public class ExprDisguiseArrowsStuck extends SimpleExpression { protected Number[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - return new Number[]{watcher.getArrowsSticking()}; + return new Number[]{disguise.getWatcher() instanceof LivingWatcher ? + ((LivingWatcher) disguise.getWatcher()).getArrowsSticking() : null}; } @Override @@ -65,7 +63,9 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Override public @Nullable Class[] acceptChange(Changer.ChangeMode mode) { - if (mode == Changer.ChangeMode.SET || mode == Changer.ChangeMode.ADD || mode == Changer.ChangeMode.REMOVE) return CollectionUtils.array(Number.class); + switch (mode) { + case SET, ADD, REMOVE, REMOVE_ALL -> { return CollectionUtils.array(Number.class); } + } return null; } @@ -75,18 +75,21 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof LivingWatcher) watcher = (LivingWatcher) disguise.getWatcher(); + else return; - int value = ((Number) delta[0]).intValue(); + int value = mode != Changer.ChangeMode.REMOVE_ALL ? ((Number) delta[0]).intValue() : 0; int arrows = watcher.getArrowsSticking(); - if (mode != Changer.ChangeMode.SET) { - if (mode == Changer.ChangeMode.REMOVE) value *= -1; - arrows += value; + switch (mode) { + case SET -> arrows = value; + case REMOVE_ALL -> arrows = 0; + case ADD, REMOVE -> { + if (mode == Changer.ChangeMode.REMOVE) value *= -1; + arrows += value; + } } - else arrows = value; + watcher.setArrowsSticking(arrows); DisguiseUtil.update(disguise); } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseHandRaised.java b/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseHandRaised.java index be6c0a4..55aa84c 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseHandRaised.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseHandRaised.java @@ -38,13 +38,10 @@ public class ExprDisguiseHandRaised extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - if (!isMainHand) return new Boolean[]{watcher.isOffhandRaised()}; - return new Boolean[]{watcher.isMainHandRaised()}; + if (!isMainHand) return new Boolean[]{disguise.getWatcher() instanceof LivingWatcher ? + ((LivingWatcher) disguise.getWatcher()).isOffhandRaised() : null}; + return new Boolean[]{disguise.getWatcher() instanceof LivingWatcher ? + disguise.getWatcher().isMainHandRaised() : null}; } @Override @@ -82,9 +79,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof LivingWatcher) watcher = (LivingWatcher) disguise.getWatcher(); + else return; boolean bool = Boolean.TRUE.equals(delta[0]); if (!isMainHand) watcher.setOffhandRaised(bool); else watcher.setMainHandRaised(bool); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseHealth.java b/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseHealth.java index 02d4e00..0c555ec 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseHealth.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseHealth.java @@ -34,11 +34,8 @@ public class ExprDisguiseHealth extends SimpleExpression { protected Number[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - return new Number[]{watcher.getHealth()}; + return new Number[]{disguise.getWatcher() instanceof LivingWatcher ? + ((LivingWatcher) disguise.getWatcher()).getHealth() : null}; } @Override @@ -66,7 +63,9 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Override public @Nullable Class[] acceptChange(Changer.ChangeMode mode) { - if (mode == Changer.ChangeMode.SET || mode == Changer.ChangeMode.ADD || mode == Changer.ChangeMode.REMOVE) return CollectionUtils.array(Number.class); + switch (mode) { + case SET, ADD, REMOVE -> { return CollectionUtils.array(Number.class); } + } return null; } @@ -76,18 +75,20 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof LivingWatcher) watcher = (LivingWatcher) disguise.getWatcher(); + else return; float value = ((Number) delta[0]).floatValue(); float health = watcher.getHealth(); - if (mode != Changer.ChangeMode.SET) { - if (mode == Changer.ChangeMode.REMOVE) value *= -1; - health += value; + switch (mode) { + case SET -> health = value; + case ADD, REMOVE -> { + if (mode == Changer.ChangeMode.REMOVE) value *= -1; + health += value; + } } - else health = value; + watcher.setHealth(health); DisguiseUtil.update(disguise); } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseMaxHealth.java b/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseMaxHealth.java index 6d0b473..9fba071 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseMaxHealth.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseMaxHealth.java @@ -34,11 +34,8 @@ public class ExprDisguiseMaxHealth extends SimpleExpression { protected Number[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - return new Number[]{watcher.getMaxHealth()}; + return new Number[]{disguise.getWatcher() instanceof LivingWatcher ? + ((LivingWatcher) disguise.getWatcher()).getMaxHealth() : null}; } @Override @@ -66,7 +63,9 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Override public @Nullable Class[] acceptChange(Changer.ChangeMode mode) { - if (mode == Changer.ChangeMode.SET || mode == Changer.ChangeMode.ADD || mode == Changer.ChangeMode.REMOVE) return CollectionUtils.array(Number.class); + switch (mode) { + case SET, ADD, REMOVE -> { return CollectionUtils.array(Number.class); } + } return null; } @@ -83,11 +82,14 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { double value = ((Number) delta[0]).doubleValue(); double maxHealth = watcher.getMaxHealth(); - if (mode != Changer.ChangeMode.SET) { - if (mode == Changer.ChangeMode.REMOVE) value *= -1; - maxHealth += value; + switch (mode) { + case SET -> maxHealth = value; + case ADD, REMOVE -> { + if (mode == Changer.ChangeMode.REMOVE) value *= -1; + maxHealth += value; + } } - else maxHealth = value; + watcher.setMaxHealth(maxHealth); DisguiseUtil.update(disguise); } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseParticleColor.java b/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseParticleColor.java index 9e5cd84..da56227 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseParticleColor.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseParticleColor.java @@ -36,11 +36,8 @@ public class ExprDisguiseParticleColor extends SimpleExpression { protected SkriptColor[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - return new SkriptColor[]{SkriptColor.fromBukkitColor(watcher.getParticlesColor())}; + return new SkriptColor[]{SkriptColor.fromBukkitColor(disguise.getWatcher() instanceof LivingWatcher ? + ((LivingWatcher) disguise.getWatcher()).getParticlesColor() : null)}; } @Override @@ -68,9 +65,9 @@ public boolean init(Expression[] exprs, int matchedPattern, Kleenean isDelaye @Override public @Nullable Class[] acceptChange(Changer.ChangeMode mode) { - if (mode == Changer.ChangeMode.SET || - mode == Changer.ChangeMode.RESET || - mode == Changer.ChangeMode.DELETE) return CollectionUtils.array(Color.class); + switch (mode) { + case SET, RESET, DELETE -> { return CollectionUtils.array(Color.class); } + } return null; } @@ -79,16 +76,11 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof LivingWatcher) watcher = (LivingWatcher) disguise.getWatcher(); + else return; org.bukkit.Color color = org.bukkit.Color.fromRGB(0); - if (mode == Changer.ChangeMode.SET) { - if (delta[0] != null) { - color = ((SkriptColor) delta[0]).asBukkitColor(); - } - } + if (mode == Changer.ChangeMode.SET && delta[0] != null) color = ((SkriptColor) delta[0]).asBukkitColor(); watcher.setParticlesColor(color); DisguiseUtil.update(disguise); } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseParticlesAmbient.java b/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseParticlesAmbient.java index 168b92a..4f15017 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseParticlesAmbient.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseParticlesAmbient.java @@ -34,12 +34,8 @@ public class ExprDisguiseParticlesAmbient extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - return new Boolean[]{watcher.isPotionParticlesAmbient()}; + return new Boolean[]{disguise.getWatcher() instanceof LivingWatcher ? + ((LivingWatcher) disguise.getWatcher()).isPotionParticlesAmbient() : null}; } @Override @@ -76,9 +72,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof LivingWatcher) watcher = (LivingWatcher) disguise.getWatcher(); + else return; boolean bool = Boolean.TRUE.equals(delta[0]); watcher.setPotionParticlesAmbient(bool); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseSpinning.java b/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseSpinning.java index 7783033..251448c 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseSpinning.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/living/expressions/ExprDisguiseSpinning.java @@ -34,12 +34,8 @@ public class ExprDisguiseSpinning extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - return new Boolean[]{watcher.isSpinning()}; + return new Boolean[]{disguise.getWatcher() instanceof LivingWatcher ? + ((LivingWatcher) disguise.getWatcher()).isSpinning() : null}; } @Override @@ -76,9 +72,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; LivingWatcher watcher; - try { - watcher = (LivingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof LivingWatcher) watcher = (LivingWatcher) disguise.getWatcher(); + else return; boolean bool = Boolean.TRUE.equals(delta[0]); watcher.setSpinning(bool); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/painting/expressions/ExprDisguiseArt.java b/src/main/java/me/tud/diskuise/elements/watchers/painting/expressions/ExprDisguiseArt.java index fdc4ce0..291c304 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/painting/expressions/ExprDisguiseArt.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/painting/expressions/ExprDisguiseArt.java @@ -35,11 +35,8 @@ public class ExprDisguiseArt extends SimpleExpression { protected Art[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - PaintingWatcher watcher; - try { - watcher = (PaintingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - return new Art[]{watcher.getArt()}; + return new Art[]{disguise.getWatcher() instanceof PaintingWatcher ? + ((PaintingWatcher) disguise.getWatcher()).getArt() : null}; } @Override @@ -77,9 +74,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; PaintingWatcher watcher; - try { - watcher = (PaintingWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof PaintingWatcher) watcher = (PaintingWatcher) disguise.getWatcher(); + else return; watcher.setArt((Art) delta[0]); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondHasShoulderParrot.java b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondHasShoulderParrot.java index f76543c..5663625 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondHasShoulderParrot.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondHasShoulderParrot.java @@ -7,6 +7,7 @@ import ch.njol.skript.lang.SkriptParser; import ch.njol.util.Kleenean; import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.watchers.ArrowWatcher; import me.libraryaddict.disguise.disguisetypes.watchers.PlayerWatcher; import org.bukkit.event.Event; import org.jetbrains.annotations.Nullable; @@ -32,12 +33,10 @@ public class CondHasShoulderParrot extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - if (isRight) return watcher.isRightShoulderHasParrot() != isNegated(); - else return watcher.isLeftShoulderHasParrot() != isNegated(); + if (isRight) return disguise.getWatcher() instanceof PlayerWatcher && + ((PlayerWatcher) disguise.getWatcher()).isRightShoulderHasParrot() != isNegated(); + return disguise.getWatcher() instanceof PlayerWatcher && + ((PlayerWatcher) disguise.getWatcher()).isLeftShoulderHasParrot() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsCapeEnabled.java b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsCapeEnabled.java index 4cacbec..f0a7ee5 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsCapeEnabled.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsCapeEnabled.java @@ -31,11 +31,8 @@ public class CondIsCapeEnabled extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - return watcher.isCapeEnabled() != isNegated(); + return disguise.getWatcher() instanceof PlayerWatcher && + ((PlayerWatcher) disguise.getWatcher()).isCapeEnabled() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsDisplayedInTab.java b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsDisplayedInTab.java index 0b02fd1..36a41f7 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsDisplayedInTab.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsDisplayedInTab.java @@ -30,11 +30,8 @@ public class CondIsDisplayedInTab extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - return watcher.isDisplayedInTab() != isNegated(); + return disguise.getWatcher() instanceof PlayerWatcher && + ((PlayerWatcher) disguise.getWatcher()).isDisplayedInTab() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsHatEnabled.java b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsHatEnabled.java index 7ad7eab..477e523 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsHatEnabled.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsHatEnabled.java @@ -31,11 +31,8 @@ public class CondIsHatEnabled extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - return watcher.isHatEnabled() != isNegated(); + return disguise.getWatcher() instanceof PlayerWatcher && + ((PlayerWatcher) disguise.getWatcher()).isHatEnabled() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsJacketEnabled.java b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsJacketEnabled.java index af7f046..7cdc7c5 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsJacketEnabled.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsJacketEnabled.java @@ -31,11 +31,8 @@ public class CondIsJacketEnabled extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - return watcher.isJacketEnabled() != isNegated(); + return disguise.getWatcher() instanceof PlayerWatcher && + ((PlayerWatcher) disguise.getWatcher()).isJacketEnabled() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsLeftHanded.java b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsLeftHanded.java index 24fedef..b93a74c 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsLeftHanded.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsLeftHanded.java @@ -31,11 +31,8 @@ public class CondIsLeftHanded extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - return (watcher.getMainHand() == MainHand.LEFT) != isNegated(); + return disguise.getWatcher() instanceof PlayerWatcher && + (((PlayerWatcher) disguise.getWatcher()).getMainHand() == MainHand.LEFT) != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsLeftPantsEnabled.java b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsLeftPantsEnabled.java index 7045bcb..e48e211 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsLeftPantsEnabled.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsLeftPantsEnabled.java @@ -31,11 +31,8 @@ public class CondIsLeftPantsEnabled extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - return watcher.isLeftPantsEnabled() != isNegated(); + return disguise.getWatcher() instanceof PlayerWatcher && + ((PlayerWatcher) disguise.getWatcher()).isLeftPantsEnabled() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsLeftSleeveEnabled.java b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsLeftSleeveEnabled.java index b3e88b5..9b39ab9 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsLeftSleeveEnabled.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsLeftSleeveEnabled.java @@ -31,11 +31,8 @@ public class CondIsLeftSleeveEnabled extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - return watcher.isLeftSleeveEnabled() != isNegated(); + return disguise.getWatcher() instanceof PlayerWatcher && + ((PlayerWatcher) disguise.getWatcher()).isLeftSleeveEnabled() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsPlayerNameVisible.java b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsPlayerNameVisible.java index 59203de..0f9a6a8 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsPlayerNameVisible.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsPlayerNameVisible.java @@ -30,11 +30,8 @@ public class CondIsPlayerNameVisible extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - return watcher.isNameVisible() != isNegated(); + return disguise.getWatcher() instanceof PlayerWatcher && + ((PlayerWatcher) disguise.getWatcher()).isNameVisible() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsRightHanded.java b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsRightHanded.java index 2ae55a9..ed92d4b 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsRightHanded.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsRightHanded.java @@ -31,11 +31,8 @@ public class CondIsRightHanded extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - return (watcher.getMainHand() == MainHand.RIGHT) != isNegated(); + return disguise.getWatcher() instanceof PlayerWatcher && + (((PlayerWatcher) disguise.getWatcher()).getMainHand() == MainHand.RIGHT) != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsRightPantsEnabled.java b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsRightPantsEnabled.java index a4c15b0..9465209 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsRightPantsEnabled.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsRightPantsEnabled.java @@ -31,11 +31,8 @@ public class CondIsRightPantsEnabled extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - return watcher.isRightPantsEnabled() != isNegated(); + return disguise.getWatcher() instanceof PlayerWatcher && + ((PlayerWatcher) disguise.getWatcher()).isRightPantsEnabled() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsRightSleeveEnabled.java b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsRightSleeveEnabled.java index 4541e4c..8c86578 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsRightSleeveEnabled.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/conditions/CondIsRightSleeveEnabled.java @@ -31,11 +31,8 @@ public class CondIsRightSleeveEnabled extends Condition { public boolean check(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return false; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return false; } - return watcher.isRightSleeveEnabled() != isNegated(); + return disguise.getWatcher() instanceof PlayerWatcher && + ((PlayerWatcher) disguise.getWatcher()).isRightSleeveEnabled() != isNegated(); } @Override diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/effects/EffDisguiseMakeDisplayInTab.java b/src/main/java/me/tud/diskuise/elements/watchers/player/effects/EffDisguiseMakeDisplayInTab.java index 107be91..55b88f3 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/effects/EffDisguiseMakeDisplayInTab.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/effects/EffDisguiseMakeDisplayInTab.java @@ -7,6 +7,7 @@ import ch.njol.skript.lang.SkriptParser; import ch.njol.util.Kleenean; import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.watchers.PaintingWatcher; import me.libraryaddict.disguise.disguisetypes.watchers.PlayerWatcher; import me.tud.diskuise.utils.DisguiseUtil; import org.bukkit.event.Event; @@ -32,9 +33,8 @@ protected void execute(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof PlayerWatcher) watcher = (PlayerWatcher) disguise.getWatcher(); + else return; watcher.setDisplayedInTab(bool); DisguiseUtil.update(disguise); } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/effects/EffDisguiseMakePlayerNameVisible.java b/src/main/java/me/tud/diskuise/elements/watchers/player/effects/EffDisguiseMakePlayerNameVisible.java index 33e0c73..76db2fb 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/effects/EffDisguiseMakePlayerNameVisible.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/effects/EffDisguiseMakePlayerNameVisible.java @@ -32,9 +32,8 @@ protected void execute(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof PlayerWatcher) watcher = (PlayerWatcher) disguise.getWatcher(); + else return; watcher.setNameVisible(bool); DisguiseUtil.update(disguise); } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/effects/EffDisguiseMakePreferredHand.java b/src/main/java/me/tud/diskuise/elements/watchers/player/effects/EffDisguiseMakePreferredHand.java index 0d5b67d..14554fb 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/effects/EffDisguiseMakePreferredHand.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/effects/EffDisguiseMakePreferredHand.java @@ -33,9 +33,8 @@ protected void execute(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof PlayerWatcher) watcher = (PlayerWatcher) disguise.getWatcher(); + else return; if (isRightHanded) watcher.setMainHand(MainHand.RIGHT); else watcher.setMainHand(MainHand.LEFT); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/effects/EffDisguiseSetSkin.java b/src/main/java/me/tud/diskuise/elements/watchers/player/effects/EffDisguiseSetSkin.java index 72c4088..d75c521 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/effects/EffDisguiseSetSkin.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/effects/EffDisguiseSetSkin.java @@ -34,13 +34,10 @@ protected void execute(Event e) { Object object = this.object.getSingle(e); if (disguise == null) return; PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof PlayerWatcher) watcher = (PlayerWatcher) disguise.getWatcher(); + else return; String skin; - if (object instanceof OfflinePlayer) { - skin = ((OfflinePlayer) object).getName(); - } + if (object instanceof OfflinePlayer) skin = ((OfflinePlayer) object).getName(); else skin = (String) object; watcher.setSkin(skin); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseCape.java b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseCape.java index 21593e8..5447130 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseCape.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseCape.java @@ -10,6 +10,7 @@ import ch.njol.util.Kleenean; import ch.njol.util.coll.CollectionUtils; import me.libraryaddict.disguise.disguisetypes.Disguise; +import me.libraryaddict.disguise.disguisetypes.watchers.LivingWatcher; import me.libraryaddict.disguise.disguisetypes.watchers.PlayerWatcher; import me.tud.diskuise.utils.DisguiseUtil; import org.bukkit.event.Event; @@ -34,12 +35,8 @@ public class ExprDisguiseCape extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - return new Boolean[]{watcher.isCapeEnabled()}; + return new Boolean[]{disguise.getWatcher() instanceof PlayerWatcher ? + ((PlayerWatcher) disguise.getWatcher()).isCapeEnabled() : null}; } @Override @@ -76,9 +73,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof PlayerWatcher) watcher = (PlayerWatcher) disguise.getWatcher(); + else return; boolean bool = Boolean.TRUE.equals(delta[0]); watcher.setCapeEnabled(bool); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseDisplayedInTab.java b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseDisplayedInTab.java index f0f8cbe..ffee8b4 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseDisplayedInTab.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseDisplayedInTab.java @@ -36,12 +36,8 @@ public class ExprDisguiseDisplayedInTab extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - return new Boolean[]{watcher.isDisplayedInTab()}; + return new Boolean[]{disguise.getWatcher() instanceof PlayerWatcher ? + ((PlayerWatcher) disguise.getWatcher()).isDisplayedInTab() : null}; } @Override @@ -78,9 +74,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof PlayerWatcher) watcher = (PlayerWatcher) disguise.getWatcher(); + else return; boolean bool = Boolean.TRUE.equals(delta[0]); watcher.setDisplayedInTab(bool); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseHat.java b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseHat.java index d7e49b8..1b2691c 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseHat.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseHat.java @@ -34,12 +34,8 @@ public class ExprDisguiseHat extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - return new Boolean[]{watcher.isHatEnabled()}; + return new Boolean[]{disguise.getWatcher() instanceof PlayerWatcher ? + ((PlayerWatcher) disguise.getWatcher()).isHatEnabled() : null}; } @Override @@ -76,9 +72,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof PlayerWatcher) watcher = (PlayerWatcher) disguise.getWatcher(); + else return; boolean bool = Boolean.TRUE.equals(delta[0]); watcher.setHatEnabled(bool); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseJacket.java b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseJacket.java index eea1417..fbe817f 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseJacket.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseJacket.java @@ -34,12 +34,8 @@ public class ExprDisguiseJacket extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - return new Boolean[]{watcher.isJacketEnabled()}; + return new Boolean[]{disguise.getWatcher() instanceof PlayerWatcher ? + ((PlayerWatcher) disguise.getWatcher()).isJacketEnabled() : null}; } @Override @@ -76,9 +72,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof PlayerWatcher) watcher = (PlayerWatcher) disguise.getWatcher(); + else return; boolean bool = Boolean.TRUE.equals(delta[0]); watcher.setJacketEnabled(bool); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseLeftPants.java b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseLeftPants.java index 8df24ac..84e7242 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseLeftPants.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseLeftPants.java @@ -34,12 +34,8 @@ public class ExprDisguiseLeftPants extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - return new Boolean[]{watcher.isLeftPantsEnabled()}; + return new Boolean[]{disguise.getWatcher() instanceof PlayerWatcher ? + ((PlayerWatcher) disguise.getWatcher()).isLeftPantsEnabled() : null}; } @Override @@ -76,9 +72,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof PlayerWatcher) watcher = (PlayerWatcher) disguise.getWatcher(); + else return; boolean bool = Boolean.TRUE.equals(delta[0]); watcher.setLeftPantsEnabled(bool); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseLeftSleeve.java b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseLeftSleeve.java index 47286c6..c27b8e9 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseLeftSleeve.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseLeftSleeve.java @@ -34,12 +34,8 @@ public class ExprDisguiseLeftSleeve extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - return new Boolean[]{watcher.isLeftSleeveEnabled()}; + return new Boolean[]{disguise.getWatcher() instanceof PlayerWatcher ? + ((PlayerWatcher) disguise.getWatcher()).isLeftSleeveEnabled() : null}; } @Override @@ -76,9 +72,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof PlayerWatcher) watcher = (PlayerWatcher) disguise.getWatcher(); + else return; boolean bool = Boolean.TRUE.equals(delta[0]); watcher.setLeftSleeveEnabled(bool); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseParrotVariant.java b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseParrotVariant.java index deb286e..d5c9842 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseParrotVariant.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseParrotVariant.java @@ -40,10 +40,8 @@ protected SkriptColor[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; + if (disguise.getWatcher() instanceof PlayerWatcher) watcher = (PlayerWatcher) disguise.getWatcher(); + else return null; if (isRight && !watcher.isRightShoulderHasParrot() || !isRight && !watcher.isLeftShoulderHasParrot()) return null; Parrot.Variant variant = (isRight ? watcher.getRightShoulderParrot() : watcher.getLeftShoulderParrot()); @@ -93,9 +91,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof PlayerWatcher) watcher = (PlayerWatcher) disguise.getWatcher(); + else return; assert delta[0] != null; ChatColor color = ((SkriptColor) delta[0]).asChatColor(); Parrot.Variant variant = null; diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguisePlayerNameVisible.java b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguisePlayerNameVisible.java index 312467e..e305ded 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguisePlayerNameVisible.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguisePlayerNameVisible.java @@ -34,12 +34,8 @@ public class ExprDisguisePlayerNameVisible extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - return new Boolean[]{watcher.isNameVisible()}; + return new Boolean[]{disguise.getWatcher() instanceof PlayerWatcher ? + ((PlayerWatcher) disguise.getWatcher()).isNameVisible() : null}; } @Override @@ -76,9 +72,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof PlayerWatcher) watcher = (PlayerWatcher) disguise.getWatcher(); + else return; boolean bool = Boolean.TRUE.equals(delta[0]); watcher.setNameVisible(bool); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguisePreferredHand.java b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguisePreferredHand.java index 918b9dc..a1b6278 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguisePreferredHand.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguisePreferredHand.java @@ -31,12 +31,8 @@ public class ExprDisguisePreferredHand extends SimpleExpression { protected String[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - String preferredHand = watcher.getMainHand().name().toLowerCase(); + String preferredHand = disguise.getWatcher() instanceof PlayerWatcher ? + ((PlayerWatcher) disguise.getWatcher()).getMainHand().name().toLowerCase() : null; return new String[]{preferredHand}; } diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseRightPants.java b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseRightPants.java index fcc1b48..734d3b5 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseRightPants.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseRightPants.java @@ -34,12 +34,8 @@ public class ExprDisguiseRightPants extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - return new Boolean[]{watcher.isRightPantsEnabled()}; + return new Boolean[]{disguise.getWatcher() instanceof PlayerWatcher ? + ((PlayerWatcher) disguise.getWatcher()).isRightPantsEnabled() : null}; } @Override @@ -76,9 +72,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof PlayerWatcher) watcher = (PlayerWatcher) disguise.getWatcher(); + else return; boolean bool = Boolean.TRUE.equals(delta[0]); watcher.setRightPantsEnabled(bool); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseRightSleeve.java b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseRightSleeve.java index eee3a16..498e69f 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseRightSleeve.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseRightSleeve.java @@ -34,12 +34,8 @@ public class ExprDisguiseRightSleeve extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - return new Boolean[]{watcher.isRightSleeveEnabled()}; + return new Boolean[]{disguise.getWatcher() instanceof PlayerWatcher ? + ((PlayerWatcher) disguise.getWatcher()).isRightSleeveEnabled() : null}; } @Override @@ -76,9 +72,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof PlayerWatcher) watcher = (PlayerWatcher) disguise.getWatcher(); + else return; boolean bool = Boolean.TRUE.equals(delta[0]); watcher.setRightSleeveEnabled(bool); DisguiseUtil.update(disguise); diff --git a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseShoulderHasParrot.java b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseShoulderHasParrot.java index 0e59e40..dc38527 100644 --- a/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseShoulderHasParrot.java +++ b/src/main/java/me/tud/diskuise/elements/watchers/player/expressions/ExprDisguiseShoulderHasParrot.java @@ -35,13 +35,10 @@ public class ExprDisguiseShoulderHasParrot extends SimpleExpression { protected Boolean[] get(Event e) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return null; - PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return null; } - if (watcher == null) return null; - if (isRight) return new Boolean[]{watcher.isRightShoulderHasParrot()}; - return new Boolean[]{watcher.isLeftShoulderHasParrot()}; + if (isRight) return new Boolean[]{disguise.getWatcher() instanceof PlayerWatcher ? + ((PlayerWatcher) disguise.getWatcher()).isRightShoulderHasParrot() : null}; + return new Boolean[]{disguise.getWatcher() instanceof PlayerWatcher ? + ((PlayerWatcher) disguise.getWatcher()).isLeftShoulderHasParrot() : null}; } @Override @@ -79,9 +76,8 @@ public void change(Event e, @Nullable Object[] delta, Changer.ChangeMode mode) { Disguise disguise = this.disguise.getSingle(e); if (disguise == null) return; PlayerWatcher watcher; - try { - watcher = (PlayerWatcher) disguise.getWatcher(); - } catch (ClassCastException ignore) { return; } + if (disguise.getWatcher() instanceof PlayerWatcher) watcher = (PlayerWatcher) disguise.getWatcher(); + else return; boolean bool = Boolean.TRUE.equals(delta[0]); if (isRight) watcher.setRightShoulderHasParrot(bool); else watcher.setLeftShoulderHasParrot(bool);