From f2b86c9b1d0b0198f5042bec6634d035ef14253e Mon Sep 17 00:00:00 2001 From: yoyosource Date: Sat, 15 Jan 2022 16:06:43 +0100 Subject: [PATCH] Fix HellBells and Meteor --- .../fightsystem/event/HellsBells.java | 1 + .../de/steamwar/fightsystem/event/Meteor.java | 31 ++++++++++++++----- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java index 013e314..a089262 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/HellsBells.java @@ -69,6 +69,7 @@ public class HellsBells { GlobalRecorder.getInstance().system(stateSwapMessage); FightSystem.getMessage().broadcast(stateSwapMessage); currentDrops = 0; + current = current.getNext(); } currentDrops++; diff --git a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java index 42aa29e..2e3245f 100644 --- a/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java +++ b/FightSystem_Core/src/de/steamwar/fightsystem/event/Meteor.java @@ -15,7 +15,9 @@ import java.util.logging.Level; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; +import org.bukkit.entity.EntityType; import org.bukkit.entity.Fireball; +import org.bukkit.entity.TNTPrimed; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.ProjectileHitEvent; @@ -38,9 +40,16 @@ public class Meteor implements Listener { public void startCountdown() { if (current == Meteor.State.PRE) { + Bukkit.getOnlinePlayers().forEach(player -> { + player.sendMessage("Starting"); + }); current = current.getNext(); } else if (current != Meteor.State.LAST && currentDrops >= current.SWITCH_AFTER) { + Bukkit.getOnlinePlayers().forEach(player -> { + player.sendMessage("Faster"); + }); currentDrops = 0; + current = current.getNext(); } currentDrops++; @@ -51,8 +60,10 @@ public class Meteor implements Listener { @EventHandler public void explode(ProjectileHitEvent event) { if (event.getEntity() instanceof Fireball) { - event.getEntity().getWorld().createExplosion(event.getEntity().getLocation(), current.explosionSize); - Bukkit.getScheduler().runTaskLater(FightSystem.getPlugin(), () -> event.getEntity().getWorld().createExplosion(event.getEntity().getLocation(), current.explosionSize), 1L); + TNTPrimed tnt = world.spawn(event.getEntity().getLocation(), TNTPrimed.class); + tnt.setVelocity(new Vector(0, 0, 0)); + tnt.setFuseTicks(0); + tnt.setYield(current.explosionSize); } } @@ -67,6 +78,9 @@ public class Meteor implements Listener { Meteor.Point redStart = new Meteor.Point(Config.RedExtendRegion.getMinX() + xOffset, Config.RedExtendRegion.getMaxY() + yOffset, Config.RedExtendRegion.getMaxZ() - zOffset); Meteor.Point blueStart = new Meteor.Point(Config.BlueExtendRegion.getMinX() + xOffset, Config.BlueExtendRegion.getMaxY() + yOffset, Config.BlueExtendRegion.getMinZ() + zOffset); + vector.setX(random.nextDouble() - 0.5); + vector.setZ(random.nextDouble() - 0.5); + Fireball fireballRed = world.spawn(redStart.toLocation(world), Fireball.class); fireballRed.setDirection(vector); fireballRed.setBounce(false); @@ -74,6 +88,7 @@ public class Meteor implements Listener { fireballRed.setYield(0); Fireball fireballBlue = world.spawn(blueStart.toLocation(world), Fireball.class); + vector.setZ(vector.getZ() * -1); fireballBlue.setDirection(vector); fireballBlue.setBounce(false); fireballBlue.setIsIncendiary(false); @@ -143,12 +158,12 @@ public class Meteor implements Listener { private enum State { - PRE(60, 80, 1, 0, 0, 0), - FIRST(40, 60, 3, 2, 1, 3), - SECOND(30, 40, 4, 4, 2, 5), - THIRD(20, 30, 4, 6, 3, 7), - FOURTH(10, 20, 5, 8, 5, 10), - LAST(5, 10, 0, 10, 7, 15); + PRE(30, 40, 1, 0, 0, 0), + FIRST(25, 35, 3, 2, 2, 4), + SECOND(20, 30, 4, 4, 3, 6), + THIRD(15, 25, 4, 6, 4, 8), + FOURTH(10, 20, 5, 8, 6, 11), + LAST(5, 10, 0, 10, 8, 16); State(int minTime, int maxTime, int switchAfter, int explosionSize, int minAmount, int maxAmount) {