diff --git a/src/main/java/ch/njol/skript/test/runner/SkriptJUnitTest.java b/src/main/java/ch/njol/skript/test/runner/SkriptJUnitTest.java index 69f2c656218..c4c346f3690 100644 --- a/src/main/java/ch/njol/skript/test/runner/SkriptJUnitTest.java +++ b/src/main/java/ch/njol/skript/test/runner/SkriptJUnitTest.java @@ -1,17 +1,12 @@ package ch.njol.skript.test.runner; -import org.bukkit.Bukkit; -import org.bukkit.GameRule; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.World; +import ch.njol.skript.Skript; +import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.Pig; -import ch.njol.skript.Skript; - /** * Class that helps the JUnit test communicate with Skript. */ @@ -84,9 +79,19 @@ public static Location getTestLocation() { * @return Pig that has been spawned. */ public static Pig spawnTestPig() { + return spawnTestEntity(EntityType.PIG); + } + + /** + * Spawns a test {@link Entity} from the provided {@code entityType} + * @param entityType The desired {@link EntityType} to spawn + * @return The spawned {@link Entity} + */ + public static E spawnTestEntity(EntityType entityType) { if (delay <= 0D) - delay = 1; // A single tick allows the piggy to spawn before server shutdown. - return (Pig) getTestWorld().spawnEntity(getTestLocation(), EntityType.PIG); + delay = 1; // A single tick allows the entity to spawn before server shutdown. + //noinspection unchecked + return (E) getTestWorld().spawnEntity(getTestLocation(), entityType); } /** diff --git a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/effects/EffGoatHornsTest.java b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/effects/EffGoatHornsTest.java index 11620703805..9098491262a 100644 --- a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/effects/EffGoatHornsTest.java +++ b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/effects/EffGoatHornsTest.java @@ -1,12 +1,9 @@ package org.skriptlang.skript.test.tests.syntaxes.effects; import ch.njol.skript.test.runner.SkriptJUnitTest; -import org.bukkit.Bukkit; +import org.bukkit.entity.EntityType; import org.bukkit.entity.Goat; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.world.WorldLoadEvent; import org.junit.After; -import org.junit.Before; import org.junit.Test; public class EffGoatHornsTest extends SkriptJUnitTest { @@ -19,7 +16,7 @@ public class EffGoatHornsTest extends SkriptJUnitTest { @Test public void test() { - goat = getTestWorld().spawn(getTestWorld().getSpawnLocation(), Goat.class); + goat = spawnTestEntity(EntityType.GOAT); } @After diff --git a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/BellEventsTest.java b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/BellEventsTest.java index d6e17ac4f1b..5c9bfadd2df 100644 --- a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/BellEventsTest.java +++ b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/BellEventsTest.java @@ -1,12 +1,10 @@ package org.skriptlang.skript.test.tests.syntaxes.events; -import ch.njol.skript.Skript; import ch.njol.skript.test.runner.SkriptJUnitTest; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; -import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Pillager; import org.bukkit.event.Event; @@ -16,22 +14,16 @@ import org.junit.Test; import java.util.Collections; -import java.util.HashMap; import java.util.HashSet; -import java.util.Map; import java.util.Set; public class BellEventsTest extends SkriptJUnitTest { - private static final boolean canRun = Skript.classExists("org.bukkit.block.Bell"); - private Block bell; private LivingEntity pillager; @Before public void setUp() { - if (!canRun) - return; this.bell = setBlock(Material.BELL); this.pillager = getTestWorld().spawn(bell.getLocation().add(0, 1, 0), Pillager.class); setShutdownDelay(1); @@ -39,23 +31,9 @@ public void setUp() { @Test public void testEvents() { - if (!canRun) - return; Set events = new HashSet<>(); - if (Skript.classExists("org.bukkit.event.block.BellRingEvent")) { - events.add(new BellRingEvent(this.bell, BlockFace.EAST, null)); - } else if (Skript.classExists("io.papermc.paper.event.block.BellRingEvent")) { - try { - events.add(io.papermc.paper.event.block.BellRingEvent.class.getConstructor(Block.class, Entity.class) - .newInstance(this.bell, null)); - } catch (ReflectiveOperationException ignored) { - } - - } - - if (Skript.classExists("org.bukkit.event.block.BellResonateEvent")) - events.add(new BellResonateEvent(this.bell, Collections.singletonList(this.pillager))); - + events.add(new BellRingEvent(this.bell, BlockFace.EAST, null)); + events.add(new BellResonateEvent(this.bell, Collections.singletonList(this.pillager))); for (Event event : events) Bukkit.getPluginManager().callEvent(event); } diff --git a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtBreedTest.java b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtBreedTest.java index be6eb6da784..571ba8ee238 100644 --- a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtBreedTest.java +++ b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtBreedTest.java @@ -5,6 +5,7 @@ import org.bukkit.Material; import org.bukkit.entity.Pig; import org.bukkit.entity.Player; +import org.bukkit.event.entity.EntityBreedEvent; import org.bukkit.inventory.ItemStack; import org.easymock.EasyMock; import org.junit.After; @@ -39,7 +40,7 @@ public void before() { @Test public void test() { Bukkit.getPluginManager().callEvent( - new org.bukkit.event.entity.EntityBreedEvent( + new EntityBreedEvent( child, mother, father, player, new ItemStack(Material.CARROT), 0)); } diff --git a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtBucketEntityTest.java b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtBucketEntityTest.java index 10764efff03..0cd12fa4c49 100644 --- a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtBucketEntityTest.java +++ b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtBucketEntityTest.java @@ -3,10 +3,7 @@ import ch.njol.skript.test.runner.SkriptJUnitTest; import org.bukkit.Bukkit; import org.bukkit.Material; -import org.bukkit.entity.Cod; -import org.bukkit.entity.Fish; -import org.bukkit.entity.Player; -import org.bukkit.entity.Salmon; +import org.bukkit.entity.*; import org.bukkit.event.player.PlayerBucketEntityEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; @@ -26,8 +23,8 @@ public class EvtBucketEntityTest extends SkriptJUnitTest { @Before public void setup() { - salmon = getTestLocation().getWorld().spawn(getTestLocation(), Salmon.class); - cod = getTestLocation().getWorld().spawn(getTestLocation(), Cod.class); + salmon = spawnTestEntity(EntityType.SALMON); + cod = spawnTestEntity(EntityType.COD); } @Test diff --git a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtFireworkTest.java b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtFireworkTest.java index 75941ff7de6..4b605f10275 100644 --- a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtFireworkTest.java +++ b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtFireworkTest.java @@ -20,7 +20,7 @@ public class EvtFireworkTest extends SkriptJUnitTest { private EntityType entityType; - private List fireworkList = new ArrayList<>(); + private final List fireworkList = new ArrayList<>(); @Before public void getEntity() { @@ -35,7 +35,7 @@ public void getEntity() { public void callEvents() { List events = new ArrayList<>(); for (SkriptColor color : SkriptColor.values()) { - Firework firework = (Firework) getTestWorld().spawnEntity(getTestLocation(), entityType); + Firework firework = spawnTestEntity(entityType); FireworkEffect fireworkEffect = FireworkEffect.builder().withColor(color.asDyeColor().getFireworkColor()).build(); FireworkMeta fireworkMeta = firework.getFireworkMeta(); fireworkMeta.addEffects(fireworkEffect); diff --git a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtFishTest.java b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtFishTest.java index 4e21768cd2b..4af33528bad 100644 --- a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtFishTest.java +++ b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtFishTest.java @@ -1,6 +1,5 @@ package org.skriptlang.skript.test.tests.syntaxes.events; -import ch.njol.skript.Skript; import ch.njol.skript.test.runner.SkriptJUnitTest; import org.bukkit.Bukkit; import org.bukkit.entity.*; @@ -22,8 +21,8 @@ public class EvtFishTest extends SkriptJUnitTest { @Before public void setup() { - salmon = getTestLocation().getWorld().spawn(getTestLocation(), Salmon.class); - cod = getTestLocation().getWorld().spawn(getTestLocation(), Cod.class); + salmon = spawnTestEntity(EntityType.SALMON); + cod = spawnTestEntity(EntityType.COD); } @Test diff --git a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtPiglinBarterTest.java b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtPiglinBarterTest.java index 9752d3f06a4..74a98419e14 100644 --- a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtPiglinBarterTest.java +++ b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtPiglinBarterTest.java @@ -1,11 +1,11 @@ package org.skriptlang.skript.test.tests.syntaxes.events; -import ch.njol.skript.Skript; import ch.njol.skript.test.runner.SkriptJUnitTest; import org.bukkit.Bukkit; import org.bukkit.Material; -import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; +import org.bukkit.entity.Piglin; +import org.bukkit.event.entity.PiglinBarterEvent; import org.bukkit.inventory.ItemStack; import org.junit.After; import org.junit.Before; @@ -16,8 +16,7 @@ public class EvtPiglinBarterTest extends SkriptJUnitTest { - private Entity piglin; - private static final boolean canRun = Skript.classExists("org.bukkit.event.entity.PiglinBarterEvent"); + private Piglin piglin; static { setShutdownDelay(1); @@ -25,33 +24,20 @@ public class EvtPiglinBarterTest extends SkriptJUnitTest { @Before public void spawn() { - if (!canRun) - return; - - piglin = getTestWorld().spawnEntity(getTestLocation(), EntityType.PIGLIN); + piglin = spawnTestEntity(EntityType.PIGLIN); } @Test public void testCall() { - if (!canRun) - return; - ItemStack input = new ItemStack(Material.GOLD_INGOT); List outcome = new ArrayList<>(); outcome.add(new ItemStack(Material.EMERALD)); - try { - Bukkit.getPluginManager().callEvent( - new org.bukkit.event.entity.PiglinBarterEvent( - (org.bukkit.entity.Piglin) piglin, input, outcome)); - } catch (NoClassDefFoundError ignored) { } + Bukkit.getPluginManager().callEvent(new PiglinBarterEvent(piglin, input, outcome)); } @After public void remove() { - if (!canRun) - return; - piglin.remove(); } diff --git a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtVehicleCollisionTest.java b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtVehicleCollisionTest.java index bc9c132b4e3..c56334f3099 100644 --- a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtVehicleCollisionTest.java +++ b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/EvtVehicleCollisionTest.java @@ -22,7 +22,7 @@ public class EvtVehicleCollisionTest extends SkriptJUnitTest { @Before public void setUp() { pig = spawnTestPig(); - sheep = (Sheep) getTestWorld().spawnEntity(getTestLocation(), EntityType.SHEEP); + sheep = spawnTestEntity(EntityType.SHEEP); old = getBlock().getType(); setBlock(Material.OBSIDIAN); } diff --git a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/PlayerElytraBoostEventTest.java b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/PlayerElytraBoostEventTest.java index 75855937cc6..87bc1eb25ff 100644 --- a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/PlayerElytraBoostEventTest.java +++ b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/events/PlayerElytraBoostEventTest.java @@ -30,37 +30,30 @@ public void setUp() { entityType = EntityType.valueOf("FIREWORK_ROCKET"); } assert entityType != null; - firework = (Firework) getTestWorld().spawnEntity(getTestLocation(), entityType); + firework = spawnTestEntity(entityType); firework.setTicksToDetonate(9999999); } @Test public void test() { + ItemStack rocket = new ItemStack(Material.FIREWORK_ROCKET); Constructor constructor = null; - boolean newerConstructor = false; + Event event = null; try { - constructor = PlayerElytraBoostEvent.class.getConstructor(Player.class, ItemStack.class, Firework.class, EquipmentSlot.class); - newerConstructor = true; - } catch (Exception ignored) { - try { - constructor = PlayerElytraBoostEvent.class.getConstructor(Player.class, ItemStack.class, Firework.class); - } catch (NoSuchMethodException e) { - throw new IllegalStateException("No valid constructor for 'PlayerElytraBoostEvent'"); + constructor = PlayerElytraBoostEvent.class.getDeclaredConstructor(Player.class, ItemStack.class, Firework.class, EquipmentSlot.class); + event = (Event) constructor.newInstance(player, rocket, firework, EquipmentSlot.HAND); + } catch (Exception ignored) {} + if (constructor == null) { + try { + constructor = PlayerElytraBoostEvent.class.getConstructor(Player.class, ItemStack.class, Firework.class); + event = (Event) constructor.newInstance(player, rocket, firework); + } catch (Exception e) { + throw new RuntimeException("No valid constructor for 'PlayerElytraBoostEvent'"); } } + assert event != null; - try { - Event event; - if (newerConstructor) { - event = (Event) constructor.newInstance(player, new ItemStack(Material.FIREWORK_ROCKET), firework, EquipmentSlot.HAND); - } else { - event = (Event) constructor.newInstance(player, new ItemStack(Material.FIREWORK_ROCKET), firework); - } - - Bukkit.getPluginManager().callEvent(event); - } catch (Exception e) { - throw new RuntimeException("Unable to construct event."); - } + Bukkit.getPluginManager().callEvent(event); } @After diff --git a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/expressions/ExprAffectedEntitiesTest.java b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/expressions/ExprAffectedEntitiesTest.java index ab7c1f073f9..cbef38e5da2 100644 --- a/src/test/java/org/skriptlang/skript/test/tests/syntaxes/expressions/ExprAffectedEntitiesTest.java +++ b/src/test/java/org/skriptlang/skript/test/tests/syntaxes/expressions/ExprAffectedEntitiesTest.java @@ -24,7 +24,7 @@ public class ExprAffectedEntitiesTest extends SkriptJUnitTest { public void setUp() { piggy = spawnTestPig(); entityList.add(piggy); - cloud = (AreaEffectCloud) getTestWorld().spawnEntity(getTestLocation(), EntityType.AREA_EFFECT_CLOUD); + cloud = spawnTestEntity(EntityType.AREA_EFFECT_CLOUD); } @Test