From dce0b83ec9cfde28b8d8b924dff67982d32f3dde Mon Sep 17 00:00:00 2001 From: Jake Date: Sun, 19 Jan 2025 10:15:17 +0100 Subject: [PATCH] Changed argument order of newer methods in DeprecationUtils to allow for better conversion from regular methods; fixed build warnings by adding class argument to newer methods; implemented those methods. Fixed some brewing stand event values --- .../it/jakegblp/lusk/api/BlockWrapper.java | 9 ++ .../lusk/api/skript/ExtendedPropertyType.java | 9 +- .../conditions/CondAnvilGuiViewing.java | 16 +-- .../anvilgui/events/EvtAnvilGuiEvents.java | 38 +----- .../blocks/bell/events/EvtBellEvents.java | 25 +--- .../blocks/block/events/EvtBlockEvents.java | 24 +--- .../blocks/block/events/EvtBlockIgnite.java | 17 +-- .../events/EvtBrewingStandEvents.java | 34 +---- .../dispenser/events/EvtDispenserEvents.java | 18 +-- .../furnace/events/EvtFurnaceEvents.java | 39 ++---- .../events/EvtGrindstoneEvents.java | 36 +---- .../events/EvtHopperInventorySearch.java | 10 +- .../lectern/events/EvtLecternPageChange.java | 18 +-- .../loom/events/EvtLoomPatternSelect.java | 11 +- .../conditions/CondBoundingBoxOverlaps.java | 2 +- .../conditions/CondBoundingBoxWithin.java | 30 ++-- .../CondEquipmentSlotDisabledArmorStand.java | 10 +- .../events/EvtArmorStandManipulate.java | 61 ++------- .../events/EvtElderGuardianEvents.java | 11 +- .../enderman/events/EvtEndermanEvents.java | 10 +- .../entity/events/EvtEntityCrossbowLoad.java | 10 +- .../entity/events/EvtEntityEvents.java | 69 ++-------- .../entity/events/EvtEntityRename.java | 11 +- .../fox/conditions/CondFoxTrusts.java | 15 +- .../goat/conditions/CondGoatHasHorns.java | 14 +- .../CondIronGolemCreatedByPlayer.java | 32 ++--- .../itemframe/events/EvtItemFrameChange.java | 18 +-- .../player/events/EvtFlowerPotManipulate.java | 18 +-- .../player/events/EvtPlayerEvents.java | 128 ++++-------------- .../player/events/EvtPlayerInteract.java | 67 ++------- .../world/events/EvtWorldBorderChange.java | 11 +- .../skript/events/EvtSkriptEvents.java | 25 +--- .../it/jakegblp/lusk/utils/Constants.java | 4 + .../jakegblp/lusk/utils/DeprecationUtils.java | 19 +-- 34 files changed, 232 insertions(+), 637 deletions(-) diff --git a/src/main/java/it/jakegblp/lusk/api/BlockWrapper.java b/src/main/java/it/jakegblp/lusk/api/BlockWrapper.java index 58773022..b884a5a2 100644 --- a/src/main/java/it/jakegblp/lusk/api/BlockWrapper.java +++ b/src/main/java/it/jakegblp/lusk/api/BlockWrapper.java @@ -8,6 +8,7 @@ import org.bukkit.block.data.Levelled; import org.bukkit.block.data.Waterlogged; import org.bukkit.entity.Entity; +import org.bukkit.inventory.BrewerInventory; import org.bukkit.inventory.meta.BlockDataMeta; import org.bukkit.inventory.meta.BlockStateMeta; import org.bukkit.inventory.meta.ItemMeta; @@ -302,6 +303,14 @@ public void setBrewingFuel(ItemType ingredient) { } } + @Nullable + public BrewerInventory getBrewerInventory() { + if (getBlockState() instanceof BrewingStand brewingStand) { + return brewingStand.getInventory(); + } + return null; + } + @Nullable public Integer getBrewingFuelLevel() { if (getBlockState() instanceof BrewingStand brewingStand) { diff --git a/src/main/java/it/jakegblp/lusk/api/skript/ExtendedPropertyType.java b/src/main/java/it/jakegblp/lusk/api/skript/ExtendedPropertyType.java index 9941b883..a569488c 100644 --- a/src/main/java/it/jakegblp/lusk/api/skript/ExtendedPropertyType.java +++ b/src/main/java/it/jakegblp/lusk/api/skript/ExtendedPropertyType.java @@ -9,10 +9,11 @@ public enum ExtendedPropertyType { BE("(is|are)","(isn't|is not|aren't|are not)"), CAN("can","(can't|cannot|can not)"), HAVE("(has|have)","(doesn't|does not|do not|don't) have"), - WILL("will","(will (not|neither)|won't)"), - WOULD("would","(would (not|neither)|wouldn't)"), - COULD("could","(could (not|neither)|couldn't)"), - SHOULD("should","(should (not|neither)|shouldn't)"),; + WILL("will","(will not|won't)"), + WOULD("would","(would not|wouldn't)"), + COULD("could","(could not|couldn't)"), + SHOULD("should","(should not|shouldn't)"), + WAS("(was|were)","(was not|wasn't|were not|weren't)"),; private final String normal, negated; diff --git a/src/main/java/it/jakegblp/lusk/elements/anvilgui/conditions/CondAnvilGuiViewing.java b/src/main/java/it/jakegblp/lusk/elements/anvilgui/conditions/CondAnvilGuiViewing.java index b6dc4ef7..b6425e37 100644 --- a/src/main/java/it/jakegblp/lusk/elements/anvilgui/conditions/CondAnvilGuiViewing.java +++ b/src/main/java/it/jakegblp/lusk/elements/anvilgui/conditions/CondAnvilGuiViewing.java @@ -16,12 +16,14 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import static it.jakegblp.lusk.utils.DeprecationUtils.test; + @Name("Anvil GUI - is Viewing") @Description("Checks if a player is currently viewing a specific anvil GUI or any at all.") @Examples({"if player is viewing any anvil guis:\n\tbroadcast \"%player% is viewing an anvil gui!\""}) @Since("1.3") public class CondAnvilGuiViewing extends Condition { - static { + static { // todo: property condition? Skript.registerCondition(CondAnvilGuiViewing.class, "%players% (is[not:(n't| not)]|are[not:(n't| not)]) viewing (any:an[y] anvil gui[s]|" + Constants.ANVIL_GUI_PREFIX + " %-anvilguiinventory%)"); } @@ -34,9 +36,7 @@ public class CondAnvilGuiViewing extends Condition { @SuppressWarnings("unchecked") public boolean init(Expression @NotNull [] expressions, int matchedPattern, @NotNull Kleenean isDelayed, @NotNull SkriptParser.ParseResult parser) { any = parser.hasTag("any"); - if (!any) { - anvilGuiWrapperExpression = (Expression) expressions[1]; - } + if (!any) anvilGuiWrapperExpression = (Expression) expressions[1]; playerExpression = (Expression) expressions[0]; setNegated(parser.hasTag("not")); return true; @@ -49,13 +49,11 @@ public boolean init(Expression @NotNull [] expressions, int matchedPattern, @ @Override public boolean check(@NotNull Event event) { - return playerExpression.check(event, player -> { + return test(playerExpression, event, player -> { if (any) return AnvilGuiWrapper.isViewingAnyAnvilGui(player); AnvilGuiWrapper anvilGuiWrapper = anvilGuiWrapperExpression.getSingle(event); - if (anvilGuiWrapper == null) { - return false; - } + if (anvilGuiWrapper == null) return false; return anvilGuiWrapper.isOpenTo(player); - }); + }, Player.class); } } \ No newline at end of file diff --git a/src/main/java/it/jakegblp/lusk/elements/anvilgui/events/EvtAnvilGuiEvents.java b/src/main/java/it/jakegblp/lusk/elements/anvilgui/events/EvtAnvilGuiEvents.java index e531c7e9..afc6aeb3 100644 --- a/src/main/java/it/jakegblp/lusk/elements/anvilgui/events/EvtAnvilGuiEvents.java +++ b/src/main/java/it/jakegblp/lusk/elements/anvilgui/events/EvtAnvilGuiEvents.java @@ -3,15 +3,14 @@ import ch.njol.skript.Skript; import ch.njol.skript.lang.util.SimpleEvent; import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import ch.njol.skript.util.slot.InventorySlot; import ch.njol.skript.util.slot.Slot; import it.jakegblp.lusk.api.events.*; import it.jakegblp.lusk.api.AnvilGuiWrapper; import org.bukkit.inventory.Inventory; -import org.jetbrains.annotations.NotNull; import static it.jakegblp.lusk.utils.Constants.ANVIL_GUI_PREFIX; +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; public class EvtAnvilGuiEvents { static { @@ -37,40 +36,15 @@ public class EvtAnvilGuiEvents { .examples("on anvil gui close:") .since("1.3"); - EventValues.registerEventValue(AnvilGuiClickEvent.class, Integer.class, new Getter<>() { - @Override - public Integer get(final AnvilGuiClickEvent e) { - return e.getSlot(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(AnvilGuiClickEvent.class, Slot.class, new Getter<>() { - @Override - public Slot get(final AnvilGuiClickEvent e) { - return new InventorySlot(e.getInventory(), e.getSlot()); - } - }, EventValues.TIME_NOW); + registerEventValue(AnvilGuiClickEvent.class, Integer.class, AnvilGuiClickEvent::getSlot, EventValues.TIME_NOW); + registerEventValue(AnvilGuiClickEvent.class, Slot.class, e -> new InventorySlot(e.getInventory(), e.getSlot()), EventValues.TIME_NOW); // click and close only - EventValues.registerEventValue(AnvilGuiSnapshotEvent.class, String.class, new Getter<>() { - @Override - public @NotNull String get(final AnvilGuiSnapshotEvent e) { - return e.getText(); - } - }, EventValues.TIME_NOW); + registerEventValue(AnvilGuiSnapshotEvent.class, String.class, AnvilGuiSnapshotEvent::getText, EventValues.TIME_NOW); // common event values - EventValues.registerEventValue(AnvilGuiEvent.class, AnvilGuiWrapper.class, new Getter<>() { - @Override - public @NotNull AnvilGuiWrapper get(final AnvilGuiEvent e) { - return e.getAnvil(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(AnvilGuiEvent.class, Inventory.class, new Getter<>() { - @Override - public @NotNull Inventory get(final AnvilGuiEvent e) { - return e.getInventory(); - } - }, EventValues.TIME_NOW); + registerEventValue(AnvilGuiEvent.class, AnvilGuiWrapper.class, AnvilGuiEvent::getAnvil, EventValues.TIME_NOW); + registerEventValue(AnvilGuiEvent.class, Inventory.class, AnvilGuiEvent::getInventory, EventValues.TIME_NOW); } } diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/bell/events/EvtBellEvents.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/bell/events/EvtBellEvents.java index 54f2fc2b..a26bd38c 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/bell/events/EvtBellEvents.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/bell/events/EvtBellEvents.java @@ -3,16 +3,14 @@ import ch.njol.skript.Skript; import ch.njol.skript.lang.util.SimpleEvent; import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import org.bukkit.block.BlockFace; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; import org.bukkit.event.block.BellResonateEvent; import org.bukkit.event.block.BellRingEvent; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import static it.jakegblp.lusk.utils.Constants.*; +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; @SuppressWarnings("unused") public class EvtBellEvents { @@ -24,30 +22,15 @@ public class EvtBellEvents { A bell will only resonate if raiders are in the vicinity of the bell.""") .examples("") .since("1.0.2"); - EventValues.registerEventValue(BellResonateEvent.class, LivingEntity[].class, new Getter<>() { - @Override - public LivingEntity @NotNull [] get(BellResonateEvent e) { - return e.getResonatedEntities().toArray(new LivingEntity[0]); - } - }, EventValues.TIME_NOW); + registerEventValue(BellResonateEvent.class, LivingEntity[].class, e -> e.getResonatedEntities().toArray(new LivingEntity[0]), EventValues.TIME_NOW); } if (SPIGOT_HAS_BELL_RING_EVENT && !SKRIPT_2_9) { Skript.registerEvent("Bell - on Ring", SimpleEvent.class, BellRingEvent.class, "bell ring[ing]", "bell rung") .description("`DEPRECATED SINCE SKRIPT 2.9`\nCalled when a bell is being rung.") .examples("") .since("1.0.2, 1.2 (Deprecated)"); - EventValues.registerEventValue(BellRingEvent.class, BlockFace.class, new Getter<>() { - @Override - public @NotNull BlockFace get(final BellRingEvent e) { - return e.getDirection(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(BellRingEvent.class, Entity.class, new Getter<>() { - @Override - public @Nullable Entity get(final BellRingEvent e) { - return e.getEntity(); - } - }, EventValues.TIME_NOW); + registerEventValue(BellRingEvent.class, BlockFace.class, BellRingEvent::getDirection, EventValues.TIME_NOW); + registerEventValue(BellRingEvent.class, Entity.class, BellRingEvent::getEntity, EventValues.TIME_NOW); } } } diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/block/events/EvtBlockEvents.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/block/events/EvtBlockEvents.java index 8f24142a..c78209d0 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/block/events/EvtBlockEvents.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/block/events/EvtBlockEvents.java @@ -3,15 +3,14 @@ import ch.njol.skript.Skript; import ch.njol.skript.lang.util.SimpleEvent; import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import io.papermc.paper.event.block.BlockBreakProgressUpdateEvent; import org.bukkit.block.data.BlockData; import org.bukkit.entity.Entity; import org.bukkit.event.block.FluidLevelChangeEvent; -import org.jetbrains.annotations.NotNull; import static ch.njol.skript.paperlib.PaperLib.isPaper; import static it.jakegblp.lusk.utils.Constants.MINECRAFT_1_20_4; +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; public class EvtBlockEvents { static { @@ -20,12 +19,7 @@ public class EvtBlockEvents { Called when the fluid level of a block changes due to changes in adjacent blocks.""") .examples("on fluid level change:") .since("1.0.4"); - EventValues.registerEventValue(FluidLevelChangeEvent.class, BlockData.class, new Getter<>() { - @Override - public @NotNull BlockData get(final FluidLevelChangeEvent e) { - return e.getNewData(); - } - }, EventValues.TIME_NOW); + registerEventValue(FluidLevelChangeEvent.class, BlockData.class, FluidLevelChangeEvent::getNewData, EventValues.TIME_NOW); if (MINECRAFT_1_20_4 && isPaper()) { Skript.registerEvent("Block - on Damage Update", SimpleEvent.class, BlockBreakProgressUpdateEvent.class, "block damag(ing|e) update", "block break progress update") @@ -34,18 +28,8 @@ public class EvtBlockEvents { `event-number` = the block damage progress, ranges from 0.0 to 1.0, where 0 is no damage and 1.0 is the most damage.""") .examples("on block damage update:") .since("1.3"); - EventValues.registerEventValue(BlockBreakProgressUpdateEvent.class, Number.class, new Getter<>() { - @Override - public @NotNull Number get(final BlockBreakProgressUpdateEvent e) { - return e.getProgress(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(BlockBreakProgressUpdateEvent.class, Entity.class, new Getter<>() { - @Override - public @NotNull Entity get(final BlockBreakProgressUpdateEvent e) { - return e.getEntity(); - } - }, EventValues.TIME_NOW); + registerEventValue(BlockBreakProgressUpdateEvent.class, Number.class, BlockBreakProgressUpdateEvent::getProgress, EventValues.TIME_NOW); + registerEventValue(BlockBreakProgressUpdateEvent.class, Entity.class, BlockBreakProgressUpdateEvent::getEntity, EventValues.TIME_NOW); } } diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/block/events/EvtBlockIgnite.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/block/events/EvtBlockIgnite.java index 93a7a6bb..eb35a6d4 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/block/events/EvtBlockIgnite.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/block/events/EvtBlockIgnite.java @@ -5,14 +5,13 @@ import ch.njol.skript.lang.SkriptEvent; import ch.njol.skript.lang.SkriptParser; import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import org.bukkit.entity.Entity; import org.bukkit.event.Event; import org.bukkit.event.block.BlockIgniteEvent; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import static it.jakegblp.lusk.utils.ArrayUtils.haveSameElements; +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; public class EvtBlockIgnite extends SkriptEvent { @@ -34,18 +33,8 @@ public class EvtBlockIgnite extends SkriptEvent { .examples("on lusk block ignite due to lava_ignition:","on lusk player block ignition:") .since("1.3"); - EventValues.registerEventValue(BlockIgniteEvent.class, Entity.class, new Getter<>() { - @Override - public @Nullable Entity get(final BlockIgniteEvent e) { - return e.getIgnitingEntity(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(BlockIgniteEvent.class, BlockIgniteEvent.IgniteCause.class, new Getter<>() { - @Override - public BlockIgniteEvent.@NotNull IgniteCause get(final BlockIgniteEvent e) { - return e.getCause(); - } - }, EventValues.TIME_NOW); + registerEventValue(BlockIgniteEvent.class, Entity.class, BlockIgniteEvent::getIgnitingEntity, EventValues.TIME_NOW); + registerEventValue(BlockIgniteEvent.class, BlockIgniteEvent.IgniteCause.class, BlockIgniteEvent::getCause, EventValues.TIME_NOW); } private boolean justPlayer; diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/brewingstand/events/EvtBrewingStandEvents.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/brewingstand/events/EvtBrewingStandEvents.java index 5a42adec..760b6c53 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/brewingstand/events/EvtBrewingStandEvents.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/brewingstand/events/EvtBrewingStandEvents.java @@ -4,16 +4,13 @@ import ch.njol.skript.aliases.ItemType; import ch.njol.skript.lang.util.SimpleEvent; import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; -import org.bukkit.block.BrewingStand; +import it.jakegblp.lusk.api.BlockWrapper; import org.bukkit.event.block.BrewingStartEvent; import org.bukkit.event.inventory.BrewEvent; import org.bukkit.event.inventory.BrewingStandFuelEvent; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.InventoryHolder; -import org.bukkit.inventory.ItemStack; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; + +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; public class EvtBrewingStandEvents { static { @@ -22,33 +19,14 @@ public class EvtBrewingStandEvents { .description(" Called when a brewing stand starts to brew.") .examples("") .since("1.0.2"); - EventValues.registerEventValue(BrewingStartEvent.class, Inventory.class, new Getter<>() { - @Override - public @NotNull Inventory get(final BrewingStartEvent e) { - return ((InventoryHolder) e.getBlock()).getInventory(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(BrewingStartEvent.class, ItemType.class, new Getter<>() { - @Override - public @Nullable ItemType get(final BrewingStartEvent e) { - ItemStack itemStack = ((BrewingStand) e.getBlock()).getInventory().getIngredient(); - if (itemStack != null) { - return new ItemType(itemStack); - } - return null; - } - }, EventValues.TIME_NOW); + registerEventValue(BrewingStartEvent.class, Inventory.class, e -> new BlockWrapper(e.getBlock()).getBrewerInventory(), EventValues.TIME_NOW); + registerEventValue(BrewingStartEvent.class, ItemType.class, e -> new BlockWrapper(e.getBlock()).getBrewingIngredient(), EventValues.TIME_NOW); } Skript.registerEvent("Brewing Stand - on Brew", SimpleEvent.class, BrewEvent.class, "[brewing stand] brew[ing]") .description("Called when the brewing of the contents inside a Brewing Stand is complete.") .examples("") .since("1.0.2"); - EventValues.registerEventValue(BrewEvent.class, Inventory.class, new Getter<>() { - @Override - public @NotNull Inventory get(final BrewEvent e) { - return e.getContents(); - } - }, EventValues.TIME_NOW); + registerEventValue(BrewEvent.class, Inventory.class, BrewEvent::getContents, EventValues.TIME_NOW); Skript.registerEvent("Brewing Stand - on Fuel", SimpleEvent.class, BrewingStandFuelEvent.class, "brewing [stand] fuel [consume]") .description("Called when an ItemStack is about to increase the fuel level of a brewing stand.") .examples("") diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/dispenser/events/EvtDispenserEvents.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/dispenser/events/EvtDispenserEvents.java index dc8b5f21..8d047ff5 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/dispenser/events/EvtDispenserEvents.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/dispenser/events/EvtDispenserEvents.java @@ -3,12 +3,12 @@ import ch.njol.skript.Skript; import ch.njol.skript.lang.util.SimpleEvent; import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import io.papermc.paper.event.block.BlockFailedDispenseEvent; import io.papermc.paper.event.block.BlockPreDispenseEvent; import org.bukkit.entity.Entity; import org.bukkit.event.block.BlockDispenseArmorEvent; -import org.jetbrains.annotations.NotNull; + +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; public class EvtDispenserEvents { static { @@ -17,12 +17,7 @@ public class EvtDispenserEvents { .description("Called when an equipable item is dispensed from a block and equipped on a nearby entity.") .examples("") .since("1.0.0"); - EventValues.registerEventValue(BlockDispenseArmorEvent.class, Entity.class, new Getter<>() { - @Override - public Entity get(final BlockDispenseArmorEvent e) { - return e.getTargetEntity(); - } - }, EventValues.TIME_NOW); + registerEventValue(BlockDispenseArmorEvent.class, Entity.class, BlockDispenseArmorEvent::getTargetEntity, EventValues.TIME_NOW); } if (Skript.classExists("io.papermc.paper.event.block.BlockFailedDispenseEvent")) { Skript.registerEvent("Dispenser - on Dispense Fail", SimpleEvent.class, BlockFailedDispenseEvent.class, "dispense fail", "failed [to] dispense") @@ -39,12 +34,7 @@ public Entity get(final BlockDispenseArmorEvent e) { .examples("") .requiredPlugins("Paper") .since("1.0.2"); - EventValues.registerEventValue(BlockPreDispenseEvent.class, Integer.class, new Getter<>() { - @Override - public @NotNull Integer get(final BlockPreDispenseEvent e) { - return e.getSlot(); - } - }, EventValues.TIME_NOW); + registerEventValue(BlockPreDispenseEvent.class, Integer.class, BlockPreDispenseEvent::getSlot, EventValues.TIME_NOW); } } } diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/furnace/events/EvtFurnaceEvents.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/furnace/events/EvtFurnaceEvents.java index c95e592b..376c3416 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/furnace/events/EvtFurnaceEvents.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/furnace/events/EvtFurnaceEvents.java @@ -4,13 +4,12 @@ import ch.njol.skript.aliases.ItemType; import ch.njol.skript.lang.util.SimpleEvent; import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import ch.njol.skript.util.slot.InventorySlot; import ch.njol.skript.util.slot.Slot; import org.bukkit.event.inventory.FurnaceExtractEvent; import org.bukkit.event.inventory.FurnaceStartSmeltEvent; -import org.bukkit.inventory.InventoryView; -import org.jetbrains.annotations.NotNull; + +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; @SuppressWarnings("unused") public class EvtFurnaceEvents { @@ -18,28 +17,15 @@ public class EvtFurnaceEvents { if (Skript.classExists("org.bukkit.event.inventory.FurnaceExtractEvent")) { Skript.registerEvent("Furnace - on Item Extract", SimpleEvent.class, FurnaceExtractEvent.class, "furnace [item] extract[ed|ing]") .description(""" - This event is called when a player takes items out of the furnace.""") + This event is called when a player takes items out of the furnace. + + event-integer -> item amount being retrieved + """) .examples("") .since("1.0.1"); - EventValues.registerEventValue(FurnaceExtractEvent.class, Slot.class, new Getter<>() { - @Override - public @NotNull Slot get(final FurnaceExtractEvent e) { - InventoryView inventoryView = e.getPlayer().getOpenInventory(); - return new InventorySlot(inventoryView.getTopInventory(), 2); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(FurnaceExtractEvent.class, ItemType.class, new Getter<>() { - @Override - public @NotNull ItemType get(final FurnaceExtractEvent e) { - return new ItemType(e.getItemType()); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(FurnaceExtractEvent.class, Integer.class, new Getter<>() { - @Override - public @NotNull Integer get(final FurnaceExtractEvent e) { - return e.getItemAmount(); - } - }, EventValues.TIME_NOW); + registerEventValue(FurnaceExtractEvent.class, Slot.class, e -> new InventorySlot(e.getPlayer().getOpenInventory().getTopInventory(), 2), EventValues.TIME_NOW); + registerEventValue(FurnaceExtractEvent.class, ItemType.class, e -> new ItemType(e.getItemType()), EventValues.TIME_NOW); + registerEventValue(FurnaceExtractEvent.class, Integer.class, FurnaceExtractEvent::getItemAmount, EventValues.TIME_NOW); } if (Skript.classExists("org.bukkit.event.inventory.FurnaceStartSmeltEvent")) { Skript.registerEvent("Furnace - on Start Smelting", SimpleEvent.class, FurnaceStartSmeltEvent.class, "furnace start[ed|ing] [to] smelt[ed|ing]", "furnace smelt[ed|ing] start[ed|ing]") @@ -50,12 +36,7 @@ public class EvtFurnaceEvents { broadcast "let him cook!" """) .since("1.0.1"); - EventValues.registerEventValue(FurnaceStartSmeltEvent.class, Integer.class, new Getter<>() { - @Override - public @NotNull Integer get(final FurnaceStartSmeltEvent e) { - return e.getTotalCookTime(); - } - }, EventValues.TIME_NOW); + registerEventValue(FurnaceStartSmeltEvent.class, Integer.class, FurnaceStartSmeltEvent::getTotalCookTime, EventValues.TIME_NOW); } } } diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/grindstone/events/EvtGrindstoneEvents.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/grindstone/events/EvtGrindstoneEvents.java index bc34e4cf..8e4857c1 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/grindstone/events/EvtGrindstoneEvents.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/grindstone/events/EvtGrindstoneEvents.java @@ -3,14 +3,14 @@ import ch.njol.skript.Skript; import ch.njol.skript.lang.util.SimpleEvent; import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import ch.njol.skript.util.slot.InventorySlot; import ch.njol.skript.util.slot.Slot; import org.bukkit.Location; -import org.bukkit.block.Block; import org.bukkit.event.inventory.PrepareGrindstoneEvent; import org.bukkit.inventory.Inventory; +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; + public class EvtGrindstoneEvents { static { if (Skript.classExists("org.bukkit.event.inventory.PrepareGrindstoneEvent")) { @@ -18,35 +18,9 @@ public class EvtGrindstoneEvents { .description("Called when an item is put in a slot for repair or unenchanting in a grindstone.") .examples("") .since("1.0.0 (Paper), 1.0.3 (Spigot)"); - EventValues.registerEventValue(PrepareGrindstoneEvent.class, Block.class, new Getter<>() { - @Override - public Block get(final org.bukkit.event.inventory.PrepareGrindstoneEvent e) { - Location location = e.getInventory().getLocation(); - if (location != null) { - return location.getBlock(); - } else { - return null; - } - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(PrepareGrindstoneEvent.class, Inventory.class, new Getter<>() { - @Override - public Inventory get(final org.bukkit.event.inventory.PrepareGrindstoneEvent e) { - return e.getInventory(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(PrepareGrindstoneEvent.class, Location.class, new Getter<>() { - @Override - public Location get(final org.bukkit.event.inventory.PrepareGrindstoneEvent e) { - return e.getInventory().getLocation(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(PrepareGrindstoneEvent.class, Slot.class, new Getter<>() { - @Override - public Slot get(final org.bukkit.event.inventory.PrepareGrindstoneEvent e) { - return new InventorySlot(e.getInventory(), 2); - } - }, EventValues.TIME_NOW); + registerEventValue(PrepareGrindstoneEvent.class, Inventory.class, PrepareGrindstoneEvent::getInventory, EventValues.TIME_NOW); + registerEventValue(PrepareGrindstoneEvent.class, Location.class, e -> e.getInventory().getLocation(), EventValues.TIME_NOW); + registerEventValue(PrepareGrindstoneEvent.class, Slot.class, e -> new InventorySlot(e.getInventory(), 2), EventValues.TIME_NOW); } } } diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/hopper/events/EvtHopperInventorySearch.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/hopper/events/EvtHopperInventorySearch.java index 3733b0eb..fca6981a 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/hopper/events/EvtHopperInventorySearch.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/hopper/events/EvtHopperInventorySearch.java @@ -4,8 +4,6 @@ import ch.njol.skript.lang.Literal; import ch.njol.skript.lang.SkriptEvent; import ch.njol.skript.lang.SkriptParser.ParseResult; -import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import org.bukkit.event.Event; import org.bukkit.event.inventory.HopperInventorySearchEvent; import org.bukkit.inventory.Inventory; @@ -13,6 +11,7 @@ import org.jetbrains.annotations.Nullable; import static it.jakegblp.lusk.utils.Constants.HAS_HOPPER_INVENTORY_SEARCH_EVENT; +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; @SuppressWarnings("unused") public class EvtHopperInventorySearch extends SkriptEvent { @@ -25,12 +24,7 @@ public class EvtHopperInventorySearch extends SkriptEvent { .description("Called each time a Hopper attempts to find its source/attached containers.") .examples("on hopper inventory search:\n\tbroadcast event-inventory") .since("1.0.4"); - EventValues.registerEventValue(HopperInventorySearchEvent.class, Inventory.class, new Getter<>() { - @Override - public @Nullable Inventory get(final HopperInventorySearchEvent e) { - return e.getInventory(); - } - }, 0); + registerEventValue(HopperInventorySearchEvent.class, Inventory.class, HopperInventorySearchEvent::getInventory, 0); } } diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/lectern/events/EvtLecternPageChange.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/lectern/events/EvtLecternPageChange.java index 34cb1a68..5d70ef6e 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/lectern/events/EvtLecternPageChange.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/lectern/events/EvtLecternPageChange.java @@ -4,8 +4,6 @@ import ch.njol.skript.lang.Literal; import ch.njol.skript.lang.SkriptEvent; import ch.njol.skript.lang.SkriptParser.ParseResult; -import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import io.papermc.paper.event.player.PlayerLecternPageChangeEvent; import org.bukkit.block.Block; import org.bukkit.event.Event; @@ -13,6 +11,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; + @SuppressWarnings("unused") public class EvtLecternPageChange extends SkriptEvent { static { @@ -35,18 +35,8 @@ public class EvtLecternPageChange extends SkriptEvent { """) .since("1.0.0") .requiredPlugins("Paper"); - EventValues.registerEventValue(PlayerLecternPageChangeEvent.class, ItemStack.class, new Getter<>() { - @Override - public @NotNull ItemStack get(final PlayerLecternPageChangeEvent e) { - return e.getBook(); - } - }, 0); - EventValues.registerEventValue(PlayerLecternPageChangeEvent.class, Block.class, new Getter<>() { - @Override - public @NotNull Block get(final PlayerLecternPageChangeEvent e) { - return e.getLectern().getBlock(); - } - }, 0); + registerEventValue(PlayerLecternPageChangeEvent.class, ItemStack.class, PlayerLecternPageChangeEvent::getBook, 0); + registerEventValue(PlayerLecternPageChangeEvent.class, Block.class, e -> e.getLectern().getBlock(), 0); } } diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/loom/events/EvtLoomPatternSelect.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/loom/events/EvtLoomPatternSelect.java index c611e3c4..4b9d9fef 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/loom/events/EvtLoomPatternSelect.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/blocks/loom/events/EvtLoomPatternSelect.java @@ -4,8 +4,6 @@ import ch.njol.skript.lang.Literal; import ch.njol.skript.lang.SkriptEvent; import ch.njol.skript.lang.SkriptParser.ParseResult; -import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import io.papermc.paper.event.player.PlayerLoomPatternSelectEvent; import org.bukkit.block.banner.PatternType; import org.bukkit.event.Event; @@ -14,6 +12,8 @@ import java.util.Arrays; +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; + @SuppressWarnings("unused") public class EvtLoomPatternSelect extends SkriptEvent { static { @@ -32,12 +32,7 @@ public class EvtLoomPatternSelect extends SkriptEvent { """) .requiredPlugins("Paper") .since("1.0.0"); - EventValues.registerEventValue(PlayerLoomPatternSelectEvent.class, PatternType.class, new Getter<>() { - @Override - public @NotNull PatternType get(final PlayerLoomPatternSelectEvent e) { - return e.getPatternType(); - } - }, 0); + registerEventValue(PlayerLoomPatternSelectEvent.class, PatternType.class, PlayerLoomPatternSelectEvent::getPatternType, 0); } } diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/boundingbox/conditions/CondBoundingBoxOverlaps.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/boundingbox/conditions/CondBoundingBoxOverlaps.java index e3e991a9..0ca3a625 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/boundingbox/conditions/CondBoundingBoxOverlaps.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/boundingbox/conditions/CondBoundingBoxOverlaps.java @@ -46,7 +46,7 @@ public boolean init( @Override public boolean check(@NotNull Event event) { - return test(event,boundingBox1, box1 -> test(event, boundingBox2, box1::overlaps), isNegated()); + return test(boundingBox1, event, box1 -> test(boundingBox2, event, box1::overlaps, BoundingBox.class), BoundingBox.class, isNegated()); } @Override diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/boundingbox/conditions/CondBoundingBoxWithin.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/boundingbox/conditions/CondBoundingBoxWithin.java index f054f8e8..b4c9d0b1 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/boundingbox/conditions/CondBoundingBoxWithin.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/boundingbox/conditions/CondBoundingBoxWithin.java @@ -16,12 +16,14 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import static it.jakegblp.lusk.utils.DeprecationUtils.test; + @Name("Bounding Box - X is Within") @Description("Whether or not a Vector, Location, or Bounding Box is within a Bounding Box.\n\nVector and Location = Checks if the Bounding Box contains a specified position.\nBounding Box = Checks if the Bounding Box fully contains a Bounding Box.") @Examples({"if location of player is within bounding box of player:"}) @Since("1.2") public class CondBoundingBoxWithin extends Condition { - static { + static { // todo: property condition? Skript.registerCondition(CondBoundingBoxWithin.class, "%vectors/locations/boundingboxes% (is|are) (within|in[side [of]]) [[bounding[ ]]box] %boundingbox%", "%vectors/locations/boundingboxes% (isn't|is not|aren't|are not) (within|in[side [of]]) [[bounding[ ]]box] %boundingbox%" @@ -29,7 +31,7 @@ public class CondBoundingBoxWithin extends Condition { } private Expression objects; - private Expression boundingBox; + private Expression boundingBoxes; @SuppressWarnings("unchecked") @Override @@ -39,29 +41,25 @@ public boolean init( @NotNull Kleenean isDelayed, SkriptParser.@NotNull ParseResult parseResult) { objects = (Expression) expressions[0]; - boundingBox = (Expression) expressions[1]; + boundingBoxes = (Expression) expressions[1]; setNegated(matchedPattern == 1); return true; } @Override public boolean check(@NotNull Event event) { - return objects.check(event, object -> - boundingBox.check(event, b -> { - if (object instanceof Vector vector) { - return b.contains(vector); - } else if (object instanceof Location location) { - return b.contains(location.toVector()); - } else if (object instanceof BoundingBox box) { - return b.contains(box); - } else { - return false; - } - }), isNegated()); + return test(boundingBoxes, event, boundingBox -> + test(objects, event, object -> { // todo: utils + if (object instanceof Vector vector) return boundingBox.contains(vector); + else if (object instanceof Location location) return boundingBox.contains(location.toVector()); + else if (object instanceof BoundingBox box) return boundingBox.contains(box); + else return false; + }, Object.class), BoundingBox.class, isNegated()); } @Override public @NotNull String toString(@Nullable Event event, boolean debug) { - return objects.toString(event, debug) + " is " + (isNegated() ? "not" : "") + " within " + boundingBox.toString(event, debug); + return objects.toString(event, debug) + " is " + + (isNegated() ? "not" : "") + " within " + boundingBoxes.toString(event, debug); } } diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/armorstand/conditions/CondEquipmentSlotDisabledArmorStand.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/armorstand/conditions/CondEquipmentSlotDisabledArmorStand.java index 55e2a62e..10815158 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/armorstand/conditions/CondEquipmentSlotDisabledArmorStand.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/armorstand/conditions/CondEquipmentSlotDisabledArmorStand.java @@ -15,6 +15,8 @@ import org.bukkit.inventory.EquipmentSlot; import org.jetbrains.annotations.Nullable; +import static it.jakegblp.lusk.utils.DeprecationUtils.test; + @Name("Armor Stand - is Equipment Slot Disabled") @Description("Checks if a specific equipment slot of an armorstand is disabled.") @Examples("if chest slot is disabled for {_armorStand}:") @@ -41,9 +43,11 @@ public boolean init(Expression[] expressions, int matchedPattern, Kleenean is @Override public boolean check(Event event) { - return livingEntityExpression.check(event, livingEntity -> - livingEntity instanceof ArmorStand armorStand && - equipmentSlotExpression.check(event, armorStand::isSlotDisabled, isNegated())); + return test(livingEntityExpression, event, + livingEntity -> livingEntity instanceof ArmorStand armorStand + && test(equipmentSlotExpression, event, + armorStand::isSlotDisabled, EquipmentSlot.class), + LivingEntity.class, isNegated()); } @Override diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/armorstand/events/EvtArmorStandManipulate.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/armorstand/events/EvtArmorStandManipulate.java index 5b6ecc61..72c54ff1 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/armorstand/events/EvtArmorStandManipulate.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/armorstand/events/EvtArmorStandManipulate.java @@ -6,8 +6,8 @@ import ch.njol.skript.lang.SkriptEvent; import ch.njol.skript.lang.SkriptParser.ParseResult; import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import it.jakegblp.lusk.api.enums.ArmorStandInteraction; +import it.jakegblp.lusk.utils.EventUtils; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; import org.bukkit.event.Event; @@ -19,6 +19,8 @@ import java.util.Arrays; import java.util.List; +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; +import static it.jakegblp.lusk.utils.DeprecationUtils.test; import static it.jakegblp.lusk.utils.EventUtils.getInteraction; @SuppressWarnings("unused") @@ -45,42 +47,12 @@ public class EvtArmorStandManipulate extends SkriptEvent { broadcast event-item and event-equipmentslot """) .since("1.1.1"); - EventValues.registerEventValue(PlayerArmorStandManipulateEvent.class, EquipmentSlot.class, new Getter<>() { - @Override - public EquipmentSlot get(final PlayerArmorStandManipulateEvent e) { - return e.getSlot(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(PlayerArmorStandManipulateEvent.class, Entity.class, new Getter<>() { - @Override - public Entity get(final PlayerArmorStandManipulateEvent e) { - return e.getRightClicked(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(PlayerArmorStandManipulateEvent.class, LivingEntity.class, new Getter<>() { - @Override - public LivingEntity get(final PlayerArmorStandManipulateEvent e) { - return e.getRightClicked(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(PlayerArmorStandManipulateEvent.class, ItemType.class, new Getter<>() { - @Override - public ItemType get(final PlayerArmorStandManipulateEvent e) { - return new ItemType(e.getPlayerItem()); - } - }, EventValues.TIME_FUTURE); - EventValues.registerEventValue(PlayerArmorStandManipulateEvent.class, ItemType.class, new Getter<>() { - @Override - public ItemType get(final PlayerArmorStandManipulateEvent e) { - return new ItemType(e.getArmorStandItem()); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(PlayerArmorStandManipulateEvent.class, ArmorStandInteraction.class, new Getter<>() { - @Override - public ArmorStandInteraction get(final PlayerArmorStandManipulateEvent e) { - return getInteraction(e); - } - }, EventValues.TIME_NOW); + registerEventValue(PlayerArmorStandManipulateEvent.class, EquipmentSlot.class, PlayerArmorStandManipulateEvent::getSlot, EventValues.TIME_NOW); + registerEventValue(PlayerArmorStandManipulateEvent.class, Entity.class, PlayerArmorStandManipulateEvent::getRightClicked, EventValues.TIME_NOW); + registerEventValue(PlayerArmorStandManipulateEvent.class, LivingEntity.class, PlayerArmorStandManipulateEvent::getRightClicked, EventValues.TIME_NOW); + registerEventValue(PlayerArmorStandManipulateEvent.class, ItemType.class, e -> new ItemType(e.getPlayerItem()), EventValues.TIME_FUTURE); + registerEventValue(PlayerArmorStandManipulateEvent.class, ItemType.class, e -> new ItemType(e.getArmorStandItem()), EventValues.TIME_NOW); + registerEventValue(PlayerArmorStandManipulateEvent.class, ArmorStandInteraction.class, EventUtils::getInteraction, EventValues.TIME_NOW); } } @@ -100,16 +72,13 @@ public boolean init(Literal @NotNull [] args, int matchedPattern, @NotNull Parse } @Override - public boolean check(@NotNull Event e) { - PlayerArmorStandManipulateEvent event = (PlayerArmorStandManipulateEvent) e; - boolean toolIsAir = event.getPlayerItem().getType().isAir(); - boolean equippedIsAir = event.getArmorStandItem().getType().isAir(); + public boolean check(@NotNull Event event) { + PlayerArmorStandManipulateEvent armorStandManipulateEvent = (PlayerArmorStandManipulateEvent) event; + boolean toolIsAir = armorStandManipulateEvent.getPlayerItem().getType().isAir(); + boolean equippedIsAir = armorStandManipulateEvent.getArmorStandItem().getType().isAir(); List list = Arrays.stream(interactionLiteral.getAll()).toList(); - if (list.contains(ArmorStandInteraction.CHANGE) || list.contains(getInteraction(event))) { - if (slots != null) - return slots.check(event, slot -> slot.equals(event.getSlot())); - return true; - } + if (list.contains(ArmorStandInteraction.CHANGE) || list.contains(getInteraction(armorStandManipulateEvent))) + return slots == null || test(slots, armorStandManipulateEvent, slot -> slot.equals(armorStandManipulateEvent.getSlot()), EquipmentSlot.class); return false; } diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/elderguardian/events/EvtElderGuardianEvents.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/elderguardian/events/EvtElderGuardianEvents.java index 6e7464ac..502ce13c 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/elderguardian/events/EvtElderGuardianEvents.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/elderguardian/events/EvtElderGuardianEvents.java @@ -3,10 +3,10 @@ import ch.njol.skript.Skript; import ch.njol.skript.lang.util.SimpleEvent; import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import io.papermc.paper.event.entity.ElderGuardianAppearanceEvent; import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; + +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; @SuppressWarnings("unused") public class EvtElderGuardianEvents { @@ -18,12 +18,7 @@ public class EvtElderGuardianEvents { .examples("") .since("1.0.2") .requiredPlugins("Paper"); - EventValues.registerEventValue(ElderGuardianAppearanceEvent.class, Player.class, new Getter<>() { - @Override - public @NotNull Player get(final ElderGuardianAppearanceEvent e) { - return e.getAffectedPlayer(); - } - }, EventValues.TIME_NOW); + registerEventValue(ElderGuardianAppearanceEvent.class, Player.class, ElderGuardianAppearanceEvent::getAffectedPlayer, EventValues.TIME_NOW); } } } diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/enderman/events/EvtEndermanEvents.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/enderman/events/EvtEndermanEvents.java index 84d72f53..c40d4809 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/enderman/events/EvtEndermanEvents.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/enderman/events/EvtEndermanEvents.java @@ -3,10 +3,11 @@ import ch.njol.skript.Skript; import ch.njol.skript.lang.util.SimpleEvent; import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent; import com.destroystokyo.paper.event.entity.EndermanEscapeEvent; +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; + @SuppressWarnings("unused") public class EvtEndermanEvents { static { @@ -24,12 +25,7 @@ public class EvtEndermanEvents { .since("1.0.0") .requiredPlugins("Paper"); - EventValues.registerEventValue(EndermanEscapeEvent.class, EndermanEscapeEvent.Reason.class, new Getter<>() { - @Override - public EndermanEscapeEvent.Reason get(final EndermanEscapeEvent e) { - return e.getReason(); - } - }, EventValues.TIME_NOW); + registerEventValue(EndermanEscapeEvent.class, EndermanEscapeEvent.Reason.class, EndermanEscapeEvent::getReason, EventValues.TIME_NOW); } if (Skript.classExists("com.destroystokyo.paper.event.entity.EndermanAttackPlayerEvent")) { Skript.registerEvent("Enderman - on Attack Decide", SimpleEvent.class, EndermanAttackPlayerEvent.class, "enderman [attack] decid(e[d]|ing)", "enderman decid(e[d]|ing) to attack") diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/entity/events/EvtEntityCrossbowLoad.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/entity/events/EvtEntityCrossbowLoad.java index 807248d6..adbac9b9 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/entity/events/EvtEntityCrossbowLoad.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/entity/events/EvtEntityCrossbowLoad.java @@ -4,8 +4,6 @@ import ch.njol.skript.lang.Literal; import ch.njol.skript.lang.SkriptEvent; import ch.njol.skript.lang.SkriptParser.ParseResult; -import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import io.papermc.paper.event.entity.EntityLoadCrossbowEvent; import org.bukkit.event.Event; import org.bukkit.inventory.ItemStack; @@ -13,6 +11,7 @@ import org.jetbrains.annotations.Nullable; import static it.jakegblp.lusk.utils.Constants.PAPER_HAS_ENTITY_LOAD_CROSSBOW_EVENT; +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; @SuppressWarnings("unused") public class EvtEntityCrossbowLoad extends SkriptEvent { @@ -23,12 +22,7 @@ public class EvtEntityCrossbowLoad extends SkriptEvent { .examples("") .since("1.0.1") .requiredPlugins("Paper"); - EventValues.registerEventValue(EntityLoadCrossbowEvent.class, ItemStack.class, new Getter<>() { - @Override - public @NotNull ItemStack get(final EntityLoadCrossbowEvent e) { - return e.getCrossbow(); - } - }, 0); + registerEventValue(EntityLoadCrossbowEvent.class, ItemStack.class, EntityLoadCrossbowEvent::getCrossbow, 0); } } diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/entity/events/EvtEntityEvents.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/entity/events/EvtEntityEvents.java index 8be945b4..460c28cd 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/entity/events/EvtEntityEvents.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/entity/events/EvtEntityEvents.java @@ -3,8 +3,8 @@ import ch.njol.skript.Skript; import ch.njol.skript.lang.util.SimpleEvent; import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import io.papermc.paper.event.entity.EntityInsideBlockEvent; +import io.papermc.paper.event.entity.EntityKnockbackEvent; import io.papermc.paper.event.entity.EntityPushedByEntityAttackEvent; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; @@ -18,8 +18,8 @@ import org.bukkit.event.entity.EntityShootBowEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.util.Vector; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; + +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; public class EvtEntityEvents { static { @@ -30,12 +30,7 @@ public class EvtEntityEvents { This can be cancelled but the used item will still be consumed.""") .examples("") .since("1.0.2"); - EventValues.registerEventValue(EntityEnterLoveModeEvent.class, CommandSender.class, new Getter<>() { - @Override - public @Nullable CommandSender get(final EntityEnterLoveModeEvent e) { - return e.getHumanEntity(); - } - }, EventValues.TIME_NOW); + registerEventValue(EntityEnterLoveModeEvent.class, CommandSender.class, EntityEnterLoveModeEvent::getHumanEntity, EventValues.TIME_NOW); } if (Skript.classExists("org.bukkit.event.entity.EntityPoseChangeEvent")) { Skript.registerEvent("Entity - on Pose Change", SimpleEvent.class, EntityPoseChangeEvent.class, "[entity] pose change[d]") @@ -46,18 +41,8 @@ public class EvtEntityEvents { """) .examples("") .since("1.0.2, 1.3 (past event-pose)"); - EventValues.registerEventValue(EntityPoseChangeEvent.class, Pose.class, new Getter<>() { - @Override - public @NotNull Pose get(final EntityPoseChangeEvent e) { - return e.getEntity().getPose(); - } - }, EventValues.TIME_PAST); - EventValues.registerEventValue(EntityPoseChangeEvent.class, Pose.class, new Getter<>() { - @Override - public @NotNull Pose get(final EntityPoseChangeEvent e) { - return e.getPose(); - } - }, EventValues.TIME_NOW); + registerEventValue(EntityPoseChangeEvent.class, Pose.class, e -> e.getEntity().getPose(), EventValues.TIME_PAST); + registerEventValue(EntityPoseChangeEvent.class, Pose.class, EntityPoseChangeEvent::getPose, EventValues.TIME_NOW); } if (Skript.classExists("io.papermc.paper.event.entity.EntityPushedByEntityAttackEvent")) { Skript.registerEvent("Entity - on Attack Push", SimpleEvent.class, EntityPushedByEntityAttackEvent.class, "(damage|attack) push") @@ -69,12 +54,7 @@ public class EvtEntityEvents { .examples("") .requiredPlugins("Paper") .since("1.0.2"); - EventValues.registerEventValue(EntityPushedByEntityAttackEvent.class, Vector.class, new Getter<>() { - @Override - public @NotNull Vector get(final EntityPushedByEntityAttackEvent e) { - return e.getKnockback(); - } - }, EventValues.TIME_NOW); + registerEventValue(EntityPushedByEntityAttackEvent.class, Vector.class, EntityKnockbackEvent::getKnockback, EventValues.TIME_NOW); } if (Skript.classExists("org.bukkit.event.entity.EntityShootBowEvent")) { Skript.registerEvent("Entity - on Shoot", SimpleEvent.class, EntityShootBowEvent.class, "entity shoot[ing]") @@ -82,12 +62,7 @@ public class EvtEntityEvents { Called when a LivingEntity shoots a bow firing an arrow.""") .examples("") .since("1.1.1"); - EventValues.registerEventValue(EntityShootBowEvent.class, Projectile.class, new Getter<>() { - @Override - public @Nullable Projectile get(EntityShootBowEvent event) { - return (event.getProjectile() instanceof Projectile projectile) ? projectile : null; - } - }, EventValues.TIME_NOW); + registerEventValue(EntityShootBowEvent.class, Projectile.class, e -> e.getProjectile() instanceof Projectile projectile ? projectile : null, EventValues.TIME_NOW); } if (Skript.classExists("org.bukkit.event.entity.EntityPlaceEvent")) { Skript.registerEvent("Entity - on Place", SimpleEvent.class, EntityPlaceEvent.class, "entity [getting] place[d]") @@ -96,30 +71,10 @@ public class EvtEntityEvents { Note that this event is currently only fired for four specific placements: armor stands, boats, minecarts, and end crystals.""") .examples("") .since("1.1.1"); - EventValues.registerEventValue(EntityPlaceEvent.class, Block.class, new Getter<>() { - @Override - public @NotNull Block get(EntityPlaceEvent event) { - return event.getBlock(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(EntityPlaceEvent.class, Player.class, new Getter<>() { - @Override - public @Nullable Player get(EntityPlaceEvent event) { - return event.getPlayer(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(EntityPlaceEvent.class, BlockFace.class, new Getter<>() { - @Override - public @NotNull BlockFace get(EntityPlaceEvent event) { - return event.getBlockFace(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(EntityPlaceEvent.class, EquipmentSlot.class, new Getter<>() { - @Override - public @NotNull EquipmentSlot get(EntityPlaceEvent event) { - return event.getHand(); - } - }, EventValues.TIME_NOW); + registerEventValue(EntityPlaceEvent.class, Block.class, EntityPlaceEvent::getBlock, EventValues.TIME_NOW); + registerEventValue(EntityPlaceEvent.class, Player.class, EntityPlaceEvent::getPlayer, EventValues.TIME_NOW); + registerEventValue(EntityPlaceEvent.class, BlockFace.class, EntityPlaceEvent::getBlockFace, EventValues.TIME_NOW); + registerEventValue(EntityPlaceEvent.class, EquipmentSlot.class, EntityPlaceEvent::getHand, EventValues.TIME_NOW); } if (Skript.classExists("io.papermc.paper.event.entity.EntityInsideBlockEvent")) { Skript.registerEvent("Entity - on Collide With Block", SimpleEvent.class, EntityInsideBlockEvent.class, "entity ((collide with|in[side]) [a] block)") diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/entity/events/EvtEntityRename.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/entity/events/EvtEntityRename.java index 9108c483..da5757ef 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/entity/events/EvtEntityRename.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/entity/events/EvtEntityRename.java @@ -6,8 +6,6 @@ import ch.njol.skript.lang.Literal; import ch.njol.skript.lang.SkriptEvent; import ch.njol.skript.lang.SkriptParser.ParseResult; -import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import io.papermc.paper.event.player.PlayerNameEntityEvent; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; @@ -17,6 +15,8 @@ import java.util.Arrays; +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; + @SuppressWarnings("unused") public class EvtEntityRename extends SkriptEvent { static { @@ -28,12 +28,7 @@ public class EvtEntityRename extends SkriptEvent { broadcast entity's display name""") .since("1.0.0") .requiredPlugins("Paper"); - EventValues.registerEventValue(PlayerNameEntityEvent.class, Entity.class, new Getter<>() { - @Override - public @NotNull Entity get(final PlayerNameEntityEvent e) { - return e.getEntity(); - } - }, 0); + registerEventValue(PlayerNameEntityEvent.class, Entity.class, PlayerNameEntityEvent::getEntity, 0); } } diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/fox/conditions/CondFoxTrusts.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/fox/conditions/CondFoxTrusts.java index 3a10fabd..6033a6c2 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/fox/conditions/CondFoxTrusts.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/fox/conditions/CondFoxTrusts.java @@ -17,13 +17,15 @@ import java.util.UUID; +import static it.jakegblp.lusk.utils.DeprecationUtils.test; + @Name("Fox - Trusts Players") @Description("Checks if the provided foxes trust the provided offline players.") @Examples({"if {_fox} trusts player:"}) @Since("1.3") public class CondFoxTrusts extends Condition { - static { + static { // todo: property condition Skript.registerCondition(CondFoxTrusts.class, "[fox[es]] %livingentities% trust[s] %offlineplayers%", "[fox[es]] %livingentities% do[es](n't| not) trust %offlineplayers%"); @@ -34,22 +36,23 @@ public class CondFoxTrusts extends Condition { @Override public boolean check(Event event) { - return livingEntityExpression.check(event,livingEntity -> { + return test(livingEntityExpression, event, livingEntity -> { if (livingEntity instanceof Fox fox) { - return offlinePlayerExpression.check(event,offlinePlayer -> { + return test(offlinePlayerExpression, event, offlinePlayer -> { if (fox.getFirstTrustedPlayer() == null) return false; UUID uuid = offlinePlayer.getUniqueId(); if (fox.getFirstTrustedPlayer().getUniqueId() == uuid) return true; return fox.getSecondTrustedPlayer() != null && fox.getSecondTrustedPlayer().getUniqueId() == uuid; - }); + }, OfflinePlayer.class); } return false; - },isNegated()); + }, LivingEntity.class, isNegated()); } @Override public String toString(@Nullable Event event, boolean debug) { - return "foxes "+livingEntityExpression.toString(event, debug)+(isNegated() ? " does not" : "")+" trust "+offlinePlayerExpression.toString(event, debug); + return "foxes " + livingEntityExpression.toString(event, debug) + + (isNegated() ? " does not" : "") + " trust " + offlinePlayerExpression.toString(event, debug); } @Override diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/goat/conditions/CondGoatHasHorns.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/goat/conditions/CondGoatHasHorns.java index 141e000d..b35c33b6 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/goat/conditions/CondGoatHasHorns.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/goat/conditions/CondGoatHasHorns.java @@ -16,13 +16,15 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import static it.jakegblp.lusk.utils.DeprecationUtils.test; + @Name("Goat - Has Left/Right/Both/Either Horn") @Description("Checks if goat has the left, right, both or either horn.") @Examples({"if target has its left horn:"}) @Since("1.0.3, 1.3 (Plural, Both/Either)") @SuppressWarnings("unused") public class CondGoatHasHorns extends Condition { - static { + static { // todo: property expression Skript.registerCondition(CondGoatHasHorns.class, "%livingentities% (has|have) [its|the[ir]] (:left|:right|either|any) [goat] horn", "%livingentities% (doesn't|does not|do not|don't) have [its|the[ir]] (:left|:right|either|any) [goat] horn", @@ -42,10 +44,8 @@ public class CondGoatHasHorns extends Condition { @Override public boolean init(Expression @NotNull [] expressions, int matchedPattern, @NotNull Kleenean isDelayed, @NotNull ParseResult parser) { entityExpression = (Expression) expressions[0]; - if (matchedPattern > 1) - both = true; - else - left = LuskUtils.getKleenean(parser.hasTag("left"), parser.hasTag("right")); + if (matchedPattern > 1) both = true; + else left = LuskUtils.getKleenean(parser.hasTag("left"), parser.hasTag("right")); setNegated((matchedPattern % 2) != 0); return true; } @@ -62,11 +62,11 @@ public boolean init(Expression @NotNull [] expressions, int matchedPattern, @ @Override public boolean check(@NotNull Event event) { - return entityExpression.check(event, entity -> entity instanceof Goat goat + return test(entityExpression, event, entity -> entity instanceof Goat goat && (both ? goat.hasLeftHorn() && goat.hasRightHorn() : switch (left) { case TRUE -> goat.hasLeftHorn(); case FALSE -> goat.hasRightHorn(); case UNKNOWN -> goat.hasLeftHorn() || goat.hasRightHorn(); - })); + }), LivingEntity.class); } } \ No newline at end of file diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/irongolem/conditions/CondIronGolemCreatedByPlayer.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/irongolem/conditions/CondIronGolemCreatedByPlayer.java index 7e5a84ea..d11b93a9 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/irongolem/conditions/CondIronGolemCreatedByPlayer.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/irongolem/conditions/CondIronGolemCreatedByPlayer.java @@ -1,18 +1,13 @@ package it.jakegblp.lusk.elements.minecraft.entities.irongolem.conditions; -import ch.njol.skript.Skript; import ch.njol.skript.doc.Description; import ch.njol.skript.doc.Examples; import ch.njol.skript.doc.Name; import ch.njol.skript.doc.Since; -import ch.njol.skript.lang.Condition; -import ch.njol.skript.lang.Expression; -import ch.njol.skript.lang.SkriptParser.ParseResult; -import ch.njol.util.Kleenean; +import it.jakegblp.lusk.api.skript.ExtendedPropertyType; +import it.jakegblp.lusk.api.skript.PrefixedPropertyCondition; import org.bukkit.entity.IronGolem; import org.bukkit.entity.LivingEntity; -import org.bukkit.event.Event; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @Name("Iron Golem - Created By a Player") @@ -20,29 +15,24 @@ @Examples({"if {_golem} was created by a player:"}) @Since("1.0.3") @SuppressWarnings("unused") -public class CondIronGolemCreatedByPlayer extends Condition { +public class CondIronGolemCreatedByPlayer extends PrefixedPropertyCondition { static { - Skript.registerCondition(CondIronGolemCreatedByPlayer.class, - "%livingentities% was[not:(n't| not)] (created|built) by ([a] player|players)"); + register(CondIronGolemCreatedByPlayer.class, ExtendedPropertyType.WAS, "iron[ |-]golem[s]", "(created|built) by ([a] player|players)", "livingentities"); } - private Expression entityExpression; - - @SuppressWarnings("unchecked") @Override - public boolean init(Expression @NotNull [] expressions, int matchedPattern, @NotNull Kleenean isDelayed, @NotNull ParseResult parser) { - entityExpression = (Expression) expressions[0]; - setNegated(parser.hasTag("not")); - return true; + public boolean check(LivingEntity value) { + return value instanceof IronGolem ironGolem && ironGolem.isPlayerCreated(); } @Override - public @NotNull String toString(@Nullable Event event, boolean debug) { - return entityExpression.toString(event, debug) + "were " + (isNegated() ? "not " : "") + "created by a player"; + public @Nullable String getPrefix() { + return "iron golems"; } + @Override - public boolean check(@NotNull Event event) { - return entityExpression.check(event, o -> o instanceof IronGolem ironGolem && ironGolem.isPlayerCreated()); + protected String getPropertyName() { + return "created by a player"; } } \ No newline at end of file diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/itemframe/events/EvtItemFrameChange.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/itemframe/events/EvtItemFrameChange.java index df669b07..e0e7c752 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/itemframe/events/EvtItemFrameChange.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/itemframe/events/EvtItemFrameChange.java @@ -4,8 +4,6 @@ import ch.njol.skript.lang.Literal; import ch.njol.skript.lang.SkriptEvent; import ch.njol.skript.lang.SkriptParser.ParseResult; -import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import io.papermc.paper.event.player.PlayerItemFrameChangeEvent; import org.bukkit.entity.Entity; import org.bukkit.event.Event; @@ -13,6 +11,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; + @SuppressWarnings("unused") public class EvtItemFrameChange extends SkriptEvent { static { @@ -33,18 +33,8 @@ public class EvtItemFrameChange extends SkriptEvent { """) .since("1.0.0") .requiredPlugins("Paper"); - EventValues.registerEventValue(PlayerItemFrameChangeEvent.class, Entity.class, new Getter<>() { - @Override - public @NotNull Entity get(final PlayerItemFrameChangeEvent e) { - return e.getItemFrame(); - } - }, 0); - EventValues.registerEventValue(PlayerItemFrameChangeEvent.class, ItemStack.class, new Getter<>() { - @Override - public @NotNull ItemStack get(final PlayerItemFrameChangeEvent e) { - return e.getItemStack(); - } - }, 0); + registerEventValue(PlayerItemFrameChangeEvent.class, Entity.class, PlayerItemFrameChangeEvent::getItemFrame, 0); + registerEventValue(PlayerItemFrameChangeEvent.class, ItemStack.class, PlayerItemFrameChangeEvent::getItemStack, 0); } } diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/player/events/EvtFlowerPotManipulate.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/player/events/EvtFlowerPotManipulate.java index 00f8cf9b..3cdd9457 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/player/events/EvtFlowerPotManipulate.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/player/events/EvtFlowerPotManipulate.java @@ -5,8 +5,6 @@ import ch.njol.skript.lang.Literal; import ch.njol.skript.lang.SkriptEvent; import ch.njol.skript.lang.SkriptParser.ParseResult; -import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import io.papermc.paper.event.player.PlayerFlowerPotManipulateEvent; import org.bukkit.Material; import org.bukkit.block.Block; @@ -15,6 +13,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; + @SuppressWarnings("unused") public class EvtFlowerPotManipulate extends SkriptEvent { static { @@ -32,18 +32,8 @@ public class EvtFlowerPotManipulate extends SkriptEvent { """) .requiredPlugins("Paper") .since("1.0.0"); - EventValues.registerEventValue(PlayerFlowerPotManipulateEvent.class, ItemStack.class, new Getter<>() { - @Override - public @NotNull ItemStack get(final PlayerFlowerPotManipulateEvent e) { - return e.getItem(); - } - }, 0); - EventValues.registerEventValue(PlayerFlowerPotManipulateEvent.class, Block.class, new Getter<>() { - @Override - public @NotNull Block get(final PlayerFlowerPotManipulateEvent e) { - return e.getFlowerpot(); - } - }, 0); + registerEventValue(PlayerFlowerPotManipulateEvent.class, ItemStack.class, PlayerFlowerPotManipulateEvent::getItem, 0); + registerEventValue(PlayerFlowerPotManipulateEvent.class, Block.class, PlayerFlowerPotManipulateEvent::getFlowerpot, 0); } } diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/player/events/EvtPlayerEvents.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/player/events/EvtPlayerEvents.java index b52b162a..f7569f0e 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/player/events/EvtPlayerEvents.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/player/events/EvtPlayerEvents.java @@ -3,7 +3,6 @@ import ch.njol.skript.Skript; import ch.njol.skript.lang.util.SimpleEvent; import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import ch.njol.skript.util.slot.CursorSlot; import ch.njol.skript.util.slot.DroppedItemSlot; import ch.njol.skript.util.slot.InventorySlot; @@ -26,10 +25,11 @@ import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.util.Vector; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; + import java.util.UUID; +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; + @SuppressWarnings("unused") public class EvtPlayerEvents { static { @@ -44,31 +44,15 @@ public class EvtPlayerEvents { .description("Called when the velocity of a player changes due to outside circumstances.") .examples("on player velocity change:") .since("1.3"); - EventValues.registerEventValue(PlayerVelocityEvent.class, Vector.class, new Getter<>() { - - @Override - public @NotNull Vector get(PlayerVelocityEvent event) { - return event.getVelocity(); - } - }, EventValues.TIME_NOW); + registerEventValue(PlayerVelocityEvent.class, Vector.class, PlayerVelocityEvent::getVelocity, EventValues.TIME_NOW); if (Skript.classExists("io.papermc.paper.event.player.PlayerBedFailEnterEvent")) { Skript.registerEvent("Player - on Sleep Fail", SimpleEvent.class, PlayerBedFailEnterEvent.class, "(sleep|bed [enter]) [attempt] fail", "fail[ed] to (sleep|enter [the] bed)") .description("Called when a player attempts to sleep but fails..") .examples("") .since("1.0.0") .requiredPlugins("Paper"); - EventValues.registerEventValue(PlayerBedFailEnterEvent.class, Block.class, new Getter<>() { - @Override - public @NotNull Block get(final PlayerBedFailEnterEvent e) { - return e.getBed(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(PlayerBedFailEnterEvent.class, Location.class, new Getter<>() { - @Override - public @NotNull Location get(final PlayerBedFailEnterEvent e) { - return e.getBed().getLocation(); - } - }, EventValues.TIME_NOW); + registerEventValue(PlayerBedFailEnterEvent.class, Block.class, PlayerBedFailEnterEvent::getBed, EventValues.TIME_NOW); + registerEventValue(PlayerBedFailEnterEvent.class, Location.class, e -> e.getBed().getLocation(), EventValues.TIME_NOW); } if (Skript.classExists("io.papermc.paper.event.player.PrePlayerAttackEntityEvent")) { Skript.registerEvent("Player - on Pre Damage", SimpleEvent.class, PrePlayerAttackEntityEvent.class, "pre[-| ]damage") @@ -78,12 +62,7 @@ public class EvtPlayerEvents { .examples("") .since("1.0.0") .requiredPlugins("Paper"); - EventValues.registerEventValue(PrePlayerAttackEntityEvent.class, Entity.class, new Getter<>() { - @Override - public @NotNull Entity get(final PrePlayerAttackEntityEvent e) { - return e.getAttacked(); - } - }, EventValues.TIME_NOW); + registerEventValue(PrePlayerAttackEntityEvent.class, Entity.class, PrePlayerAttackEntityEvent::getAttacked, EventValues.TIME_NOW); } if (Skript.classExists("com.destroystokyo.paper.event.player.PlayerPostRespawnEvent")) { Skript.registerEvent("Player - on Post-Respawn", SimpleEvent.class, PlayerPostRespawnEvent.class, "post[-| ]respawn") @@ -92,12 +71,7 @@ public class EvtPlayerEvents { .examples("") .since("1.0.0") .requiredPlugins("Paper"); - EventValues.registerEventValue(PlayerPostRespawnEvent.class, Location.class, new Getter<>() { - @Override - public @NotNull Location get(final PlayerPostRespawnEvent e) { - return e.getRespawnedLocation(); - } - }, EventValues.TIME_NOW); + registerEventValue(PlayerPostRespawnEvent.class, Location.class, PlayerPostRespawnEvent::getRespawnedLocation, EventValues.TIME_NOW); } if (Skript.classExists("com.destroystokyo.paper.event.profile.ProfileWhitelistVerifyEvent")) { Skript.registerEvent("Whitelist - on Player Profile Verify", SimpleEvent.class, ProfileWhitelistVerifyEvent.class, "[player] [profile] whitelist verify") @@ -106,15 +80,12 @@ public class EvtPlayerEvents { .examples("") .since("1.0.2") .requiredPlugins("Paper"); - EventValues.registerEventValue(ProfileWhitelistVerifyEvent.class, OfflinePlayer.class, new Getter<>() { - @Override - public @Nullable OfflinePlayer get(final ProfileWhitelistVerifyEvent e) { - UUID id = e.getPlayerProfile().getId(); - if (id != null) { - return Bukkit.getOfflinePlayer(id); - } - return null; + registerEventValue(ProfileWhitelistVerifyEvent.class, OfflinePlayer.class, e -> { + UUID id = e.getPlayerProfile().getId(); + if (id != null) { + return Bukkit.getOfflinePlayer(id); } + return null; // todo: utils }, EventValues.TIME_NOW); } if (Skript.classExists("org.bukkit.event.player.PlayerAttemptPickupItemEvent")) { @@ -132,18 +103,8 @@ public class EvtPlayerEvents { This event is not called for when a block is broken.""") .examples("") .since("1.1.1"); - EventValues.registerEventValue(PlayerHarvestBlockEvent.class, Block.class, new Getter<>() { - @Override - public @NotNull Block get(PlayerHarvestBlockEvent event) { - return event.getHarvestedBlock(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(PlayerHarvestBlockEvent.class, ItemStack[].class, new Getter<>() { - @Override - public @NotNull ItemStack[] get(PlayerHarvestBlockEvent event) { - return event.getItemsHarvested().toArray(new ItemStack[0]); - } - }, EventValues.TIME_NOW); + registerEventValue(PlayerHarvestBlockEvent.class, Block.class, PlayerHarvestBlockEvent::getHarvestedBlock, EventValues.TIME_NOW); + registerEventValue(PlayerHarvestBlockEvent.class, ItemStack[].class, e -> e.getItemsHarvested().toArray(new ItemStack[0]), EventValues.TIME_NOW); } Skript.registerEvent("Player - on Inventory Slot Drop", SimpleEvent.class, PlayerInventorySlotDropEvent.class, "player slot drop") @@ -152,53 +113,20 @@ Called when a player drops an item from an inventory (or their own). """) .examples("") .since("1.3"); - EventValues.registerEventValue(PlayerInventorySlotDropEvent.class, Slot.class, new Getter<>() { - @Override - public @NotNull Slot get(PlayerInventorySlotDropEvent event) { - if (event.getSlot() >= 36) { - return new ch.njol.skript.util.slot.EquipmentSlot(event.getPlayer(), event.getSlot()); - } else if (event.isDropsFromCursor()) { - return new CursorSlot(event.getPlayer(), event.getItem()); - } else { - return new InventorySlot(event.getInventory(), event.getSlot()); - } - } - }, EventValues.TIME_PAST); - EventValues.registerEventValue(PlayerInventorySlotDropEvent.class, Slot.class, new Getter<>() { - @Override - public @NotNull Slot get(PlayerInventorySlotDropEvent event) { - return new DroppedItemSlot(event.getItemEntity()); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(PlayerInventorySlotDropEvent.class, Item.class, new Getter<>() { - @Override - public @NotNull Item get(PlayerInventorySlotDropEvent event) { - return event.getItemEntity(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(PlayerInventorySlotDropEvent.class, ItemStack.class, new Getter<>() { - @Override - public @NotNull ItemStack get(PlayerInventorySlotDropEvent event) { - return event.getOriginalItem(); + registerEventValue(PlayerInventorySlotDropEvent.class, Slot.class, e -> { + if (e.getSlot() >= 36) { + return new ch.njol.skript.util.slot.EquipmentSlot(e.getPlayer(), e.getSlot()); + } else if (e.isDropsFromCursor()) { + return new CursorSlot(e.getPlayer(), e.getItem()); + } else { + return new InventorySlot(e.getInventory(), e.getSlot()); } }, EventValues.TIME_PAST); - EventValues.registerEventValue(PlayerInventorySlotDropEvent.class, ItemStack.class, new Getter<>() { - @Override - public @NotNull ItemStack get(PlayerInventorySlotDropEvent event) { - return event.getItem(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(PlayerInventorySlotDropEvent.class, Inventory.class, new Getter<>() { - @Override - public @NotNull Inventory get(PlayerInventorySlotDropEvent event) { - return event.getInventory(); - } - }, EventValues.TIME_NOW); - EventValues.registerEventValue(PlayerInventorySlotDropEvent.class, Integer.class, new Getter<>() { - @Override - public @NotNull Integer get(PlayerInventorySlotDropEvent event) { - return event.getSlot(); - } - }, EventValues.TIME_NOW); + registerEventValue(PlayerInventorySlotDropEvent.class, Slot.class, e -> new DroppedItemSlot(e.getItemEntity()), EventValues.TIME_NOW); + registerEventValue(PlayerInventorySlotDropEvent.class, Item.class, PlayerInventorySlotDropEvent::getItemEntity, EventValues.TIME_NOW); + registerEventValue(PlayerInventorySlotDropEvent.class, ItemStack.class, PlayerInventorySlotDropEvent::getOriginalItem, EventValues.TIME_PAST); + registerEventValue(PlayerInventorySlotDropEvent.class, ItemStack.class, PlayerInventorySlotDropEvent::getItem, EventValues.TIME_NOW); + registerEventValue(PlayerInventorySlotDropEvent.class, Inventory.class, PlayerInventorySlotDropEvent::getInventory, EventValues.TIME_NOW); + registerEventValue(PlayerInventorySlotDropEvent.class, Integer.class, PlayerInventorySlotDropEvent::getSlot, EventValues.TIME_NOW); } } \ No newline at end of file diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/player/events/EvtPlayerInteract.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/player/events/EvtPlayerInteract.java index 41b1bda3..6c7a8a48 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/player/events/EvtPlayerInteract.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/entities/player/events/EvtPlayerInteract.java @@ -5,7 +5,6 @@ import ch.njol.skript.lang.SkriptEvent; import ch.njol.skript.lang.SkriptParser; import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import ch.njol.util.Kleenean; import ch.njol.util.coll.CollectionUtils; import it.jakegblp.lusk.utils.LuskUtils; @@ -20,6 +19,7 @@ import org.jetbrains.annotations.Nullable; import static ch.njol.skript.paperlib.PaperLib.isPaper; +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; @SuppressWarnings("deprecation") public class EvtPlayerInteract extends SkriptEvent { @@ -43,60 +43,23 @@ public class EvtPlayerInteract extends SkriptEvent { .examples("on player main hand interaction:", "on player interacting with an entity:\n\tif event-equipmentslot = hand slot:") .since("1.3"); - EventValues.registerEventValue(PlayerInteractEvent.class, EquipmentSlot.class, new Getter<>() { - @Override - public @Nullable EquipmentSlot get(PlayerInteractEvent event) { - return event.getHand(); - } + registerEventValue(PlayerInteractEvent.class, EquipmentSlot.class, PlayerInteractEvent::getHand, EventValues.TIME_NOW); + registerEventValue(PlayerInteractEvent.class, Action.class, PlayerInteractEvent::getAction, EventValues.TIME_NOW); + registerEventValue(PlayerInteractEvent.class, Vector.class, e -> { + if (!isPaper()) return e.getClickedPosition(); + Location interactionPoint = e.getInteractionPoint(); + if (interactionPoint == null) return null; + return interactionPoint.getDirection().subtract(e.getPlayer().getLocation().getDirection()); }, EventValues.TIME_NOW); - - EventValues.registerEventValue(PlayerInteractEvent.class, Action.class, new Getter<>() { - @Override - public Action get(PlayerInteractEvent event) { - return event.getAction(); - } - }, EventValues.TIME_NOW); - - EventValues.registerEventValue(PlayerInteractEvent.class, Vector.class, new Getter<>() { - @Override - public @Nullable Vector get(PlayerInteractEvent event) { - if (!isPaper()) return event.getClickedPosition(); - Location interactionPoint = event.getInteractionPoint(); - if (interactionPoint == null) return null; - return interactionPoint.getDirection().subtract(event.getPlayer().getLocation().getDirection()); - } - }, EventValues.TIME_NOW); - - EventValues.registerEventValue(PlayerInteractEvent.class, Location.class, new Getter<>() { - @Override - public @Nullable Location get(PlayerInteractEvent event) { - if (isPaper()) return event.getInteractionPoint(); - Vector offset = event.getClickedPosition(); + registerEventValue(PlayerInteractEvent.class, Location.class, e -> { + if (isPaper()) return e.getInteractionPoint(); + Vector offset = e.getClickedPosition(); if (offset == null) return null; - return event.getPlayer().getLocation().add(offset); - } - }, EventValues.TIME_NOW); - - EventValues.registerEventValue(PlayerInteractEntityEvent.class, EquipmentSlot.class, new Getter<>() { - @Override - public EquipmentSlot get(PlayerInteractEntityEvent event) { - return event.getHand(); - } - }, EventValues.TIME_NOW); - - EventValues.registerEventValue(PlayerInteractAtEntityEvent.class, Location.class, new Getter<>() { - @Override - public Location get(PlayerInteractAtEntityEvent event) { - return event.getRightClicked().getLocation().add(event.getClickedPosition()); - } - }, EventValues.TIME_NOW); - - EventValues.registerEventValue(PlayerInteractAtEntityEvent.class, Vector.class, new Getter<>() { - @Override - public Vector get(PlayerInteractAtEntityEvent event) { - return event.getClickedPosition(); - } + return e.getPlayer().getLocation().add(offset); }, EventValues.TIME_NOW); + registerEventValue(PlayerInteractEntityEvent.class, EquipmentSlot.class, PlayerInteractEntityEvent::getHand, EventValues.TIME_NOW); + registerEventValue(PlayerInteractAtEntityEvent.class, Location.class, e -> e.getRightClicked().getLocation().add(e.getClickedPosition()), EventValues.TIME_NOW); + registerEventValue(PlayerInteractAtEntityEvent.class, Vector.class, PlayerInteractAtEntityEvent::getClickedPosition, EventValues.TIME_NOW); } private Kleenean isEntityInteraction; diff --git a/src/main/java/it/jakegblp/lusk/elements/minecraft/world/events/EvtWorldBorderChange.java b/src/main/java/it/jakegblp/lusk/elements/minecraft/world/events/EvtWorldBorderChange.java index 49c6b2b9..4f304691 100644 --- a/src/main/java/it/jakegblp/lusk/elements/minecraft/world/events/EvtWorldBorderChange.java +++ b/src/main/java/it/jakegblp/lusk/elements/minecraft/world/events/EvtWorldBorderChange.java @@ -4,8 +4,6 @@ import ch.njol.skript.lang.Literal; import ch.njol.skript.lang.SkriptEvent; import ch.njol.skript.lang.SkriptParser.ParseResult; -import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import ch.njol.util.coll.CollectionUtils; import io.papermc.paper.event.world.border.WorldBorderBoundsChangeEvent; import io.papermc.paper.event.world.border.WorldBorderBoundsChangeFinishEvent; @@ -13,10 +11,12 @@ import io.papermc.paper.event.world.border.WorldBorderEvent; import org.bukkit.World; import org.bukkit.event.Event; +import org.bukkit.event.world.WorldEvent; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import static it.jakegblp.lusk.utils.Constants.PAPER_HAS_WORLD_BORDER_EVENT; +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; @SuppressWarnings("unused") public class EvtWorldBorderChange extends SkriptEvent { @@ -37,12 +37,7 @@ public class EvtWorldBorderChange extends SkriptEvent { """) .since("1.0.2") .requiredPlugins("Paper"); - EventValues.registerEventValue(WorldBorderEvent.class, World.class, new Getter<>() { - @Override - public @NotNull World get(final WorldBorderEvent e) { - return e.getWorld(); - } - }, 0); + registerEventValue(WorldBorderEvent.class, World.class, WorldEvent::getWorld, 0); } } diff --git a/src/main/java/it/jakegblp/lusk/elements/skript/events/EvtSkriptEvents.java b/src/main/java/it/jakegblp/lusk/elements/skript/events/EvtSkriptEvents.java index bcf0fd72..ce50efdd 100644 --- a/src/main/java/it/jakegblp/lusk/elements/skript/events/EvtSkriptEvents.java +++ b/src/main/java/it/jakegblp/lusk/elements/skript/events/EvtSkriptEvents.java @@ -1,12 +1,13 @@ package it.jakegblp.lusk.elements.skript.events; import ch.njol.skript.Skript; +import ch.njol.skript.command.CommandEvent; import ch.njol.skript.command.EffectCommandEvent; import ch.njol.skript.lang.util.SimpleEvent; -import ch.njol.skript.registrations.EventValues; -import ch.njol.skript.util.Getter; import org.bukkit.command.CommandSender; +import static it.jakegblp.lusk.utils.DeprecationUtils.registerEventValue; + public class EvtSkriptEvents { static { Skript.registerEvent("Skript - on Effect Command", SimpleEvent.class, EffectCommandEvent.class, @@ -21,23 +22,7 @@ public class EvtSkriptEvents { """ ) .since("1.3"); - EventValues.registerEventValue(EffectCommandEvent.class, String.class, new Getter<>() { - @Override - public String get(EffectCommandEvent e) { - return e.getCommand(); - } - }, 0); - EventValues.registerEventValue(EffectCommandEvent.class, String.class, new Getter<>() { - @Override - public String get(EffectCommandEvent e) { - return e.getCommand(); - } - }, 0); - EventValues.registerEventValue(EffectCommandEvent.class, CommandSender.class, new Getter<>() { - @Override - public CommandSender get(EffectCommandEvent e) { - return e.getSender(); - } - }, 0); + registerEventValue(EffectCommandEvent.class, String.class, CommandEvent::getCommand,0); + registerEventValue(EffectCommandEvent.class, CommandSender.class, CommandEvent::getSender, 0); } } diff --git a/src/main/java/it/jakegblp/lusk/utils/Constants.java b/src/main/java/it/jakegblp/lusk/utils/Constants.java index f6658f7d..23cddd87 100644 --- a/src/main/java/it/jakegblp/lusk/utils/Constants.java +++ b/src/main/java/it/jakegblp/lusk/utils/Constants.java @@ -69,6 +69,10 @@ public class Constants { HAS_AXOLOTL_VARIANT = classExists("org.bukkit.entity.Axolotl$Variant"), HAS_REMOVE_ENCHANTMENTS_METHOD = methodExists(ItemStack.class, "removeEnchantments"), HAS_BLOCK_BREAK_EVENT_DROPS_ITEMS = methodExists(BlockBreakEvent.class, "isDropsItems"), + /** + * Whether the current skript version is greater than or equal to 2.7 + */ + SKRIPT_2_7 = VERSION_SKRIPT.isGreaterThanOrEqualTo(parseVersion("2.7")), /** * Whether the current skript version is greater than or equal to 2.8 */ diff --git a/src/main/java/it/jakegblp/lusk/utils/DeprecationUtils.java b/src/main/java/it/jakegblp/lusk/utils/DeprecationUtils.java index bf008e67..5b28455f 100644 --- a/src/main/java/it/jakegblp/lusk/utils/DeprecationUtils.java +++ b/src/main/java/it/jakegblp/lusk/utils/DeprecationUtils.java @@ -61,7 +61,7 @@ public static long getMilliseconds(Timespan timespan) { } @SuppressWarnings("all") - public static boolean test(Event event, Expression expr, Predicate predicate) { + public static boolean test(Expression expr, Event event, Predicate predicate, Class type) { if (SKRIPT_2_10) { return expr.check(event, predicate); } else { @@ -73,14 +73,14 @@ public static boolean test(Event event, Expression expr, Predicate pre new Class[]{checkerClass}, (proxy, method, args) -> { if ("check".equals(method.getName()) && args != null && args.length == 1) { - return predicate.test((T) args[0]); + Object arg = args[0]; + if (type.isInstance(arg)) return predicate.test(type.cast(arg)); } return null; } ); - Method checkMethod = expr.getClass().getMethod("check", Event.class, checkerClass); - return (boolean) checkMethod.invoke(expr, event, checkerInstance); + return (boolean) expr.getClass().getMethod("check", Event.class, checkerClass).invoke(expr, event, checkerInstance); } catch (InvocationTargetException | IllegalAccessException | ClassNotFoundException | NoSuchMethodException e) { warning("Something went wrong with a condition: {0}", e.getMessage()); } @@ -88,8 +88,8 @@ public static boolean test(Event event, Expression expr, Predicate pre return false; } - public static boolean test(Event event, Expression expr, Predicate predicate, @Nullable Boolean negated) { - boolean bool = test(event, expr, predicate); + public static boolean test(Expression expr, Event event, Predicate predicate, Class type, @Nullable Boolean negated) { + boolean bool = test(expr, event, predicate, type); if (negated != null) return bool ^ negated; return bool; } @@ -106,7 +106,8 @@ public static void registerEventValue(Class event, Class new Class[]{getterClass}, (proxy, method, args) -> { if ("get".equals(method.getName()) && args != null && args.length == 1) { - return function.apply((E) args[0]); + Object arg = args[0]; + if (type.isInstance(arg)) return function.apply(event.cast(arg)); } return null; } @@ -120,7 +121,6 @@ public static void registerEventValue(Class event, Class int.class ); registerMethod.invoke(null, event, type, getterInstance, time); - } catch (ClassNotFoundException | InvocationTargetException | NoSuchMethodException | IllegalAccessException e) { throw new RuntimeException(e); @@ -144,7 +144,8 @@ public static void registerConverter(Class from, Class to, Function new Class[]{converterClass}, (proxy, method, args) -> { if ("convert".equals(method.getName()) && args != null && args.length == 1) { - return converter.apply((F) args[0]); + Object arg = args[0]; + if (from.isInstance(arg)) return converter.apply(from.cast(arg)); } return null; }