From e04ce26bfb9b7d0cbc3f6a35062a6f7e5c6854cb Mon Sep 17 00:00:00 2001 From: Asleepp Date: Wed, 3 Apr 2024 17:11:27 -0300 Subject: [PATCH 01/15] Entity Potion Effect Event and event-values --- .../classes/data/BukkitEventValues.java | 61 ++++++------ .../njol/skript/events/EvtEntityPotion.java | 93 +++++++++++++++++++ 2 files changed, 124 insertions(+), 30 deletions(-) create mode 100644 src/main/java/ch/njol/skript/events/EvtEntityPotion.java diff --git a/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java b/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java index 0c3175247b1..de38ec6cc80 100644 --- a/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java +++ b/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java @@ -72,41 +72,14 @@ import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.entity.Vehicle; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockCanBuildEvent; -import org.bukkit.event.block.BlockDamageEvent; -import org.bukkit.event.block.BlockDispenseEvent; -import org.bukkit.event.block.BlockEvent; -import org.bukkit.event.block.BlockFadeEvent; -import org.bukkit.event.block.BlockFertilizeEvent; -import org.bukkit.event.block.BlockFromToEvent; -import org.bukkit.event.block.BlockGrowEvent; -import org.bukkit.event.block.BlockIgniteEvent; -import org.bukkit.event.block.BlockPlaceEvent; -import org.bukkit.event.block.SignChangeEvent; +import org.bukkit.event.block.*; import org.bukkit.event.enchantment.EnchantItemEvent; import org.bukkit.event.enchantment.PrepareItemEnchantEvent; -import org.bukkit.event.entity.AreaEffectCloudApplyEvent; -import org.bukkit.event.entity.CreatureSpawnEvent; +import org.bukkit.event.entity.*; +import org.bukkit.event.entity.EntityPotionEffectEvent.Cause; import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; -import org.bukkit.event.entity.EntityChangeBlockEvent; -import org.bukkit.event.entity.EntityDamageByEntityEvent; -import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; -import org.bukkit.event.entity.EntityDeathEvent; -import org.bukkit.event.entity.EntityEvent; -import org.bukkit.event.entity.EntityPickupItemEvent; -import org.bukkit.event.entity.EntityResurrectEvent; -import org.bukkit.event.entity.EntityTameEvent; -import org.bukkit.event.entity.EntityTransformEvent; import org.bukkit.event.entity.EntityTransformEvent.TransformReason; -import org.bukkit.event.entity.FireworkExplodeEvent; -import org.bukkit.event.entity.HorseJumpEvent; -import org.bukkit.event.entity.ItemDespawnEvent; -import org.bukkit.event.entity.ItemMergeEvent; -import org.bukkit.event.entity.ItemSpawnEvent; -import org.bukkit.event.entity.ProjectileHitEvent; -import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.event.hanging.HangingBreakByEntityEvent; import org.bukkit.event.hanging.HangingBreakEvent; import org.bukkit.event.hanging.HangingEvent; @@ -169,6 +142,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; import org.bukkit.inventory.Recipe; +import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.eclipse.jdt.annotation.Nullable; @@ -538,6 +512,33 @@ public DamageCause get(final EntityDeathEvent e) { return ldc == null ? null : ldc.getCause(); } }, 0); + + // Entity Potion Effect + EventValues.registerEventValue(EntityPotionEffectEvent.class, PotionEffect.class, new Getter() { + @Override + public PotionEffect get(EntityPotionEffectEvent event) { + return event.getOldEffect(); + } + }, EventValues.TIME_PAST); + EventValues.registerEventValue(EntityPotionEffectEvent.class, PotionEffect.class, new Getter() { + @Override + public PotionEffect get(EntityPotionEffectEvent event) { + return event.getNewEffect(); + } + }, EventValues.TIME_NOW); + EventValues.registerEventValue(EntityPotionEffectEvent.class, PotionEffectType.class, new Getter() { + @Override + public PotionEffectType get(EntityPotionEffectEvent event) { + return event.getModifiedType(); + } + }, EventValues.TIME_NOW); + EventValues.registerEventValue(EntityPotionEffectEvent.class, Cause.class, new Getter() { + @Override + public Cause get(EntityPotionEffectEvent event) { + return event.getCause(); + } + }, EventValues.TIME_NOW); + // ProjectileHitEvent // ProjectileHitEvent#getHitBlock was added in 1.11 if (Skript.methodExists(ProjectileHitEvent.class, "getHitBlock")) diff --git a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java new file mode 100644 index 00000000000..b60e966c094 --- /dev/null +++ b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java @@ -0,0 +1,93 @@ +/** + * This file is part of Skript. + * + * Skript is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Skript is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Skript. If not, see . + * + * Copyright Peter Güttinger, SkriptLang team and contributors + */ +package ch.njol.skript.events; + +import ch.njol.skript.Skript; +import ch.njol.skript.lang.Expression; +import ch.njol.skript.lang.Literal; +import ch.njol.skript.lang.SkriptEvent; +import ch.njol.skript.lang.SkriptParser; +import org.bukkit.event.Event; +import org.bukkit.event.entity.EntityPotionEffectEvent; +import org.bukkit.potion.PotionEffectType; + +import javax.annotation.Nullable; + +public class EvtEntityPotion extends SkriptEvent { + + static { + Skript.registerEvent("Entity Potion Effect", EvtEntityPotion.class, EntityPotionEffectEvent.class, + "add[ing] [of] [entity] potion effect [[of] %potioneffecttypes%]", + "remov[e|ing] [of] [entity] potion effect [[of] %potioneffecttypes%]", + "clear[ing] [of] [entity] potion effect [[of] %potioneffecttypes%]", + "chang[e|ing] [of] [entity] potion effect [[of] %potioneffecttypes%]") + .description("Called when an entity's potion effect is modified.", "This modification can include adding, removing or changing their potion effect.") + .examples("on adding potion effect:", "on removing potion effect:", "on changing potion effect:", "on adding potion effect night vision:") + .since("INSERT VERSION"); + } + + @SuppressWarnings("unchecked") + private Expression potionEffects; + private int matchedPattern; + + private EntityPotionEffectEvent.Action action; + + @Override + public boolean init(Literal[] args, int matchedPattern, SkriptParser.ParseResult parseResult) { + potionEffects = (Expression) args[0]; + switch (matchedPattern) { + case 0: + action = EntityPotionEffectEvent.Action.ADDED; + break; + case 1: + action = EntityPotionEffectEvent.Action.REMOVED; + break; + case 2: + action = EntityPotionEffectEvent.Action.CHANGED; + break; + } + return true; + } + + @Override + public boolean check(Event e) { + if (e instanceof EntityPotionEffectEvent) { + EntityPotionEffectEvent event = (EntityPotionEffectEvent) e; + if (event.getAction() == action) { + if (potionEffects != null && event.getNewEffect() != null) { + PotionEffectType effectType = event.getNewEffect().getType(); + for (PotionEffectType potionEffectType : potionEffects.getArray(e)) { + if (potionEffectType.equals(effectType)) { + return true; + } + } + } else { + return true; + } + } + } + return false; + } + + + @Override + public String toString(@Nullable Event e, boolean debug) { + return "on entity potion effect"; + } +} From 8189838e65785682ed78f6dd46be1e905b6ef672 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Sat, 6 Apr 2024 21:01:40 -0300 Subject: [PATCH 02/15] Updated syntax for EvtEntityPotion, and readded the imports to EventValues. --- .../classes/data/BukkitEventValues.java | 35 ++++++++++++-- .../njol/skript/events/EvtEntityPotion.java | 47 +++++++------------ 2 files changed, 49 insertions(+), 33 deletions(-) diff --git a/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java b/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java index de38ec6cc80..5f9ff66864b 100644 --- a/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java +++ b/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java @@ -72,14 +72,43 @@ import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.entity.Vehicle; -import org.bukkit.event.block.*; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockCanBuildEvent; +import org.bukkit.event.block.BlockDamageEvent; +import org.bukkit.event.block.BlockDispenseEvent; +import org.bukkit.event.block.BlockEvent; +import org.bukkit.event.block.BlockFadeEvent; +import org.bukkit.event.block.BlockFertilizeEvent; +import org.bukkit.event.block.BlockFromToEvent; +import org.bukkit.event.block.BlockGrowEvent; +import org.bukkit.event.block.BlockIgniteEvent; +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.block.SignChangeEvent; import org.bukkit.event.enchantment.EnchantItemEvent; import org.bukkit.event.enchantment.PrepareItemEnchantEvent; -import org.bukkit.event.entity.*; +import org.bukkit.event.entity.AreaEffectCloudApplyEvent; +import org.bukkit.event.entity.CreatureSpawnEvent; import org.bukkit.event.entity.EntityPotionEffectEvent.Cause; import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; +import org.bukkit.event.entity.EntityChangeBlockEvent; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.entity.EntityDeathEvent; +import org.bukkit.event.entity.EntityEvent; +import org.bukkit.event.entity.EntityPickupItemEvent; +import org.bukkit.event.entity.EntityPotionEffectEvent; +import org.bukkit.event.entity.EntityResurrectEvent; +import org.bukkit.event.entity.EntityTameEvent; +import org.bukkit.event.entity.EntityTransformEvent; import org.bukkit.event.entity.EntityTransformEvent.TransformReason; +import org.bukkit.event.entity.FireworkExplodeEvent; +import org.bukkit.event.entity.HorseJumpEvent; +import org.bukkit.event.entity.ItemDespawnEvent; +import org.bukkit.event.entity.ItemMergeEvent; +import org.bukkit.event.entity.ItemSpawnEvent; +import org.bukkit.event.entity.ProjectileHitEvent; +import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.event.hanging.HangingBreakByEntityEvent; import org.bukkit.event.hanging.HangingBreakEvent; import org.bukkit.event.hanging.HangingEvent; @@ -532,7 +561,7 @@ public PotionEffectType get(EntityPotionEffectEvent event) { return event.getModifiedType(); } }, EventValues.TIME_NOW); - EventValues.registerEventValue(EntityPotionEffectEvent.class, Cause.class, new Getter() { + EventValues.registerEventValue(EntityPotionEffectEvent.class, EntityPotionEffectEvent.Cause.class, new Getter() { @Override public Cause get(EntityPotionEffectEvent event) { return event.getCause(); diff --git a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java index b60e966c094..1f0a3ab13c0 100644 --- a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java +++ b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java @@ -33,61 +33,48 @@ public class EvtEntityPotion extends SkriptEvent { static { Skript.registerEvent("Entity Potion Effect", EvtEntityPotion.class, EntityPotionEffectEvent.class, - "add[ing] [of] [entity] potion effect [[of] %potioneffecttypes%]", - "remov[e|ing] [of] [entity] potion effect [[of] %potioneffecttypes%]", - "clear[ing] [of] [entity] potion effect [[of] %potioneffecttypes%]", - "chang[e|ing] [of] [entity] potion effect [[of] %potioneffecttypes%]") + "entity potion effect [modif[y|ication]] [[of] %potioneffecttypes%]") .description("Called when an entity's potion effect is modified.", "This modification can include adding, removing or changing their potion effect.") - .examples("on adding potion effect:", "on removing potion effect:", "on changing potion effect:", "on adding potion effect night vision:") + .examples( + "on entity potion effect modification:", + "\t\tbroadcast \"A potion effect was added to %event-entity%!\" ", + "", + "on entity potion effect modification of night vision:") .since("INSERT VERSION"); } @SuppressWarnings("unchecked") private Expression potionEffects; - private int matchedPattern; - - private EntityPotionEffectEvent.Action action; @Override public boolean init(Literal[] args, int matchedPattern, SkriptParser.ParseResult parseResult) { - potionEffects = (Expression) args[0]; - switch (matchedPattern) { - case 0: - action = EntityPotionEffectEvent.Action.ADDED; - break; - case 1: - action = EntityPotionEffectEvent.Action.REMOVED; - break; - case 2: - action = EntityPotionEffectEvent.Action.CHANGED; - break; + if (args.length > 0) { + potionEffects = (Expression) args[0]; } return true; } + @Override public boolean check(Event e) { if (e instanceof EntityPotionEffectEvent) { EntityPotionEffectEvent event = (EntityPotionEffectEvent) e; - if (event.getAction() == action) { - if (potionEffects != null && event.getNewEffect() != null) { - PotionEffectType effectType = event.getNewEffect().getType(); - for (PotionEffectType potionEffectType : potionEffects.getArray(e)) { - if (potionEffectType.equals(effectType)) { - return true; - } + if (potionEffects != null && event.getNewEffect() != null) { + PotionEffectType effectType = event.getNewEffect().getType(); + for (PotionEffectType potionEffectType : potionEffects.getArray(e)) { + if (potionEffectType.equals(effectType)) { + return true; } - } else { - return true; } + } else { + return true; } } return false; } - @Override public String toString(@Nullable Event e, boolean debug) { - return "on entity potion effect"; + return "on entity potion effect modification"; } } From 569617a9cd69a48e1526527af3fa016ee8acd121 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Sat, 6 Apr 2024 21:03:22 -0300 Subject: [PATCH 03/15] Forgot to change e to event. --- .../ch/njol/skript/events/EvtEntityPotion.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java index 1f0a3ab13c0..1948851b6b7 100644 --- a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java +++ b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java @@ -56,12 +56,12 @@ public boolean init(Literal[] args, int matchedPattern, SkriptParser.ParseRes @Override - public boolean check(Event e) { - if (e instanceof EntityPotionEffectEvent) { - EntityPotionEffectEvent event = (EntityPotionEffectEvent) e; - if (potionEffects != null && event.getNewEffect() != null) { - PotionEffectType effectType = event.getNewEffect().getType(); - for (PotionEffectType potionEffectType : potionEffects.getArray(e)) { + public boolean check(Event event) { + if (event instanceof EntityPotionEffectEvent) { + EntityPotionEffectEvent potionEvent = (EntityPotionEffectEvent) event; + if (potionEffects != null && potionEvent.getNewEffect() != null) { + PotionEffectType effectType = potionEvent.getNewEffect().getType(); + for (PotionEffectType potionEffectType : potionEffects.getArray(event)) { if (potionEffectType.equals(effectType)) { return true; } @@ -74,7 +74,7 @@ public boolean check(Event e) { } @Override - public String toString(@Nullable Event e, boolean debug) { + public String toString(@Nullable Event event, boolean debug) { return "on entity potion effect modification"; } } From 819253d619aa198250dde61c22dcdcd29ac1d29f Mon Sep 17 00:00:00 2001 From: Asleepp Date: Thu, 18 Apr 2024 23:29:42 -0300 Subject: [PATCH 04/15] Added suggested changes :) --- .../skript/classes/data/BukkitClasses.java | 6 ++++ .../njol/skript/events/EvtEntityPotion.java | 30 +++++++++++-------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java b/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java index 25000a2390d..9e17a62565c 100644 --- a/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java +++ b/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java @@ -59,6 +59,7 @@ import org.bukkit.entity.Projectile; import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.entity.EntityPotionEffectEvent; import org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason; import org.bukkit.event.entity.EntityTransformEvent.TransformReason; import org.bukkit.event.inventory.ClickType; @@ -1548,6 +1549,11 @@ public String toVariableNameString(EnchantmentOffer eo) { .name("Transform Reason") .description("Represents a transform reason of an entity transform event.") .since("2.8.0")); + Classes.registerClass(new EnumClassInfo<>(EntityPotionEffectEvent.Cause.class, "entitypotioncause", "entity potion causes") + .user("[entity] potion effect cause") + .name("Entity Potion Cause") + .description("Represents the cause of the action of a potion effect on an entity, e.g. arrow, command") + .since("INSERT VERSION")); } } diff --git a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java index 1948851b6b7..53c49a502ea 100644 --- a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java +++ b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java @@ -22,7 +22,7 @@ import ch.njol.skript.lang.Expression; import ch.njol.skript.lang.Literal; import ch.njol.skript.lang.SkriptEvent; -import ch.njol.skript.lang.SkriptParser; +import ch.njol.skript.lang.SkriptParser.ParseResult; import org.bukkit.event.Event; import org.bukkit.event.entity.EntityPotionEffectEvent; import org.bukkit.potion.PotionEffectType; @@ -33,7 +33,7 @@ public class EvtEntityPotion extends SkriptEvent { static { Skript.registerEvent("Entity Potion Effect", EvtEntityPotion.class, EntityPotionEffectEvent.class, - "entity potion effect [modif[y|ication]] [[of] %potioneffecttypes%]") + "entity potion effect [modif[y|ication]] [[of] %potioneffecttypes%] [due to %entitypotioncause%]") .description("Called when an entity's potion effect is modified.", "This modification can include adding, removing or changing their potion effect.") .examples( "on entity potion effect modification:", @@ -47,7 +47,7 @@ public class EvtEntityPotion extends SkriptEvent { private Expression potionEffects; @Override - public boolean init(Literal[] args, int matchedPattern, SkriptParser.ParseResult parseResult) { + public boolean init(Literal[] args, int matchedPattern, ParseResult parseResult) { if (args.length > 0) { potionEffects = (Expression) args[0]; } @@ -57,22 +57,26 @@ public boolean init(Literal[] args, int matchedPattern, SkriptParser.ParseRes @Override public boolean check(Event event) { - if (event instanceof EntityPotionEffectEvent) { - EntityPotionEffectEvent potionEvent = (EntityPotionEffectEvent) event; - if (potionEffects != null && potionEvent.getNewEffect() != null) { - PotionEffectType effectType = potionEvent.getNewEffect().getType(); - for (PotionEffectType potionEffectType : potionEffects.getArray(event)) { - if (potionEffectType.equals(effectType)) { - return true; - } - } - } else { + if (!(event instanceof EntityPotionEffectEvent)) { + return false; + } + + EntityPotionEffectEvent potionEvent = (EntityPotionEffectEvent) event; + if (potionEffects == null || potionEvent.getNewEffect() == null) { + return false; + } + + PotionEffectType effectType = potionEvent.getNewEffect().getType(); + for (PotionEffectType potionEffectType : potionEffects.getArray(event)) { + if (potionEffectType.equals(effectType)) { return true; } } + return false; } + @Override public String toString(@Nullable Event event, boolean debug) { return "on entity potion effect modification"; From 3a86677f4467feec4646fc1c2e9044ff635ca6d2 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Fri, 19 Apr 2024 18:17:48 -0300 Subject: [PATCH 05/15] silly me --- .../njol/skript/events/EvtEntityPotion.java | 27 +++++-------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java index 53c49a502ea..7f9b28db228 100644 --- a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java +++ b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java @@ -1,21 +1,3 @@ -/** - * This file is part of Skript. - * - * Skript is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * Skript is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with Skript. If not, see . - * - * Copyright Peter Güttinger, SkriptLang team and contributors - */ package ch.njol.skript.events; import ch.njol.skript.Skript; @@ -37,7 +19,7 @@ public class EvtEntityPotion extends SkriptEvent { .description("Called when an entity's potion effect is modified.", "This modification can include adding, removing or changing their potion effect.") .examples( "on entity potion effect modification:", - "\t\tbroadcast \"A potion effect was added to %event-entity%!\" ", + "\t\tbroadcast \"A potion effect was added to %event-entity%!\" ", "", "on entity potion effect modification of night vision:") .since("INSERT VERSION"); @@ -45,11 +27,13 @@ public class EvtEntityPotion extends SkriptEvent { @SuppressWarnings("unchecked") private Expression potionEffects; + private Expression cause; @Override public boolean init(Literal[] args, int matchedPattern, ParseResult parseResult) { if (args.length > 0) { potionEffects = (Expression) args[0]; + cause = (Expression) args[1]; } return true; } @@ -69,7 +53,9 @@ public boolean check(Event event) { PotionEffectType effectType = potionEvent.getNewEffect().getType(); for (PotionEffectType potionEffectType : potionEffects.getArray(event)) { if (potionEffectType.equals(effectType)) { - return true; + if (cause == null || cause.getSingle(event).equals(potionEvent.getCause())) { + return true; + } } } @@ -77,6 +63,7 @@ public boolean check(Event event) { } + @Override public String toString(@Nullable Event event, boolean debug) { return "on entity potion effect modification"; From d62816f2eca26dfe47a76158f9df61bb73094e0d Mon Sep 17 00:00:00 2001 From: Asleepp Date: Fri, 19 Apr 2024 18:19:34 -0300 Subject: [PATCH 06/15] even sillier me (how did I manage to do that) --- .../ch/njol/skript/events/EvtEntityPotion.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java index 7f9b28db228..4ab3a7a2060 100644 --- a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java +++ b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java @@ -1,3 +1,21 @@ +/** + * This file is part of Skript. + * + * Skript is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * Skript is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Skript. If not, see . + * + * Copyright Peter Güttinger, SkriptLang team and contributors + */ package ch.njol.skript.events; import ch.njol.skript.Skript; From 3e726349a068d12361bd66bf34780ea93c29b448 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Fri, 19 Apr 2024 18:24:56 -0300 Subject: [PATCH 07/15] even sillier me (how did I manage to do that) --- src/main/java/ch/njol/skript/events/EvtEntityPotion.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java index 4ab3a7a2060..c6ad0f75d32 100644 --- a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java +++ b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java @@ -37,7 +37,7 @@ public class EvtEntityPotion extends SkriptEvent { .description("Called when an entity's potion effect is modified.", "This modification can include adding, removing or changing their potion effect.") .examples( "on entity potion effect modification:", - "\t\tbroadcast \"A potion effect was added to %event-entity%!\" ", + "\t\tbroadcast \"A potion effect was added to %event-entity%!\" ", "", "on entity potion effect modification of night vision:") .since("INSERT VERSION"); From dfe02abca1c3cd8f108c14a8acc84ccf5a5a05bc Mon Sep 17 00:00:00 2001 From: Asleepp Date: Fri, 19 Apr 2024 18:49:38 -0300 Subject: [PATCH 08/15] I don't get why the build is failing --- src/main/java/ch/njol/skript/events/EvtEntityPotion.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java index c6ad0f75d32..9ce652ad968 100644 --- a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java +++ b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java @@ -39,7 +39,7 @@ public class EvtEntityPotion extends SkriptEvent { "on entity potion effect modification:", "\t\tbroadcast \"A potion effect was added to %event-entity%!\" ", "", - "on entity potion effect modification of night vision:") + "on entity potion effect modific./gradlew clean JUnitJava17ation of night vision:") .since("INSERT VERSION"); } @@ -56,7 +56,6 @@ public boolean init(Literal[] args, int matchedPattern, ParseResult parseResu return true; } - @Override public boolean check(Event event) { if (!(event instanceof EntityPotionEffectEvent)) { @@ -80,8 +79,6 @@ public boolean check(Event event) { return false; } - - @Override public String toString(@Nullable Event event, boolean debug) { return "on entity potion effect modification"; From 8ab5484c6d96180cc9c77369f7397e9f1592c621 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Fri, 19 Apr 2024 18:50:52 -0300 Subject: [PATCH 09/15] BRO --- src/main/java/ch/njol/skript/events/EvtEntityPotion.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java index 9ce652ad968..8b35115a2e9 100644 --- a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java +++ b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java @@ -39,7 +39,7 @@ public class EvtEntityPotion extends SkriptEvent { "on entity potion effect modification:", "\t\tbroadcast \"A potion effect was added to %event-entity%!\" ", "", - "on entity potion effect modific./gradlew clean JUnitJava17ation of night vision:") + "on entity potion effect modification of night vision:") .since("INSERT VERSION"); } From 20e990b88fad7297be32a39691a308a14e79d7a6 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Fri, 19 Apr 2024 21:00:13 -0300 Subject: [PATCH 10/15] Added type stuff, and made check a lot better --- .../njol/skript/events/EvtEntityPotion.java | 19 ++++---------- src/main/resources/lang/default.lang | 26 +++++++++++++++++++ 2 files changed, 31 insertions(+), 14 deletions(-) diff --git a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java index 8b35115a2e9..41e91cda999 100644 --- a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java +++ b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java @@ -33,7 +33,7 @@ public class EvtEntityPotion extends SkriptEvent { static { Skript.registerEvent("Entity Potion Effect", EvtEntityPotion.class, EntityPotionEffectEvent.class, - "entity potion effect [modif[y|ication]] [[of] %potioneffecttypes%] [due to %entitypotioncause%]") + "entity potion effect [modif[y|ication]] [[of] %-potioneffecttypes%] [due to %-entitypotioncause%]") .description("Called when an entity's potion effect is modified.", "This modification can include adding, removing or changing their potion effect.") .examples( "on entity potion effect modification:", @@ -63,22 +63,13 @@ public boolean check(Event event) { } EntityPotionEffectEvent potionEvent = (EntityPotionEffectEvent) event; - if (potionEffects == null || potionEvent.getNewEffect() == null) { - return false; - } + boolean effectMatches = potionEffects == null || (potionEvent.getNewEffect() != null && potionEffects.check(event, effectType -> effectType.equals(potionEvent.getNewEffect().getType()))); + boolean causeMatches = cause == null || cause.check(event, cause -> cause.equals(potionEvent.getCause())); - PotionEffectType effectType = potionEvent.getNewEffect().getType(); - for (PotionEffectType potionEffectType : potionEffects.getArray(event)) { - if (potionEffectType.equals(effectType)) { - if (cause == null || cause.getSingle(event).equals(potionEvent.getCause())) { - return true; - } - } - } - - return false; + return effectMatches && causeMatches; } + @Override public String toString(@Nullable Event event, boolean debug) { return "on entity potion effect modification"; diff --git a/src/main/resources/lang/default.lang b/src/main/resources/lang/default.lang index 2ac67709dc4..e1878238a0a 100644 --- a/src/main/resources/lang/default.lang +++ b/src/main/resources/lang/default.lang @@ -1958,6 +1958,32 @@ environments: the_end: end, the end custom: custom + +entity potion causes: + area_effect_cloud: area effect cloud + arrow: arrow + attack: attack + beacon: beacon + command: command + conduit: conduit + conversion: conversion, converted + death: death, die + dolphin: dolphin + expiration: expiration, expired + food: food + illusion: illusion + milk: milk + plugin: plugin + potion_drink: potion drunk, drinking potion + potion_splash: potion splash, splash potion + spider_spawn: spider spawn, spawned spider + totem: totem, totem of undying + turtle_helmet: turtle helmet + unknown: none, unknown + villager_trade: villager trade + patrol_captain: pillager captain, patrol captain + wither_rose: wither rose + # -- Moon Phases -- moon phases: first_quarter: first quarter From 180f9b31fb020b7c602f3c7541c0fdcd6207c31d Mon Sep 17 00:00:00 2001 From: Asleepp Date: Sat, 20 Apr 2024 15:15:02 -0300 Subject: [PATCH 11/15] Changes --- .../njol/skript/events/EvtEntityPotion.java | 5 ++++- src/main/resources/lang/default.lang | 22 +++++++++---------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java index 41e91cda999..0ff83d82307 100644 --- a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java +++ b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java @@ -63,7 +63,10 @@ public boolean check(Event event) { } EntityPotionEffectEvent potionEvent = (EntityPotionEffectEvent) event; - boolean effectMatches = potionEffects == null || (potionEvent.getNewEffect() != null && potionEffects.check(event, effectType -> effectType.equals(potionEvent.getNewEffect().getType()))); + boolean effectMatches = potionEffects == null || + (potionEvent.getOldEffect() != null && potionEffects.check(event, effectType -> effectType.equals(potionEvent.getOldEffect().getType()))) || + (potionEvent.getNewEffect() != null && potionEffects.check(event, effectType -> effectType.equals(potionEvent.getNewEffect().getType()))); + boolean causeMatches = cause == null || cause.check(event, cause -> cause.equals(potionEvent.getCause())); return effectMatches && causeMatches; diff --git a/src/main/resources/lang/default.lang b/src/main/resources/lang/default.lang index 70e7a4d6930..e0d387f40e0 100644 --- a/src/main/resources/lang/default.lang +++ b/src/main/resources/lang/default.lang @@ -1960,29 +1960,29 @@ environments: entity potion causes: - area_effect_cloud: area effect cloud - arrow: arrow + area_effect_cloud: enter area effect cloud + arrow: arrow infliction attack: attack - beacon: beacon + beacon: beacon effect command: command - conduit: conduit + conduit: conduit effect conversion: conversion, converted - death: death, die - dolphin: dolphin + death: death + dolphin: dolphin boost expiration: expiration, expired food: food illusion: illusion - milk: milk + milk: drinking milk plugin: plugin potion_drink: potion drunk, drinking potion potion_splash: potion splash, splash potion spider_spawn: spider spawn, spawned spider - totem: totem, totem of undying - turtle_helmet: turtle helmet - unknown: none, unknown + totem: removal by resurrection + turtle_helmet: turtle helmet effect + unknown: unknown effect villager_trade: villager trade patrol_captain: pillager captain, patrol captain - wither_rose: wither rose + wither_rose: wither rose infliction # -- Moon Phases -- moon phases: From 1dcbf6a74f8c473bf0dfc9efc7239d0f60171a62 Mon Sep 17 00:00:00 2001 From: Asleepp Date: Sat, 20 Apr 2024 15:32:17 -0300 Subject: [PATCH 12/15] change --- src/main/resources/lang/default.lang | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/lang/default.lang b/src/main/resources/lang/default.lang index e0d387f40e0..9cc1d175060 100644 --- a/src/main/resources/lang/default.lang +++ b/src/main/resources/lang/default.lang @@ -1979,7 +1979,7 @@ entity potion causes: spider_spawn: spider spawn, spawned spider totem: removal by resurrection turtle_helmet: turtle helmet effect - unknown: unknown effect + unknown: unknown villager_trade: villager trade patrol_captain: pillager captain, patrol captain wither_rose: wither rose infliction From 723e28893e551800aacc4f211f66c28133dd6d42 Mon Sep 17 00:00:00 2001 From: Asleepp <119438940+Asleeepp@users.noreply.github.com> Date: Mon, 1 Jul 2024 19:47:54 -0300 Subject: [PATCH 13/15] done --- .../ch/njol/skript/classes/data/BukkitEventValues.java | 3 +-- .../java/ch/njol/skript/events/EvtEntityPotion.java | 10 ++-------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java b/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java index b9763d35524..5cff66e9b8d 100644 --- a/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java +++ b/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java @@ -92,7 +92,6 @@ import org.bukkit.event.enchantment.PrepareItemEnchantEvent; import org.bukkit.event.entity.AreaEffectCloudApplyEvent; import org.bukkit.event.entity.CreatureSpawnEvent; -import org.bukkit.event.entity.EntityPotionEffectEvent.Cause; import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; import org.bukkit.event.entity.EntityChangeBlockEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; @@ -570,7 +569,7 @@ public PotionEffectType get(EntityPotionEffectEvent event) { }, EventValues.TIME_NOW); EventValues.registerEventValue(EntityPotionEffectEvent.class, EntityPotionEffectEvent.Cause.class, new Getter() { @Override - public Cause get(EntityPotionEffectEvent event) { + public EntityPotionEffectEvent.Cause get(EntityPotionEffectEvent event) { return event.getCause(); } }, EventValues.TIME_NOW); diff --git a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java index 0ff83d82307..ab56287ef2b 100644 --- a/src/main/java/ch/njol/skript/events/EvtEntityPotion.java +++ b/src/main/java/ch/njol/skript/events/EvtEntityPotion.java @@ -49,19 +49,13 @@ public class EvtEntityPotion extends SkriptEvent { @Override public boolean init(Literal[] args, int matchedPattern, ParseResult parseResult) { - if (args.length > 0) { - potionEffects = (Expression) args[0]; - cause = (Expression) args[1]; - } + potionEffects = (Expression) args[0]; + cause = (Expression) args[1]; return true; } @Override public boolean check(Event event) { - if (!(event instanceof EntityPotionEffectEvent)) { - return false; - } - EntityPotionEffectEvent potionEvent = (EntityPotionEffectEvent) event; boolean effectMatches = potionEffects == null || (potionEvent.getOldEffect() != null && potionEffects.check(event, effectType -> effectType.equals(potionEvent.getOldEffect().getType()))) || From dcdd8d4c70b3ae2618709fa7f9d3209f2df4bcf0 Mon Sep 17 00:00:00 2001 From: Asleepp <119438940+Asleeepp@users.noreply.github.com> Date: Mon, 1 Jul 2024 19:50:00 -0300 Subject: [PATCH 14/15] resolve conflict --- .../java/ch/njol/skript/classes/data/BukkitEventValues.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java b/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java index 5cff66e9b8d..aaa3e9d0992 100644 --- a/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java +++ b/src/main/java/ch/njol/skript/classes/data/BukkitEventValues.java @@ -101,11 +101,11 @@ import org.bukkit.event.entity.EntityDropItemEvent; import org.bukkit.event.entity.EntityEvent; import org.bukkit.event.entity.EntityPickupItemEvent; -import org.bukkit.event.entity.EntityPotionEffectEvent; import org.bukkit.event.entity.EntityResurrectEvent; import org.bukkit.event.entity.EntityTameEvent; import org.bukkit.event.entity.EntityTransformEvent; import org.bukkit.event.entity.EntityTransformEvent.TransformReason; +import org.bukkit.event.entity.EntityPotionEffectEvent; import org.bukkit.event.entity.FireworkExplodeEvent; import org.bukkit.event.entity.HorseJumpEvent; import org.bukkit.event.entity.ItemDespawnEvent; From ea0518f25c1c77a1d0598aad13475f8c2e4543bc Mon Sep 17 00:00:00 2001 From: Asleepp <119438940+Asleeepp@users.noreply.github.com> Date: Fri, 16 Aug 2024 19:29:21 -0300 Subject: [PATCH 15/15] Update src/main/java/ch/njol/skript/classes/data/BukkitClasses.java Co-authored-by: _tud <98935832+UnderscoreTud@users.noreply.github.com> --- src/main/java/ch/njol/skript/classes/data/BukkitClasses.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java b/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java index 880277a14e5..68e45063700 100644 --- a/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java +++ b/src/main/java/ch/njol/skript/classes/data/BukkitClasses.java @@ -1558,7 +1558,7 @@ public String toVariableNameString(EnchantmentOffer eo) { .description("Represents a transform reason of an entity transform event.") .since("2.8.0")); Classes.registerClass(new EnumClassInfo<>(EntityPotionEffectEvent.Cause.class, "entitypotioncause", "entity potion causes") - .user("[entity] potion effect cause") + .user("(entity )?potion ?effect ?cause") .name("Entity Potion Cause") .description("Represents the cause of the action of a potion effect on an entity, e.g. arrow, command") .since("INSERT VERSION"));