62 Zeilen
2.5 KiB
Java
62 Zeilen
2.5 KiB
Java
package de.steamwar.fightsystem.winconditions;
|
|
|
|
import de.steamwar.fightsystem.FightSystem;
|
|
import de.steamwar.fightsystem.fight.Fight;
|
|
import de.steamwar.fightsystem.states.FightState;
|
|
import de.steamwar.fightsystem.Config;
|
|
import de.steamwar.fightsystem.utils.Region;
|
|
import org.bukkit.entity.Entity;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.entity.EntityExplodeEvent;
|
|
|
|
public class WinconditionPercentSystem extends ListenerWincondition {
|
|
|
|
private static double bluePercent = 0D;
|
|
private static double redPercent = 0D;
|
|
|
|
private static int blueDestroyedBlocks;
|
|
private static int redDestroyedBlocks;
|
|
|
|
private static int schematicSize;
|
|
|
|
public WinconditionPercentSystem() {
|
|
init(Config.PercentSystem);
|
|
|
|
schematicSize = Math.abs(Config.SchemsizeX * Config.SchemsizeY * Config.SchemsizeZ);
|
|
}
|
|
|
|
@EventHandler
|
|
public void handleEntityExplode(EntityExplodeEvent event) {
|
|
if(FightSystem.getFightState() != FightState.PRE_RUNNING && FightSystem.getFightState() != FightState.RUNNING) return;
|
|
Entity entity = event.getEntity();
|
|
|
|
//Team Blue
|
|
if(Region.isInRange(entity.getLocation(), Config.TeamBlueCornerX, Config.TeamBlueCornerY, Config.TeamBlueCornerZ, Config.SchemsizeX, Config.SchemsizeY, Config.SchemsizeZ, Config.BorderFromSchematic)){
|
|
blueDestroyedBlocks = blueDestroyedBlocks + event.blockList().size();
|
|
double doubleBlueDestroyedBlocks = blueDestroyedBlocks;
|
|
double destroyPercent = doubleBlueDestroyedBlocks * 100 / schematicSize;
|
|
bluePercent = destroyPercent;
|
|
if(destroyPercent >= Config.PercentWin) {
|
|
FightSystem.setSpectateState(Fight.redTeam);
|
|
}
|
|
//Team Red
|
|
}else if(Region.isInRange(entity.getLocation(), Config.TeamRedCornerX, Config.TeamRedCornerY, Config.TeamRedCornerZ, Config.SchemsizeX, Config.SchemsizeY, Config.SchemsizeZ, Config.BorderFromSchematic)) {
|
|
redDestroyedBlocks = redDestroyedBlocks + event.blockList().size();
|
|
double doubleRedDestroyedBlocks = redDestroyedBlocks;
|
|
double destroyPercent = doubleRedDestroyedBlocks * 100 / schematicSize;
|
|
redPercent = destroyPercent;
|
|
if(destroyPercent >= Config.PercentWin) {
|
|
FightSystem.setSpectateState(Fight.blueTeam);
|
|
}
|
|
}
|
|
}
|
|
|
|
public static double getBluePercent() {
|
|
return bluePercent;
|
|
}
|
|
|
|
public static double getRedPercent() {
|
|
return redPercent;
|
|
}
|
|
}
|