Meteor #324
@ -69,6 +69,7 @@ public class HellsBells {
|
||||
GlobalRecorder.getInstance().system(stateSwapMessage);
|
||||
FightSystem.getMessage().broadcast(stateSwapMessage);
|
||||
currentDrops = 0;
|
||||
current = current.getNext();
|
||||
}
|
||||
|
||||
currentDrops++;
|
||||
|
@ -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);
|
||||
Lixfel markierte diese Unterhaltung als gelöst
|
||||
|
||||
|
||||
State(int minTime, int maxTime, int switchAfter, int explosionSize, int minAmount, int maxAmount) {
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren
Auch nicht genau so in HellsBells?
Die Klasse schon, sie hat nur andere Werte! Vllt könnte man sich da eine kleine lineare State Machine ausdenken, welche das gleiche Macht.