SteamWar/FightSystem
Archiviert
13
1

Meteor #324

Zusammengeführt
Lixfel hat 24 Commits von Meteor nach master 2022-02-11 22:48:17 +01:00 zusammengeführt
Nur Änderungen aus Commit ea833f979e werden angezeigt - Alle Commits anzeigen

Datei anzeigen

@ -10,6 +10,7 @@ import de.steamwar.fightsystem.utils.Message;
import de.steamwar.fightsystem.utils.SWSound;
import de.steamwar.fightsystem.winconditions.Winconditions;
import java.util.Random;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import org.bukkit.Bukkit;
import org.bukkit.Location;
@ -18,6 +19,7 @@ import org.bukkit.entity.Fireball;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.ProjectileHitEvent;
import org.bukkit.scheduler.BukkitTask;
import org.bukkit.util.Vector;
@ -32,6 +34,7 @@ public class Meteor implements Listener {
private Meteor.State current = Meteor.State.PRE;
private int currentDrops = 0;
private Meteor.MeteorCountdown currentCountdown;
private BukkitTask currentDropping;
public void startCountdown() {
if (current == Meteor.State.PRE) {
@ -54,24 +57,32 @@ public class Meteor implements Listener {
}
public void drop() {
int xOffset = getStart(xLength);
int zOffset = getStart(zLength);
int yOffset = getHeightStart();
final AtomicInteger amount = new AtomicInteger(current.minAmount + random.nextInt(current.maxAmount - current.minAmount));
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);
currentDropping = Bukkit.getScheduler().runTaskTimer(FightSystem.getPlugin(), () -> {
int xOffset = getStart(xLength);
int zOffset = getStart(zLength);
Veraltet
Review

Warum hier ein TNT Spawnen und nicht einfach die Explosionsstärke des Fireballs hochdrehen?

Warum hier ein TNT Spawnen und nicht einfach die Explosionsstärke des Fireballs hochdrehen?
Veraltet
Review

Damit Wasser mit weggeht? Das geht nur bei TNT Schaden weg, und ich weiß nicht ob es so gut ist (für Feuerbälle) dies zu erweitern.

Damit Wasser mit weggeht? Das geht nur bei TNT Schaden weg, und ich weiß nicht ob es so gut ist (für Feuerbälle) dies zu erweitern.
Veraltet
Review
Das ist FUD. Der WaterRemover schert sich nicht darum, ob es Feuerball oder TNT ist: https://steamwar.de/devlabs/SteamWar/FightSystem/src/branch/master/FightSystem_Core/src/de/steamwar/fightsystem/listener/WaterRemover.java
Veraltet
Review

Aber wenn ich einfach eine Explosion mache, macht er es nicht weg, dass war es nämlich vorher. Werden nicht auch die beiden arten von Explosionen, anders berechnet intern, muss ich mir mal angucken.

Aber wenn ich einfach eine Explosion mache, macht er es nicht weg, dass war es nämlich vorher. Werden nicht auch die beiden arten von Explosionen, anders berechnet intern, muss ich mir mal angucken.
Veraltet
Review

Es macht einen Unterschied, ob du einen Fireball oder einen Large_Fireball (o.ä.) spawnst. Der eine ist ein Dispenser-Fireball, der andere ein Ghast-/MissileWars-Fireball!

Es macht einen Unterschied, ob du einen Fireball oder einen Large_Fireball (o.ä.) spawnst. Der eine ist ein Dispenser-Fireball, der andere ein Ghast-/MissileWars-Fireball!
int yOffset = getHeightStart();
Fireball fireballRed = world.spawn(redStart.toLocation(world), Fireball.class);
fireballRed.setDirection(vector);
fireballRed.setBounce(false);
fireballRed.setIsIncendiary(false);
fireballRed.setYield(0);
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);
Fireball fireballBlue = world.spawn(blueStart.toLocation(world), Fireball.class);
fireballBlue.setDirection(vector);
fireballBlue.setBounce(false);
fireballBlue.setIsIncendiary(false);
fireballBlue.setYield(0);
Fireball fireballRed = world.spawn(redStart.toLocation(world), Fireball.class);
fireballRed.setDirection(vector);
fireballRed.setBounce(false);
fireballRed.setIsIncendiary(false);
fireballRed.setYield(0);
Fireball fireballBlue = world.spawn(blueStart.toLocation(world), Fireball.class);
fireballBlue.setDirection(vector);
fireballBlue.setBounce(false);
fireballBlue.setIsIncendiary(false);
fireballBlue.setYield(0);
if (amount.decrementAndGet() <= 0) {
currentDropping.cancel();
}
}, 0L, 4L);
}
private int getStart(int regionSize) {
@ -132,25 +143,29 @@ public class Meteor implements Listener {
private enum State {
PRE(60, 80, 1, 0),
FIRST(40, 60, 3, 2),
SECOND(30, 40, 4, 4),
THIRD(20, 30, 4, 6),
FOURTH(10, 20, 5, 8),
LAST(5, 10, 0, 10);
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),
Lixfel markierte diese Unterhaltung als gelöst
Review

Gibts die Klasse nicht schon in HellsBells?

Gibts die Klasse nicht schon in HellsBells?
Review

Vermutlich schon.

Vermutlich schon.
FOURTH(10, 20, 5, 8, 5, 10),
LAST(5, 10, 0, 10, 7, 15);
State(int minTime, int maxTime, int switchAfter, int explosionSize) {
State(int minTime, int maxTime, int switchAfter, int explosionSize, int minAmount, int maxAmount) {
this.MIN_TIME = minTime;
this.MAX_TIME = maxTime;
this.SWITCH_AFTER = switchAfter;
this.explosionSize = explosionSize;
this.minAmount = minAmount;
this.maxAmount = maxAmount;
}
private final int MIN_TIME; //NOSONAR
private final int MAX_TIME; //NOSONAR
private final int SWITCH_AFTER; //NOSONAR
private final int explosionSize; //NOSONAR
Lixfel markierte diese Unterhaltung als gelöst
Review

Auch nicht genau so in HellsBells?

Auch nicht genau so in HellsBells?
Review

Die Klasse schon, sie hat nur andere Werte! Vllt könnte man sich da eine kleine lineare State Machine ausdenken, welche das gleiche Macht.

Die Klasse schon, sie hat nur andere Werte! Vllt könnte man sich da eine kleine lineare State Machine ausdenken, welche das gleiche Macht.
private final int minAmount;
private final int maxAmount;
public Meteor.State getNext() {