package me.yaruma.fightsystem.winconditions; import me.yaruma.fightsystem.FightSystem; import me.yaruma.fightsystem.fight.Fight; import me.yaruma.fightsystem.manager.FileManager; import me.yaruma.fightsystem.utils.Region; import me.yaruma.fightsystem.utils.countdown.Countdown; import me.yaruma.fightsystem.utils.countdown.FinishSpectateOver; import org.bukkit.entity.Entity; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityExplodeEvent; public class WinconditionPercentSystem implements Listener { public static int team1DestroyedBlocks; public static int team2DestroyedBlocks; FightSystem instance = FightSystem.getPlugin(); FileManager fileManager = instance.getFileManager(); private static int schematicSize = Math.abs( FightSystem.getPlugin().getFileManager().getIntegerFromConfig("Arena.Schemsize.x") * FightSystem.getPlugin().getFileManager().getIntegerFromConfig("Arena.Schemsize.y") * FightSystem.getPlugin().getFileManager().getIntegerFromConfig("Arena.Schemsize.z")); @EventHandler public void handleEntityExplode(EntityExplodeEvent event) { if(!Methods.isEnabled("WinConditions.PercentWin")) return; Entity entity = event.getEntity(); //Team 1 / Rot if(Region.isInRegion(entity.getLocation(), instance.getTeam1cornerX(), instance.getTeam1cornerY(), instance.getTeam1cornerZ(), instance.getTeam1cornerX() + instance.getSchemsizeX(), instance.getTeam1cornerY() + instance.getSchemsizeY(), instance.getTeam1cornerZ() + instance.getSchemsizeZ(), fileManager.getIntegerFromConfig("Arena.BorderFromSchematic"))) { team1DestroyedBlocks = team1DestroyedBlocks + event.blockList().size(); double destroyPercent = team1DestroyedBlocks * 100 / schematicSize; if(destroyPercent >= fileManager.getIntegerFromConfig("WinConditionParams.PercentWin")) { instance.setSpectateState(Fight.blueTeam); Countdown countdown = new Countdown(fileManager.getIntegerFromConfig("Times.SpectatorDuration"), new FinishSpectateOver()); countdown.startTimer(instance); } return; } //Team 2 / Blau if(Region.isInRegion(entity.getLocation(), instance.getTeam2cornerX(), instance.getTeam1cornerY(), instance.getTeam2cornerZ(), instance.getTeam2cornerX() + instance.getSchemsizeX(), instance.getTeam2cornerY() + instance.getSchemsizeY(), instance.getTeam2cornerZ() + instance.getSchemsizeZ(), fileManager.getIntegerFromConfig("Arena.BorderFromSchematic"))) { team2DestroyedBlocks = team2DestroyedBlocks + event.blockList().size(); double destroyPercent = team2DestroyedBlocks * 100 / schematicSize; if(destroyPercent >= fileManager.getIntegerFromConfig("WinConditionParams.PercentWin")) { instance.setSpectateState(Fight.redTeam); Countdown countdown = new Countdown(fileManager.getIntegerFromConfig("Times.SpectatorDuration"), new FinishSpectateOver()); countdown.startTimer(instance); } return; } } }