forked from SteamWar/SteamWar
Format code
This commit is contained in:
+17
-17
@@ -8,24 +8,24 @@ EndTime: 200
|
||||
Barrier: true
|
||||
|
||||
Arena:
|
||||
MinX: 0
|
||||
MaxX: 0
|
||||
MinY: 0
|
||||
MinZ: 0
|
||||
MaxZ: 0
|
||||
MinX: 0
|
||||
MaxX: 0
|
||||
MinY: 0
|
||||
MinZ: 0
|
||||
MaxZ: 0
|
||||
|
||||
Red:
|
||||
PortalZ: -60
|
||||
SpawnX: 0
|
||||
SpawnY: 0
|
||||
SpawnZ: 0
|
||||
SpawnYaw: 0
|
||||
SpawnPitch: 0
|
||||
PortalZ: -60
|
||||
SpawnX: 0
|
||||
SpawnY: 0
|
||||
SpawnZ: 0
|
||||
SpawnYaw: 0
|
||||
SpawnPitch: 0
|
||||
|
||||
Blue:
|
||||
PortalZ: 60
|
||||
SpawnX: 0
|
||||
SpawnY: 0
|
||||
SpawnZ: 0
|
||||
SpawnYaw: 0
|
||||
SpawnPitch: 0
|
||||
PortalZ: 60
|
||||
SpawnX: 0
|
||||
SpawnY: 0
|
||||
SpawnZ: 0
|
||||
SpawnYaw: 0
|
||||
SpawnPitch: 0
|
||||
|
||||
@@ -110,14 +110,10 @@ public class Config {
|
||||
|
||||
String blueLeader = System.getProperty("blueLeader", null);
|
||||
String redLeader = System.getProperty("redLeader", null);
|
||||
if (blueLeader != null)
|
||||
BlueLeader = UUID.fromString(blueLeader);
|
||||
else
|
||||
BlueLeader = null;
|
||||
if (redLeader != null)
|
||||
RedLeader = UUID.fromString(redLeader);
|
||||
else
|
||||
RedLeader = null;
|
||||
if (blueLeader != null) BlueLeader = UUID.fromString(blueLeader);
|
||||
else BlueLeader = null;
|
||||
if (redLeader != null) RedLeader = UUID.fromString(redLeader);
|
||||
else RedLeader = null;
|
||||
|
||||
Barrier = config.getBoolean("Barrier", false);
|
||||
Space = config.getBoolean("Space", false);
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
package de.steamwar.misslewars;
|
||||
|
||||
public enum FightState {
|
||||
WAITING, // waiting for at least 2 players
|
||||
FIGHTING, // no one has won
|
||||
END // fight ended for some reason
|
||||
WAITING, // waiting for at least 2 players
|
||||
FIGHTING, // no one has won
|
||||
END // fight ended for some reason
|
||||
}
|
||||
|
||||
@@ -39,33 +39,33 @@ public class FightWorld {
|
||||
|
||||
private static final World world = Bukkit.getWorlds().get(0);
|
||||
|
||||
private static double posToChunk(int pos){
|
||||
private static double posToChunk(int pos) {
|
||||
return pos / 16.0;
|
||||
}
|
||||
|
||||
private static int getMinChunkX(){
|
||||
private static int getMinChunkX() {
|
||||
return (int) Math.floor(posToChunk(Config.ArenaMinX));
|
||||
}
|
||||
|
||||
private static int getMaxChunkX(){
|
||||
private static int getMaxChunkX() {
|
||||
return (int) Math.ceil(posToChunk(Config.ArenaMaxX));
|
||||
}
|
||||
|
||||
private static int getMinChunkZ(){
|
||||
private static int getMinChunkZ() {
|
||||
return (int) Math.floor(posToChunk(Config.ArenaMinZ));
|
||||
}
|
||||
|
||||
private static int getMaxChunkZ(){
|
||||
private static int getMaxChunkZ() {
|
||||
return (int) Math.ceil(posToChunk(Config.ArenaMaxZ));
|
||||
}
|
||||
|
||||
private static void forEachChunk(ObjIntConsumer<Integer> executor) {
|
||||
for(int x = getMinChunkX(); x <= getMaxChunkX(); x++)
|
||||
for(int z = getMinChunkZ(); z <= getMaxChunkZ(); z++)
|
||||
for (int x = getMinChunkX(); x <= getMaxChunkX(); x++)
|
||||
for (int z = getMinChunkZ(); z <= getMaxChunkZ(); z++)
|
||||
executor.accept(x, z);
|
||||
}
|
||||
|
||||
public static void resetWorld(){
|
||||
public static void resetWorld() {
|
||||
world.getEntities().stream().filter(entity -> entity.getType() != EntityType.PLAYER).forEach(Entity::remove);
|
||||
|
||||
World backup = new WorldCreator(world.getName() + "/backup").createWorld();
|
||||
@@ -84,7 +84,7 @@ public class FightWorld {
|
||||
worldChunk.heightmaps.clear();
|
||||
worldChunk.heightmaps.putAll(backupChunk.heightmaps);
|
||||
|
||||
for(Player p : Bukkit.getOnlinePlayers()) {
|
||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||
CraftbukkitWrapper.sendChunk(p, x, z);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,10 +64,11 @@ public class MWTeam {
|
||||
this.color = color;
|
||||
this.spawn = spawn;
|
||||
this.portalZ = portalZ;
|
||||
if (FightScoreboard.getScoreboard().getTeam(teamName) == null)
|
||||
if (FightScoreboard.getScoreboard().getTeam(teamName) == null) {
|
||||
sbteam = FightScoreboard.getScoreboard().registerNewTeam(teamName);
|
||||
else
|
||||
} else {
|
||||
sbteam = FightScoreboard.getScoreboard().getTeam(teamName);
|
||||
}
|
||||
assert sbteam != null;
|
||||
sbteam.setAllowFriendlyFire(false);
|
||||
sbteam.setColor(ChatColor.getByChar(color.charAt(1)));
|
||||
@@ -196,8 +197,9 @@ public class MWTeam {
|
||||
p.getInventory().clear();
|
||||
|
||||
p.setDisplayName("§7" + p.getName());
|
||||
if (players.isEmpty() && MissileWars.getFightState() == FightState.FIGHTING)
|
||||
if (players.isEmpty() && MissileWars.getFightState() == FightState.FIGHTING) {
|
||||
MissileWars.end(WinReasons.NO_ENEMY, enemy());
|
||||
}
|
||||
|
||||
sbteam.removePlayer(p);
|
||||
}
|
||||
@@ -223,9 +225,7 @@ public class MWTeam {
|
||||
}
|
||||
|
||||
private MWTeam enemy() {
|
||||
if (this == MissileWars.getRedTeam())
|
||||
return MissileWars.getBlueTeam();
|
||||
|
||||
if (this == MissileWars.getRedTeam()) return MissileWars.getBlueTeam();
|
||||
return MissileWars.getRedTeam();
|
||||
}
|
||||
|
||||
|
||||
@@ -37,24 +37,24 @@ import java.util.UUID;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class MissileWars extends JavaPlugin {
|
||||
private static MissileWars plugin;
|
||||
private static MWTeam redTeam; //red has South side -> spawns missles towards north
|
||||
private static MWTeam blueTeam;
|
||||
private static FightState fightState;
|
||||
private static MissileWars plugin;
|
||||
private static MWTeam redTeam; //red has South side -> spawns missles towards north
|
||||
private static MWTeam blueTeam;
|
||||
private static FightState fightState;
|
||||
|
||||
/**
|
||||
* create teams, ect
|
||||
*/
|
||||
@Override
|
||||
public void onLoad() {
|
||||
plugin = this;
|
||||
fightState = FightState.WAITING;
|
||||
}
|
||||
/**
|
||||
* create teams, ect
|
||||
*/
|
||||
@Override
|
||||
public void onLoad() {
|
||||
plugin = this;
|
||||
fightState = FightState.WAITING;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onEnable() {
|
||||
redTeam = new MWTeam(Config.TeamRedColor, Config.RedSpawn, Config.TeamRedName, Config.RedPortalZ);
|
||||
blueTeam = new MWTeam(Config.TeamBlueColor, Config.BlueSpawn, Config.TeamBlueName, Config.BluePortalZ);
|
||||
@Override
|
||||
public void onEnable() {
|
||||
redTeam = new MWTeam(Config.TeamRedColor, Config.RedSpawn, Config.TeamRedName, Config.RedPortalZ);
|
||||
blueTeam = new MWTeam(Config.TeamBlueColor, Config.BlueSpawn, Config.TeamBlueName, Config.BluePortalZ);
|
||||
|
||||
SpigotLinker spigotLinker = new SpigotLinker(this, null) {
|
||||
@Override
|
||||
@@ -71,128 +71,117 @@ public class MissileWars extends JavaPlugin {
|
||||
}
|
||||
|
||||
Missile.init();
|
||||
CustomItem.init();
|
||||
CustomItem.init();
|
||||
|
||||
StateDependent.setupState(fightState);
|
||||
StateDependent.setupState(fightState);
|
||||
|
||||
Bukkit.getScheduler().runTaskTimer(this, new FightInfoPacketSender(), 20, 20);
|
||||
Bukkit.getScheduler().runTaskTimer(this, new FightInfoPacketSender(), 20, 20);
|
||||
|
||||
Bukkit.getWorlds().forEach(world -> {
|
||||
world.setGameRule(GameRule.KEEP_INVENTORY, true);
|
||||
world.setGameRule(GameRule.MOB_GRIEFING, true);
|
||||
world.setGameRule(GameRule.DO_TILE_DROPS, false);
|
||||
});
|
||||
Bukkit.getWorlds().forEach(world -> {
|
||||
world.setGameRule(GameRule.KEEP_INVENTORY, true);
|
||||
world.setGameRule(GameRule.MOB_GRIEFING, true);
|
||||
world.setGameRule(GameRule.DO_TILE_DROPS, false);
|
||||
});
|
||||
|
||||
// TODO: Enable Item Dropping, and the own team can pick them up! Add config value for that?
|
||||
}
|
||||
// TODO: Enable Item Dropping, and the own team can pick them up! Add config value for that?
|
||||
}
|
||||
|
||||
public static void waiting() {
|
||||
if (fightState == FightState.END) {
|
||||
fightState = FightState.WAITING;
|
||||
StateDependent.setupState(fightState);
|
||||
public static void waiting() {
|
||||
if (fightState == FightState.END) {
|
||||
fightState = FightState.WAITING;
|
||||
StateDependent.setupState(fightState);
|
||||
|
||||
SlowMoRunner.resetSlowMoTime();
|
||||
SlowMoRunner.resetSlowMoTime();
|
||||
|
||||
Set<UUID> uuidList = Bukkit.getOnlinePlayers().stream().map(Entity::getUniqueId).collect(Collectors.toSet());
|
||||
if (!uuidList.contains(Config.RedLeader) || !uuidList.contains(Config.BlueLeader)) {
|
||||
Config.RedLeader = null;
|
||||
Config.BlueLeader = null;
|
||||
}
|
||||
Set<UUID> uuidList = Bukkit.getOnlinePlayers().stream().map(Entity::getUniqueId).collect(Collectors.toSet());
|
||||
if (!uuidList.contains(Config.RedLeader) || !uuidList.contains(Config.BlueLeader)) {
|
||||
Config.RedLeader = null;
|
||||
Config.BlueLeader = null;
|
||||
}
|
||||
|
||||
redTeam.reset();
|
||||
blueTeam.reset();
|
||||
}
|
||||
}
|
||||
redTeam.reset();
|
||||
blueTeam.reset();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* call to change fightstate from WAITING to INGAME
|
||||
*/
|
||||
static void startRound() {
|
||||
if (fightState != FightState.WAITING) // anti dual-call
|
||||
return;
|
||||
fightState = FightState.FIGHTING;
|
||||
StateDependent.setupState(fightState);
|
||||
}
|
||||
/**
|
||||
* call to change fightstate from WAITING to INGAME
|
||||
*/
|
||||
static void startRound() {
|
||||
if (fightState != FightState.WAITING) // anti dual-call
|
||||
return;
|
||||
fightState = FightState.FIGHTING;
|
||||
StateDependent.setupState(fightState);
|
||||
}
|
||||
|
||||
/**
|
||||
* Fight beenden
|
||||
* @param reason Grund fürs ende
|
||||
* @param winner Gewinner (oder null)
|
||||
*/
|
||||
public static void end(WinReasons reason, MWTeam winner) {
|
||||
if (fightState == FightState.END) //verhindern dass es mehrfach gecallt wird
|
||||
return;
|
||||
fightState = FightState.END;
|
||||
StateDependent.setupState(fightState);
|
||||
/**
|
||||
* Fight beenden
|
||||
*
|
||||
* @param reason Grund fürs ende
|
||||
* @param winner Gewinner (oder null)
|
||||
*/
|
||||
public static void end(WinReasons reason, MWTeam winner) {
|
||||
if (fightState == FightState.END) //verhindern dass es mehrfach gecallt wird
|
||||
return;
|
||||
fightState = FightState.END;
|
||||
StateDependent.setupState(fightState);
|
||||
|
||||
for(Player player : Bukkit.getOnlinePlayers()) {
|
||||
player.playSound(player.getLocation(), Sound.ENTITY_ENDER_DRAGON_DEATH, 100f, 1f);
|
||||
player.setGameMode(GameMode.SPECTATOR);
|
||||
}
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
player.playSound(player.getLocation(), Sound.ENTITY_ENDER_DRAGON_DEATH, 100f, 1f);
|
||||
player.setGameMode(GameMode.SPECTATOR);
|
||||
}
|
||||
|
||||
byte ergebnis = winner == blueTeam ? (byte) 1 : (byte) 2;
|
||||
if (Config.isEvent()) {
|
||||
Config.EventKampf.setErgebnis(ergebnis);
|
||||
}
|
||||
if (Config.isEvent() || Config.isChallenge()) {
|
||||
FightEndsPacket packet = FightEndsPacket.builder()
|
||||
.gameMode("MissileWars")
|
||||
.duration((int)((System.currentTimeMillis() - FightScoreboard.getStartTime()) / 1000))
|
||||
.win(ergebnis)
|
||||
.bluePlayers(blueTeam.getPlayers().stream().map(Player::getUniqueId).map(SteamwarUser::get).map(SteamwarUser::getId).collect(Collectors.toList()))
|
||||
.redPlayers(redTeam.getPlayers().stream().map(Player::getUniqueId).map(SteamwarUser::get).map(SteamwarUser::getId).collect(Collectors.toList()))
|
||||
.blueSchem(-1)
|
||||
.redSchem(-1)
|
||||
.build();
|
||||
NetworkSender.send(packet);
|
||||
}
|
||||
byte ergebnis = winner == blueTeam ? (byte) 1 : (byte) 2;
|
||||
if (Config.isEvent()) {
|
||||
Config.EventKampf.setErgebnis(ergebnis);
|
||||
}
|
||||
if (Config.isEvent() || Config.isChallenge()) {
|
||||
FightEndsPacket packet = FightEndsPacket.builder().gameMode("MissileWars").duration((int) ((System.currentTimeMillis() - FightScoreboard.getStartTime()) / 1000)).win(ergebnis).bluePlayers(blueTeam.getPlayers().stream().map(Player::getUniqueId).map(SteamwarUser::get).map(SteamwarUser::getId).collect(Collectors.toList())).redPlayers(redTeam.getPlayers().stream().map(Player::getUniqueId).map(SteamwarUser::get).map(SteamwarUser::getId).collect(Collectors.toList())).blueSchem(-1).redSchem(-1).build();
|
||||
NetworkSender.send(packet);
|
||||
}
|
||||
|
||||
switch (reason) {
|
||||
case PORTAL_DESTROYED:
|
||||
Bukkit.getServer().broadcastMessage(winner.getColoredName() + ChatColor.RESET + " §7hat das gegnerische Portal zerstört");
|
||||
break;
|
||||
case NO_ENEMY:
|
||||
default:
|
||||
Bukkit.getServer().broadcastMessage("§7Team " + winner.getColoredName() + ChatColor.RESET + " §7hat aufgrund fehlenden Gegners gewonnen");
|
||||
break;
|
||||
}
|
||||
}
|
||||
switch (reason) {
|
||||
case PORTAL_DESTROYED:
|
||||
Bukkit.getServer().broadcastMessage(winner.getColoredName() + ChatColor.RESET + " §7hat das gegnerische Portal zerstört");
|
||||
break;
|
||||
case NO_ENEMY:
|
||||
default:
|
||||
Bukkit.getServer().broadcastMessage("§7Team " + winner.getColoredName() + ChatColor.RESET + " §7hat aufgrund fehlenden Gegners gewonnen");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public static MissileWars getPlugin() {
|
||||
return plugin;
|
||||
}
|
||||
public static MissileWars getPlugin() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
public static FightState getFightState() {
|
||||
return fightState;
|
||||
}
|
||||
public static FightState getFightState() {
|
||||
return fightState;
|
||||
}
|
||||
|
||||
public static MWTeam getRedTeam() {
|
||||
return redTeam;
|
||||
}
|
||||
public static MWTeam getRedTeam() {
|
||||
return redTeam;
|
||||
}
|
||||
|
||||
public static MWTeam getBlueTeam() {
|
||||
return blueTeam;
|
||||
}
|
||||
public static MWTeam getBlueTeam() {
|
||||
return blueTeam;
|
||||
}
|
||||
|
||||
public static MWTeam getTeam(Player p) {
|
||||
if(blueTeam.hasPlayer(p))
|
||||
return blueTeam;
|
||||
if(redTeam.hasPlayer(p))
|
||||
return redTeam;
|
||||
return null;
|
||||
}
|
||||
public static MWTeam getTeam(Player p) {
|
||||
if (blueTeam.hasPlayer(p)) return blueTeam;
|
||||
if (redTeam.hasPlayer(p)) return redTeam;
|
||||
return null;
|
||||
}
|
||||
|
||||
public static MWTeam getInvitation(Player p) {
|
||||
if(blueTeam.hasInvite(p))
|
||||
return blueTeam;
|
||||
if(redTeam.hasInvite(p))
|
||||
return redTeam;
|
||||
return null;
|
||||
}
|
||||
public static MWTeam getInvitation(Player p) {
|
||||
if (blueTeam.hasInvite(p)) return blueTeam;
|
||||
if (redTeam.hasInvite(p)) return redTeam;
|
||||
return null;
|
||||
}
|
||||
|
||||
public static void leave(Player p) {
|
||||
MissileWars.getBlueTeam().leave(p);
|
||||
MissileWars.getRedTeam().leave(p);
|
||||
}
|
||||
public static void leave(Player p) {
|
||||
MissileWars.getBlueTeam().leave(p);
|
||||
MissileWars.getRedTeam().leave(p);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -30,54 +30,57 @@ import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
public class SpawnPlatformCreator {
|
||||
|
||||
private final Player player;
|
||||
private final Location spawn;
|
||||
private final BukkitTask task;
|
||||
private final Player player;
|
||||
private final Location spawn;
|
||||
private final BukkitTask task;
|
||||
|
||||
private Block currentBlock;
|
||||
private int ticks;
|
||||
private Block currentBlock;
|
||||
private int ticks;
|
||||
|
||||
public SpawnPlatformCreator(Player player){
|
||||
this.player = player;
|
||||
MWTeam team = MissileWars.getTeam(player);
|
||||
if(team == null)
|
||||
this.spawn = Config.BlueSpawn;
|
||||
else
|
||||
this.spawn = team.getSpawn();
|
||||
ticks = Config.PlatformTime;
|
||||
currentBlock = null;
|
||||
task = Bukkit.getScheduler().runTaskTimer(MissileWars.getPlugin(), this::createPlatform, 0, 1);
|
||||
}
|
||||
public SpawnPlatformCreator(Player player) {
|
||||
this.player = player;
|
||||
MWTeam team = MissileWars.getTeam(player);
|
||||
if (team == null) {
|
||||
this.spawn = Config.BlueSpawn;
|
||||
} else {
|
||||
this.spawn = team.getSpawn();
|
||||
}
|
||||
ticks = Config.PlatformTime;
|
||||
currentBlock = null;
|
||||
task = Bukkit.getScheduler().runTaskTimer(MissileWars.getPlugin(), this::createPlatform, 0, 1);
|
||||
}
|
||||
|
||||
private void createPlatform(){
|
||||
Location playerLoc = player.getLocation();
|
||||
playerLoc.setY(spawn.getY() - 1);
|
||||
private void createPlatform() {
|
||||
Location playerLoc = player.getLocation();
|
||||
playerLoc.setY(spawn.getY() - 1);
|
||||
|
||||
if(currentBlock == null || !currentBlock.getLocation().equals(playerLoc)){
|
||||
if(currentBlock != null){
|
||||
if(currentBlock.getType() == Material.OBSIDIAN)
|
||||
currentBlock.setType(Material.AIR);
|
||||
currentBlock = null;
|
||||
}
|
||||
if (currentBlock == null || !currentBlock.getLocation().equals(playerLoc)) {
|
||||
if (currentBlock != null) {
|
||||
if (currentBlock.getType() == Material.OBSIDIAN)
|
||||
currentBlock.setType(Material.AIR);
|
||||
currentBlock = null;
|
||||
}
|
||||
|
||||
Block newBlock = playerLoc.getBlock();
|
||||
if(newBlock.getType() == Material.AIR){
|
||||
newBlock.setType(Material.OBSIDIAN);
|
||||
currentBlock = newBlock;
|
||||
}
|
||||
}
|
||||
Block newBlock = playerLoc.getBlock();
|
||||
if (newBlock.getType() == Material.AIR) {
|
||||
newBlock.setType(Material.OBSIDIAN);
|
||||
currentBlock = newBlock;
|
||||
}
|
||||
}
|
||||
|
||||
if(currentBlock != null && player.getLocation().getY() - 1 < currentBlock.getY())
|
||||
player.teleport(playerLoc.add(0, 1, 0));
|
||||
if (currentBlock != null && player.getLocation().getY() - 1 < currentBlock.getY()) {
|
||||
player.teleport(playerLoc.add(0, 1, 0));
|
||||
}
|
||||
|
||||
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText("Spawnplattform§8: §c§l" + String.format("%.2f", ticks / 20f) + "§8s"));
|
||||
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText("Spawnplattform§8: §c§l" + String.format("%.2f", ticks / 20f) + "§8s"));
|
||||
|
||||
if(ticks == 0){
|
||||
if(currentBlock != null && currentBlock.getType() == Material.OBSIDIAN)
|
||||
currentBlock.setType(Material.AIR);
|
||||
if (ticks == 0) {
|
||||
if (currentBlock != null && currentBlock.getType() == Material.OBSIDIAN) {
|
||||
currentBlock.setType(Material.AIR);
|
||||
}
|
||||
|
||||
task.cancel();
|
||||
}
|
||||
ticks--;
|
||||
}
|
||||
task.cancel();
|
||||
}
|
||||
ticks--;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,32 +23,33 @@ import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public abstract class StateDependent {
|
||||
private static Set<StateDependent> listeners = new HashSet<>();
|
||||
private static Set<StateDependent> listeners = new HashSet<>();
|
||||
|
||||
private final Set<FightState> active;
|
||||
private boolean running;
|
||||
private final Set<FightState> active;
|
||||
private boolean running;
|
||||
|
||||
public StateDependent(final Set<FightState> active){
|
||||
this.active = active;
|
||||
running = false;
|
||||
listeners.add(this);
|
||||
}
|
||||
public StateDependent(final Set<FightState> active) {
|
||||
this.active = active;
|
||||
running = false;
|
||||
listeners.add(this);
|
||||
}
|
||||
|
||||
public abstract void enable();
|
||||
public abstract void disable();
|
||||
public abstract void enable();
|
||||
|
||||
static void setupState(FightState state){
|
||||
if (state == FightState.FIGHTING) {
|
||||
FightScoreboard.startTime();
|
||||
}
|
||||
for(StateDependent listener : listeners){
|
||||
if(listener.running && !listener.active.contains(state)){
|
||||
listener.disable();
|
||||
listener.running = false;
|
||||
}else if(!listener.running && listener.active.contains(state)){
|
||||
listener.enable();
|
||||
listener.running = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
public abstract void disable();
|
||||
|
||||
static void setupState(FightState state) {
|
||||
if (state == FightState.FIGHTING) {
|
||||
FightScoreboard.startTime();
|
||||
}
|
||||
for (StateDependent listener : listeners) {
|
||||
if (listener.running && !listener.active.contains(state)) {
|
||||
listener.disable();
|
||||
listener.running = false;
|
||||
} else if (!listener.running && listener.active.contains(state)) {
|
||||
listener.enable();
|
||||
listener.running = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,6 @@
|
||||
package de.steamwar.misslewars;
|
||||
|
||||
public enum WinReasons {
|
||||
NO_ENEMY,
|
||||
PORTAL_DESTROYED
|
||||
NO_ENEMY,
|
||||
PORTAL_DESTROYED
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ public class EndCountdown extends StateDependent {
|
||||
|
||||
private void stop() {
|
||||
//Staggered kick to prevent lobby overloading
|
||||
if(Bukkit.getOnlinePlayers().isEmpty()){
|
||||
if (Bukkit.getOnlinePlayers().isEmpty()) {
|
||||
Bukkit.shutdown();
|
||||
return;
|
||||
}
|
||||
@@ -62,7 +62,6 @@ public class EndCountdown extends StateDependent {
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
if (task != null && !task.isCancelled())
|
||||
task.cancel();
|
||||
if (task != null && !task.isCancelled()) task.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,41 +34,40 @@ import java.util.EnumSet;
|
||||
@Linked
|
||||
public class ItemCountdown extends StateDependent {
|
||||
|
||||
private BukkitTask task;
|
||||
private int lastTime = 0;
|
||||
private int currenTime = 0;
|
||||
private BukkitTask task;
|
||||
private int lastTime = 0;
|
||||
private int currenTime = 0;
|
||||
|
||||
public ItemCountdown() {
|
||||
super(EnumSet.of(FightState.FIGHTING));
|
||||
}
|
||||
public ItemCountdown() {
|
||||
super(EnumSet.of(FightState.FIGHTING));
|
||||
}
|
||||
|
||||
private void run() {
|
||||
currenTime++;
|
||||
private void run() {
|
||||
currenTime++;
|
||||
|
||||
int teamCount = Math.max(MissileWars.getBlueTeam().size(), MissileWars.getRedTeam().size());
|
||||
if (teamCount == 0) return;
|
||||
int timeDelay = Config.ItemTime / teamCount;
|
||||
int teamCount = Math.max(MissileWars.getBlueTeam().size(), MissileWars.getRedTeam().size());
|
||||
if (teamCount == 0) return;
|
||||
int timeDelay = Config.ItemTime / teamCount;
|
||||
|
||||
if (lastTime + timeDelay < currenTime) {
|
||||
lastTime = currenTime;
|
||||
if (lastTime + timeDelay < currenTime) {
|
||||
lastTime = currenTime;
|
||||
|
||||
ItemStack itemStack = SpecialItem.getRandomItem();
|
||||
MissileWars.getBlueTeam().givePlayerItem(itemStack);
|
||||
MissileWars.getRedTeam().givePlayerItem(itemStack);
|
||||
}
|
||||
ItemStack itemStack = SpecialItem.getRandomItem();
|
||||
MissileWars.getBlueTeam().givePlayerItem(itemStack);
|
||||
MissileWars.getRedTeam().givePlayerItem(itemStack);
|
||||
}
|
||||
|
||||
MissileWars.getBlueTeam().countdown(timeDelay, currenTime - lastTime);
|
||||
MissileWars.getRedTeam().countdown(timeDelay, currenTime - lastTime);
|
||||
}
|
||||
MissileWars.getBlueTeam().countdown(timeDelay, currenTime - lastTime);
|
||||
MissileWars.getRedTeam().countdown(timeDelay, currenTime - lastTime);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
task = Bukkit.getScheduler().runTaskTimer(MissileWars.getPlugin(), this::run, 0, 1);
|
||||
}
|
||||
@Override
|
||||
public void enable() {
|
||||
task = Bukkit.getScheduler().runTaskTimer(MissileWars.getPlugin(), this::run, 0, 1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
if(task != null && !task.isCancelled())
|
||||
task.cancel();
|
||||
}
|
||||
@Override
|
||||
public void disable() {
|
||||
if (task != null && !task.isCancelled()) task.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,23 +32,23 @@ import java.util.EnumSet;
|
||||
@Linked
|
||||
public class WaitingCountdown extends StateDependent {
|
||||
|
||||
private BukkitTask task;
|
||||
private BukkitTask task;
|
||||
|
||||
public WaitingCountdown() {
|
||||
super(EnumSet.of(FightState.WAITING));
|
||||
}
|
||||
public WaitingCountdown() {
|
||||
super(EnumSet.of(FightState.WAITING));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
task = Bukkit.getScheduler().runTaskLater(MissileWars.getPlugin(), () -> {
|
||||
if(Bukkit.getOnlinePlayers().isEmpty())
|
||||
Bukkit.shutdown();
|
||||
}, Config.WaitingTime);
|
||||
}
|
||||
@Override
|
||||
public void enable() {
|
||||
task = Bukkit.getScheduler().runTaskLater(MissileWars.getPlugin(), () -> {
|
||||
if (Bukkit.getOnlinePlayers().isEmpty()) {
|
||||
Bukkit.shutdown();
|
||||
}
|
||||
}, Config.WaitingTime);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable() {
|
||||
if(task != null && !task.isCancelled())
|
||||
task.cancel();
|
||||
}
|
||||
@Override
|
||||
public void disable() {
|
||||
if (task != null && !task.isCancelled()) task.cancel();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,7 +64,9 @@ public class CustomItem extends SpecialItem {
|
||||
|
||||
public static void init() {
|
||||
File itemsFolder = new File(MissileWars.getPlugin().getDataFolder(), "items");
|
||||
if (!itemsFolder.exists() || !itemsFolder.canRead() || !itemsFolder.isDirectory()) throw new SecurityException("Items could not be loaded");
|
||||
if (!itemsFolder.exists() || !itemsFolder.canRead() || !itemsFolder.isDirectory()) {
|
||||
throw new SecurityException("Items could not be loaded");
|
||||
}
|
||||
for (File itemFile : Objects.requireNonNull(itemsFolder.listFiles())) {
|
||||
if (!itemFile.canRead() || !itemFile.isFile()) continue;
|
||||
try {
|
||||
|
||||
@@ -48,88 +48,90 @@ import java.util.Objects;
|
||||
|
||||
public class Missile extends SpecialItem {
|
||||
|
||||
private static final World world = new BukkitWorld(Bukkit.getWorlds().get(0));
|
||||
private static final World world = new BukkitWorld(Bukkit.getWorlds().get(0));
|
||||
|
||||
private final Clipboard clipboard;
|
||||
private final ItemStack item;
|
||||
private final Clipboard clipboard;
|
||||
private final ItemStack item;
|
||||
|
||||
private Missile(File missileFile) {
|
||||
String[] strings = missileFile.getName().split("\\.");
|
||||
String name = strings[0];
|
||||
String material = strings[1];
|
||||
if (!material.endsWith("_SPAWN_EGG")) material += "_SPAWN_EGG";
|
||||
Material itemType = Material.valueOf(material);
|
||||
private Missile(File missileFile) {
|
||||
String[] strings = missileFile.getName().split("\\.");
|
||||
String name = strings[0];
|
||||
String material = strings[1];
|
||||
if (!material.endsWith("_SPAWN_EGG")) material += "_SPAWN_EGG";
|
||||
Material itemType = Material.valueOf(material);
|
||||
|
||||
ClipboardFormat format = ClipboardFormats.findByFile(missileFile);
|
||||
try {
|
||||
assert format != null;
|
||||
clipboard = format.getReader(new FileInputStream(missileFile)).read();
|
||||
} catch (IOException e) {
|
||||
throw new SecurityException("Corrupt missile");
|
||||
}
|
||||
ClipboardFormat format = ClipboardFormats.findByFile(missileFile);
|
||||
try {
|
||||
assert format != null;
|
||||
clipboard = format.getReader(new FileInputStream(missileFile)).read();
|
||||
} catch (IOException e) {
|
||||
throw new SecurityException("Corrupt missile");
|
||||
}
|
||||
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore(lore, strings, 2, "§7Speed");
|
||||
lore(lore, strings, 3, "§7Size");
|
||||
List<String> lore = new ArrayList<>();
|
||||
lore(lore, strings, 2, "§7Speed");
|
||||
lore(lore, strings, 3, "§7Size");
|
||||
|
||||
EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1);
|
||||
BlockTypeMask blockTypeMask = new BlockTypeMask(clipboard, BlockTypes.TNT);
|
||||
lore.add("§7TNT §8: §e" + e.countBlocks(clipboard.getRegion(), blockTypeMask));
|
||||
EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1);
|
||||
BlockTypeMask blockTypeMask = new BlockTypeMask(clipboard, BlockTypes.TNT);
|
||||
lore.add("§7TNT §8: §e" + e.countBlocks(clipboard.getRegion(), blockTypeMask));
|
||||
|
||||
item = createItem(itemType, "§c" + name, 1, lore);
|
||||
}
|
||||
item = createItem(itemType, "§c" + name, 1, lore);
|
||||
}
|
||||
|
||||
private void lore(List<String> lore, String[] args, int index, String tag) {
|
||||
if (args.length > index) {
|
||||
lore.add(tag + " §8: §e" + Integer.parseInt(args[index]) + "§8/§77");
|
||||
} else {
|
||||
lore.add(tag + " §8: §e0§8/§77");
|
||||
}
|
||||
}
|
||||
private void lore(List<String> lore, String[] args, int index, String tag) {
|
||||
if (args.length > index) {
|
||||
lore.add(tag + " §8: §e" + Integer.parseInt(args[index]) + "§8/§77");
|
||||
} else {
|
||||
lore.add(tag + " §8: §e0§8/§77");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getItem() {
|
||||
return item;
|
||||
}
|
||||
@Override
|
||||
public ItemStack getItem() {
|
||||
return item;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean handleUse(Player p) {
|
||||
BlockVector3 dimensions = clipboard.getDimensions();
|
||||
Location location = p.getLocation();
|
||||
BlockVector3 v = BlockVector3.ZERO;
|
||||
BlockVector3 offset = clipboard.getRegion().getMinimumPoint().subtract(clipboard.getOrigin());
|
||||
AffineTransform aT = new AffineTransform();
|
||||
@Override
|
||||
public boolean handleUse(Player p) {
|
||||
BlockVector3 dimensions = clipboard.getDimensions();
|
||||
Location location = p.getLocation();
|
||||
BlockVector3 v = BlockVector3.ZERO;
|
||||
BlockVector3 offset = clipboard.getRegion().getMinimumPoint().subtract(clipboard.getOrigin());
|
||||
AffineTransform aT = new AffineTransform();
|
||||
|
||||
double yaw = (p.getLocation().getYaw() + 360f) % 360;
|
||||
if (yaw > 45 && yaw <= 135) aT = aT.rotateY(270);
|
||||
else if (yaw > 135 && yaw <= 225) aT = aT.rotateY(180);
|
||||
else if (yaw > 225 && yaw <= 315) aT = aT.rotateY(90);
|
||||
double yaw = (p.getLocation().getYaw() + 360f) % 360;
|
||||
if (yaw > 45 && yaw <= 135) aT = aT.rotateY(270);
|
||||
else if (yaw > 135 && yaw <= 225) aT = aT.rotateY(180);
|
||||
else if (yaw > 225 && yaw <= 315) aT = aT.rotateY(90);
|
||||
|
||||
v = v.subtract(dimensions.x()/2, dimensions.y() + 2, -2).subtract(offset);
|
||||
v = aT.apply(v.toVector3()).toBlockPoint();
|
||||
v = v.add(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
||||
v = v.subtract(dimensions.x() / 2, dimensions.y() + 2, -2).subtract(offset);
|
||||
v = aT.apply(v.toVector3()).toBlockPoint();
|
||||
v = v.add(location.getBlockX(), location.getBlockY(), location.getBlockZ());
|
||||
|
||||
EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1);
|
||||
ClipboardHolder ch = new ClipboardHolder(clipboard);
|
||||
ch.setTransform(aT);
|
||||
Operations.completeBlindly(ch.createPaste(e).to(v).ignoreAirBlocks(true).build());
|
||||
e.flushSession();
|
||||
return true;
|
||||
}
|
||||
EditSession e = WorldEdit.getInstance().getEditSessionFactory().getEditSession(world, -1);
|
||||
ClipboardHolder ch = new ClipboardHolder(clipboard);
|
||||
ch.setTransform(aT);
|
||||
Operations.completeBlindly(ch.createPaste(e).to(v).ignoreAirBlocks(true).build());
|
||||
e.flushSession();
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMissile() {
|
||||
return true;
|
||||
}
|
||||
@Override
|
||||
public boolean isMissile() {
|
||||
return true;
|
||||
}
|
||||
|
||||
public static void init() {
|
||||
File missileFolder = new File(MissileWars.getPlugin().getDataFolder(), "missiles");
|
||||
if (!missileFolder.exists() || !missileFolder.canRead() || !missileFolder.isDirectory()) throw new SecurityException("Missiles could not be loaded");
|
||||
for (File missileFile : Objects.requireNonNull(missileFolder.listFiles())) {
|
||||
if (!missileFile.canRead() || !missileFile.isFile()) continue;
|
||||
if (!missileFile.getName().endsWith(".schem")) continue;
|
||||
new Missile(missileFile);
|
||||
}
|
||||
}
|
||||
public static void init() {
|
||||
File missileFolder = new File(MissileWars.getPlugin().getDataFolder(), "missiles");
|
||||
if (!missileFolder.exists() || !missileFolder.canRead() || !missileFolder.isDirectory()) {
|
||||
throw new SecurityException("Missiles could not be loaded");
|
||||
}
|
||||
for (File missileFile : Objects.requireNonNull(missileFolder.listFiles())) {
|
||||
if (!missileFile.canRead() || !missileFile.isFile()) continue;
|
||||
if (!missileFile.getName().endsWith(".schem")) continue;
|
||||
new Missile(missileFile);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -39,94 +39,103 @@ import java.util.Random;
|
||||
|
||||
public abstract class SpecialItem {
|
||||
|
||||
private static final Random random = new Random();
|
||||
private static double count = 0;
|
||||
private static int consecutiveSupportItems = 0;
|
||||
private static final Random random = new Random();
|
||||
private static double count = 0;
|
||||
private static int consecutiveSupportItems = 0;
|
||||
|
||||
private static List<SpecialItem> supportItems = new ArrayList<>();
|
||||
private static List<SpecialItem> missileItems = new ArrayList<>();
|
||||
private static List<SpecialItem> supportItems = new ArrayList<>();
|
||||
private static List<SpecialItem> missileItems = new ArrayList<>();
|
||||
|
||||
SpecialItem() {
|
||||
if (this.isMissile()) missileItems.add(this);
|
||||
else supportItems.add(this);
|
||||
}
|
||||
SpecialItem() {
|
||||
if (this.isMissile()) missileItems.add(this);
|
||||
else supportItems.add(this);
|
||||
}
|
||||
|
||||
private String materialName = null;
|
||||
public abstract ItemStack getItem();
|
||||
public abstract boolean handleUse(Player p);
|
||||
public void handleThrow(Entity e) {}
|
||||
public void handleHit(Entity e, Location l) {}
|
||||
public boolean isMissile() {
|
||||
return false;
|
||||
}
|
||||
private String materialName = null;
|
||||
|
||||
public ItemStack createItem(Material material, String name, int amount, List<String> lore) {
|
||||
ItemStack item = new ItemStack(material, amount);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
assert meta != null;
|
||||
meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
|
||||
meta.setLore(lore);
|
||||
meta.setDisplayName(name);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
public abstract ItemStack getItem();
|
||||
|
||||
public static boolean handleUse(ItemStack item, Player player) {
|
||||
if (player.hasPotionEffect(PotionEffectType.LEVITATION)) {
|
||||
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText("§cDu kannst dieses Item derzeit nicht nutzen!"));
|
||||
return false;
|
||||
}
|
||||
return handleUse(item, player, missileItems) || handleUse(item, player, supportItems);
|
||||
}
|
||||
public abstract boolean handleUse(Player p);
|
||||
|
||||
private static boolean handleUse(ItemStack item, Player player, List<SpecialItem> items) {
|
||||
for (SpecialItem specialItem : items)
|
||||
if (item.isSimilar(specialItem.getItem())) return specialItem.handleUse(player);
|
||||
return false;
|
||||
}
|
||||
public void handleThrow(Entity e) {
|
||||
}
|
||||
|
||||
public static void handleThrow(ProjectileLaunchEvent e) {
|
||||
String name = e.getEntity().getClass().getName().toLowerCase();
|
||||
for (SpecialItem specialItem : supportItems) {
|
||||
if (specialItem.materialName == null)
|
||||
specialItem.materialName = specialItem.getItem().getType().name().toLowerCase();
|
||||
if (name.contains(specialItem.materialName))
|
||||
specialItem.handleThrow(e.getEntity());
|
||||
}
|
||||
}
|
||||
public void handleHit(Entity e, Location l) {
|
||||
}
|
||||
|
||||
public static void handleHit(ProjectileHitEvent e) {
|
||||
String name = e.getEntity().getClass().getName().toLowerCase();
|
||||
public boolean isMissile() {
|
||||
return false;
|
||||
}
|
||||
|
||||
Location location = null;
|
||||
if (e.getHitEntity() != null) location = e.getHitEntity().getLocation();
|
||||
else if (e.getHitBlock() != null) location = e.getHitBlock().getLocation();
|
||||
if (location == null) return;
|
||||
public ItemStack createItem(Material material, String name, int amount, List<String> lore) {
|
||||
ItemStack item = new ItemStack(material, amount);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
assert meta != null;
|
||||
meta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
|
||||
meta.setLore(lore);
|
||||
meta.setDisplayName(name);
|
||||
item.setItemMeta(meta);
|
||||
return item;
|
||||
}
|
||||
|
||||
for (SpecialItem specialItem : supportItems) {
|
||||
if (name.contains(((CustomItem) specialItem).getScriptedItem().getEntityName())) {
|
||||
specialItem.handleHit(e.getEntity(), location);
|
||||
}
|
||||
}
|
||||
}
|
||||
public static boolean handleUse(ItemStack item, Player player) {
|
||||
if (player.hasPotionEffect(PotionEffectType.LEVITATION)) {
|
||||
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText("§cDu kannst dieses Item derzeit nicht nutzen!"));
|
||||
return false;
|
||||
}
|
||||
return handleUse(item, player, missileItems) || handleUse(item, player, supportItems);
|
||||
}
|
||||
|
||||
public static ItemStack getRandomItem() {
|
||||
if (Config.MissileChance == 0) {
|
||||
return supportItems.get(random.nextInt(supportItems.size())).getItem();
|
||||
}
|
||||
if (Config.MissileChance == 1 || consecutiveSupportItems > 1) {
|
||||
consecutiveSupportItems = 0;
|
||||
return missileItems.get(random.nextInt(missileItems.size())).getItem();
|
||||
}
|
||||
private static boolean handleUse(ItemStack item, Player player, List<SpecialItem> items) {
|
||||
for (SpecialItem specialItem : items)
|
||||
if (item.isSimilar(specialItem.getItem())) return specialItem.handleUse(player);
|
||||
return false;
|
||||
}
|
||||
|
||||
double missileChance = Config.MissileChance + count * 0.1;
|
||||
if (random.nextDouble() > missileChance) {
|
||||
count += Config.MissileChance;
|
||||
consecutiveSupportItems++;
|
||||
return supportItems.get(random.nextInt(supportItems.size())).getItem();
|
||||
} else {
|
||||
count -= 1 - Config.MissileChance;
|
||||
return missileItems.get(random.nextInt(missileItems.size())).getItem();
|
||||
}
|
||||
}
|
||||
public static void handleThrow(ProjectileLaunchEvent e) {
|
||||
String name = e.getEntity().getClass().getName().toLowerCase();
|
||||
for (SpecialItem specialItem : supportItems) {
|
||||
if (specialItem.materialName == null) {
|
||||
specialItem.materialName = specialItem.getItem().getType().name().toLowerCase();
|
||||
}
|
||||
if (name.contains(specialItem.materialName)) {
|
||||
specialItem.handleThrow(e.getEntity());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void handleHit(ProjectileHitEvent e) {
|
||||
String name = e.getEntity().getClass().getName().toLowerCase();
|
||||
|
||||
Location location = null;
|
||||
if (e.getHitEntity() != null) location = e.getHitEntity().getLocation();
|
||||
else if (e.getHitBlock() != null) location = e.getHitBlock().getLocation();
|
||||
if (location == null) return;
|
||||
|
||||
for (SpecialItem specialItem : supportItems) {
|
||||
if (name.contains(((CustomItem) specialItem).getScriptedItem().getEntityName())) {
|
||||
specialItem.handleHit(e.getEntity(), location);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static ItemStack getRandomItem() {
|
||||
if (Config.MissileChance == 0) {
|
||||
return supportItems.get(random.nextInt(supportItems.size())).getItem();
|
||||
}
|
||||
if (Config.MissileChance == 1 || consecutiveSupportItems > 1) {
|
||||
consecutiveSupportItems = 0;
|
||||
return missileItems.get(random.nextInt(missileItems.size())).getItem();
|
||||
}
|
||||
|
||||
double missileChance = Config.MissileChance + count * 0.1;
|
||||
if (random.nextDouble() > missileChance) {
|
||||
count += Config.MissileChance;
|
||||
consecutiveSupportItems++;
|
||||
return supportItems.get(random.nextInt(supportItems.size())).getItem();
|
||||
} else {
|
||||
count -= 1 - Config.MissileChance;
|
||||
return missileItems.get(random.nextInt(missileItems.size())).getItem();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,47 +39,48 @@ import java.util.Objects;
|
||||
@Linked
|
||||
public class ArenaListener extends BasicListener {
|
||||
|
||||
public ArenaListener() {
|
||||
super(EnumSet.allOf(FightState.class));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onMove(PlayerMoveEvent e) {
|
||||
Location location = e.getTo();
|
||||
Player p = e.getPlayer();
|
||||
|
||||
assert location != null;
|
||||
if(location.getY() < Config.ArenaMinY){
|
||||
if(p.getGameMode() == GameMode.SPECTATOR)
|
||||
p.teleport(e.getFrom());
|
||||
else if(MissileWars.getFightState() == FightState.WAITING)
|
||||
p.teleport(Objects.requireNonNull(MissileWars.getTeam(p)).getSpawn());
|
||||
else
|
||||
p.damage(20.0f);
|
||||
}else if(
|
||||
location.getX() < Config.ArenaMinX ||
|
||||
location.getX() > Config.ArenaMaxX ||
|
||||
location.getZ() < Config.ArenaMinZ ||
|
||||
location.getZ() > Config.ArenaMaxZ){
|
||||
p.teleport(e.getFrom());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onArrowPickup(PlayerPickupArrowEvent e){
|
||||
e.setCancelled(true);
|
||||
}
|
||||
public ArenaListener() {
|
||||
super(EnumSet.allOf(FightState.class));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onHunger(FoodLevelChangeEvent e){
|
||||
e.setCancelled(true);
|
||||
}
|
||||
public void onMove(PlayerMoveEvent e) {
|
||||
Location location = e.getTo();
|
||||
Player p = e.getPlayer();
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onInventoryOpen(InventoryOpenEvent event) {
|
||||
if(event.getView().getType() != InventoryType.PLAYER &&
|
||||
event.getView().getType() != InventoryType.CRAFTING &&
|
||||
event.getView().getType() != InventoryType.CREATIVE)
|
||||
event.setCancelled(true);
|
||||
}
|
||||
assert location != null;
|
||||
if (location.getY() < Config.ArenaMinY) {
|
||||
if (p.getGameMode() == GameMode.SPECTATOR) {
|
||||
p.teleport(e.getFrom());
|
||||
} else if (MissileWars.getFightState() == FightState.WAITING) {
|
||||
p.teleport(Objects.requireNonNull(MissileWars.getTeam(p)).getSpawn());
|
||||
} else {
|
||||
p.damage(20.0f);
|
||||
}
|
||||
} else if (
|
||||
location.getX() < Config.ArenaMinX ||
|
||||
location.getX() > Config.ArenaMaxX ||
|
||||
location.getZ() < Config.ArenaMinZ ||
|
||||
location.getZ() > Config.ArenaMaxZ) {
|
||||
p.teleport(e.getFrom());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onArrowPickup(PlayerPickupArrowEvent e) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onHunger(FoodLevelChangeEvent e) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler(ignoreCancelled = true)
|
||||
public void onInventoryOpen(InventoryOpenEvent event) {
|
||||
if (event.getView().getType() != InventoryType.PLAYER &&
|
||||
event.getView().getType() != InventoryType.CRAFTING &&
|
||||
event.getView().getType() != InventoryType.CREATIVE)
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,17 +31,17 @@ import java.util.Set;
|
||||
public abstract class BasicListener extends StateDependent implements Listener {
|
||||
|
||||
|
||||
protected BasicListener(final Set<FightState> active){
|
||||
super(active);
|
||||
}
|
||||
protected BasicListener(final Set<FightState> active) {
|
||||
super(active);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable(){
|
||||
Bukkit.getPluginManager().registerEvents(this, MissileWars.getPlugin());
|
||||
}
|
||||
@Override
|
||||
public void enable() {
|
||||
Bukkit.getPluginManager().registerEvents(this, MissileWars.getPlugin());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disable(){
|
||||
HandlerList.unregisterAll(this);
|
||||
}
|
||||
@Override
|
||||
public void disable() {
|
||||
HandlerList.unregisterAll(this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,26 +33,26 @@ import java.util.EnumSet;
|
||||
@Linked
|
||||
public class ChatListener extends BasicListener {
|
||||
|
||||
public ChatListener() {
|
||||
super(EnumSet.allOf(FightState.class));
|
||||
}
|
||||
public ChatListener() {
|
||||
super(EnumSet.allOf(FightState.class));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onChat(AsyncPlayerChatEvent e) {
|
||||
e.setCancelled(true);
|
||||
@EventHandler
|
||||
public void onChat(AsyncPlayerChatEvent e) {
|
||||
e.setCancelled(true);
|
||||
|
||||
Player p = e.getPlayer();
|
||||
MWTeam team = MissileWars.getTeam(p);
|
||||
String message = e.getPlayer().getDisplayName() + "§8» §7" + e.getMessage();
|
||||
if (team == null) {
|
||||
Bukkit.broadcastMessage(message);
|
||||
} else {
|
||||
if (e.getMessage().startsWith("+")) {
|
||||
String teamMessage = "§8[" + team.getColorCode() + "TEAM§8] " + e.getPlayer().getDisplayName() + "§8» §7" + e.getMessage().substring(1);
|
||||
team.getPlayers().forEach(player -> player.sendMessage(teamMessage));
|
||||
} else {
|
||||
Bukkit.broadcastMessage(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
Player p = e.getPlayer();
|
||||
MWTeam team = MissileWars.getTeam(p);
|
||||
String message = e.getPlayer().getDisplayName() + "§8» §7" + e.getMessage();
|
||||
if (team == null) {
|
||||
Bukkit.broadcastMessage(message);
|
||||
} else {
|
||||
if (e.getMessage().startsWith("+")) {
|
||||
String teamMessage = "§8[" + team.getColorCode() + "TEAM§8] " + e.getPlayer().getDisplayName() + "§8» §7" + e.getMessage().substring(1);
|
||||
team.getPlayers().forEach(player -> player.sendMessage(teamMessage));
|
||||
} else {
|
||||
Bukkit.broadcastMessage(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,30 +34,30 @@ import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import java.util.EnumSet;
|
||||
|
||||
@Linked
|
||||
public class ConnectionListener extends BasicListener{
|
||||
public class ConnectionListener extends BasicListener {
|
||||
|
||||
public ConnectionListener(){
|
||||
super(EnumSet.allOf(FightState.class));
|
||||
}
|
||||
public ConnectionListener() {
|
||||
super(EnumSet.allOf(FightState.class));
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onJoin(PlayerJoinEvent e) {
|
||||
e.getPlayer().setDisplayName("§7" + e.getPlayer().getName());
|
||||
e.getPlayer().setGameMode(GameMode.SPECTATOR);
|
||||
e.getPlayer().teleport(MissileWars.getRedTeam().getSpawn().toVector().midpoint(MissileWars.getBlueTeam().getSpawn().toVector()).toLocation(e.getPlayer().getWorld()));
|
||||
if(Config.test()) {
|
||||
e.getPlayer().setOp(true);
|
||||
}
|
||||
}
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void onJoin(PlayerJoinEvent e) {
|
||||
e.getPlayer().setDisplayName("§7" + e.getPlayer().getName());
|
||||
e.getPlayer().setGameMode(GameMode.SPECTATOR);
|
||||
e.getPlayer().teleport(MissileWars.getRedTeam().getSpawn().toVector().midpoint(MissileWars.getBlueTeam().getSpawn().toVector()).toLocation(e.getPlayer().getWorld()));
|
||||
if (Config.test()) {
|
||||
e.getPlayer().setOp(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onLeave(PlayerQuitEvent e) {
|
||||
MWTeam.removeInvitations(e.getPlayer());
|
||||
MissileWars.leave(e.getPlayer());
|
||||
@EventHandler
|
||||
public void onLeave(PlayerQuitEvent e) {
|
||||
MWTeam.removeInvitations(e.getPlayer());
|
||||
MissileWars.leave(e.getPlayer());
|
||||
|
||||
if (Bukkit.getOnlinePlayers().isEmpty() || (Bukkit.getOnlinePlayers().contains(e.getPlayer()) && Bukkit.getOnlinePlayers().size() == 1)) {
|
||||
Bukkit.shutdown();
|
||||
}
|
||||
}
|
||||
if (Bukkit.getOnlinePlayers().isEmpty() || (Bukkit.getOnlinePlayers().contains(e.getPlayer()) && Bukkit.getOnlinePlayers().size() == 1)) {
|
||||
Bukkit.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -42,50 +42,49 @@ import java.util.Set;
|
||||
@Linked
|
||||
public class DeathListener extends BasicListener {
|
||||
|
||||
private static final Vector ZERO = new Vector(0, 0, 0);
|
||||
private final Set<Player> respawnedPlayers = new HashSet<>();
|
||||
private static final Vector ZERO = new Vector(0, 0, 0);
|
||||
private final Set<Player> respawnedPlayers = new HashSet<>();
|
||||
|
||||
public DeathListener() {
|
||||
super(EnumSet.allOf(FightState.class));
|
||||
}
|
||||
public DeathListener() {
|
||||
super(EnumSet.allOf(FightState.class));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDeath(PlayerDeathEvent e) {
|
||||
e.setDeathMessage(null);
|
||||
if(Bukkit.getOnlinePlayers().size() > 10) {
|
||||
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
|
||||
onlinePlayer.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(e.getEntity().getDisplayName() + " §cstarb"));
|
||||
}
|
||||
} else {
|
||||
Bukkit.broadcastMessage(e.getEntity().getDisplayName() + " §cstarb");
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onDeath(PlayerDeathEvent e) {
|
||||
e.setDeathMessage(null);
|
||||
if (Bukkit.getOnlinePlayers().size() > 10) {
|
||||
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
|
||||
onlinePlayer.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(e.getEntity().getDisplayName() + " §cstarb"));
|
||||
}
|
||||
} else {
|
||||
Bukkit.broadcastMessage(e.getEntity().getDisplayName() + " §cstarb");
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onRespawn(PlayerRespawnEvent e){
|
||||
Player p = e.getPlayer();
|
||||
p.setFireTicks(0);
|
||||
MWTeam team = MissileWars.getTeam(p);
|
||||
if(team == null)
|
||||
return;
|
||||
@EventHandler
|
||||
public void onRespawn(PlayerRespawnEvent e) {
|
||||
Player p = e.getPlayer();
|
||||
p.setFireTicks(0);
|
||||
MWTeam team = MissileWars.getTeam(p);
|
||||
if (team == null) return;
|
||||
|
||||
e.setRespawnLocation(team.getSpawn());
|
||||
e.getPlayer().setVelocity(ZERO);
|
||||
respawnedPlayers.add(p);
|
||||
}
|
||||
e.setRespawnLocation(team.getSpawn());
|
||||
e.getPlayer().setVelocity(ZERO);
|
||||
respawnedPlayers.add(p);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerMove(PlayerMoveEvent event) {
|
||||
if (respawnedPlayers.isEmpty()) return;
|
||||
Player player = event.getPlayer();
|
||||
if (!respawnedPlayers.contains(player)) return;
|
||||
respawnedPlayers.remove(player);
|
||||
new SpawnPlatformCreator(player);
|
||||
}
|
||||
@EventHandler
|
||||
public void onPlayerMove(PlayerMoveEvent event) {
|
||||
if (respawnedPlayers.isEmpty()) return;
|
||||
Player player = event.getPlayer();
|
||||
if (!respawnedPlayers.contains(player)) return;
|
||||
respawnedPlayers.remove(player);
|
||||
new SpawnPlatformCreator(player);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||
respawnedPlayers.remove(event.getPlayer());
|
||||
}
|
||||
@EventHandler
|
||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||
respawnedPlayers.remove(event.getPlayer());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -30,13 +30,13 @@ import java.util.EnumSet;
|
||||
@Linked
|
||||
public class EndListener extends BasicListener {
|
||||
|
||||
public EndListener(){
|
||||
super(EnumSet.of(FightState.END));
|
||||
}
|
||||
public EndListener() {
|
||||
super(EnumSet.of(FightState.END));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onJoin(PlayerJoinEvent e) {
|
||||
e.setJoinMessage(null);
|
||||
e.getPlayer().setGameMode(GameMode.SPECTATOR);
|
||||
}
|
||||
@EventHandler
|
||||
public void onJoin(PlayerJoinEvent e) {
|
||||
e.setJoinMessage(null);
|
||||
e.getPlayer().setGameMode(GameMode.SPECTATOR);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,19 +31,19 @@ import java.util.EnumSet;
|
||||
@Linked
|
||||
public class FightListener extends BasicListener {
|
||||
|
||||
public FightListener() {
|
||||
super(EnumSet.of(FightState.FIGHTING));
|
||||
}
|
||||
public FightListener() {
|
||||
super(EnumSet.of(FightState.FIGHTING));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDamage(EntityDamageByEntityEvent e){
|
||||
if(!(e.getDamager() instanceof Player && e.getEntity() instanceof Player))
|
||||
return;
|
||||
@EventHandler
|
||||
public void onDamage(EntityDamageByEntityEvent e) {
|
||||
if (!(e.getDamager() instanceof Player && e.getEntity() instanceof Player)) return;
|
||||
|
||||
Player damager = (Player)e.getDamager();
|
||||
Player reciever = (Player)e.getEntity();
|
||||
Player damager = (Player) e.getDamager();
|
||||
Player reciever = (Player) e.getEntity();
|
||||
|
||||
if(MissileWars.getTeam(damager) == MissileWars.getTeam(reciever))
|
||||
e.setCancelled(true);
|
||||
}
|
||||
if (MissileWars.getTeam(damager) == MissileWars.getTeam(reciever)) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,83 +43,80 @@ import java.util.Set;
|
||||
@Linked
|
||||
public class ItemListener extends BasicListener {
|
||||
|
||||
private Set<Integer> RED_ITEMS = new HashSet<>();
|
||||
private Set<Integer> BLUE_ITEMS = new HashSet<>();
|
||||
private Set<Integer> RED_ITEMS = new HashSet<>();
|
||||
private Set<Integer> BLUE_ITEMS = new HashSet<>();
|
||||
|
||||
public ItemListener() {
|
||||
super(EnumSet.of(FightState.FIGHTING));
|
||||
}
|
||||
public ItemListener() {
|
||||
super(EnumSet.of(FightState.FIGHTING));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void enable() {
|
||||
super.enable();
|
||||
RED_ITEMS.clear();
|
||||
BLUE_ITEMS.clear();
|
||||
}
|
||||
@Override
|
||||
public void enable() {
|
||||
super.enable();
|
||||
RED_ITEMS.clear();
|
||||
BLUE_ITEMS.clear();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onItemClick(PlayerInteractEvent e) {
|
||||
ItemStack item = e.getItem();
|
||||
if (item == null)
|
||||
return;
|
||||
if (e.getPlayer().hasCooldown(item.getType())) return;
|
||||
@EventHandler
|
||||
public void onItemClick(PlayerInteractEvent e) {
|
||||
ItemStack item = e.getItem();
|
||||
if (item == null) return;
|
||||
if (e.getPlayer().hasCooldown(item.getType())) return;
|
||||
if (e.getAction() != Action.RIGHT_CLICK_BLOCK && e.getAction() != Action.RIGHT_CLICK_AIR) return;
|
||||
|
||||
if (e.getAction() != Action.RIGHT_CLICK_BLOCK && e.getAction() != Action.RIGHT_CLICK_AIR)
|
||||
return;
|
||||
if (SpecialItem.handleUse(item, e.getPlayer()) && item.getType() != Material.SPLASH_POTION) {
|
||||
item.setAmount(item.getAmount() - 1);
|
||||
e.getPlayer().updateInventory();
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
if (SpecialItem.handleUse(item, e.getPlayer()) && item.getType() != Material.SPLASH_POTION) {
|
||||
item.setAmount(item.getAmount()-1);
|
||||
e.getPlayer().updateInventory();
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onThrow(ProjectileLaunchEvent e) {
|
||||
SpecialItem.handleThrow(e);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onThrow(ProjectileLaunchEvent e) {
|
||||
SpecialItem.handleThrow(e);
|
||||
}
|
||||
@EventHandler
|
||||
public void onHit(ProjectileHitEvent e) {
|
||||
SpecialItem.handleHit(e);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onHit(ProjectileHitEvent e) {
|
||||
SpecialItem.handleHit(e);
|
||||
}
|
||||
@EventHandler
|
||||
public void onItemDrop(PlayerDropItemEvent e) {
|
||||
MWTeam mwTeam = MissileWars.getTeam(e.getPlayer());
|
||||
if (mwTeam == null) {
|
||||
e.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
if (e.getItemDrop().getItemStack().isSimilar(MWTeam.bow)) {
|
||||
e.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
if (mwTeam == MissileWars.getRedTeam()) {
|
||||
RED_ITEMS.add(e.getItemDrop().getEntityId());
|
||||
} else {
|
||||
BLUE_ITEMS.add(e.getItemDrop().getEntityId());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onItemDrop(PlayerDropItemEvent e){
|
||||
MWTeam mwTeam = MissileWars.getTeam(e.getPlayer());
|
||||
if (mwTeam == null) {
|
||||
e.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
if (e.getItemDrop().getItemStack().isSimilar(MWTeam.bow)) {
|
||||
e.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
if (mwTeam == MissileWars.getRedTeam()) {
|
||||
RED_ITEMS.add(e.getItemDrop().getEntityId());
|
||||
} else {
|
||||
BLUE_ITEMS.add(e.getItemDrop().getEntityId());
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onEntityPickupItem(EntityPickupItemEvent e) {
|
||||
Player player = (Player) e.getEntity();
|
||||
MWTeam mwTeam = MissileWars.getTeam(player);
|
||||
if (mwTeam == null) {
|
||||
e.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
if (mwTeam == MissileWars.getRedTeam() && !RED_ITEMS.contains(e.getItem().getEntityId())) {
|
||||
e.setCancelled(true);
|
||||
} else if (mwTeam == MissileWars.getBlueTeam() && !BLUE_ITEMS.contains(e.getItem().getEntityId())) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEntityPickupItem(EntityPickupItemEvent e) {
|
||||
Player player = (Player) e.getEntity();
|
||||
MWTeam mwTeam = MissileWars.getTeam(player);
|
||||
if (mwTeam == null) {
|
||||
e.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
if (mwTeam == MissileWars.getRedTeam() && !RED_ITEMS.contains(e.getItem().getEntityId())) {
|
||||
e.setCancelled(true);
|
||||
} else if (mwTeam == MissileWars.getBlueTeam() && !BLUE_ITEMS.contains(e.getItem().getEntityId())) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onItemDespawn(ItemDespawnEvent event) {
|
||||
RED_ITEMS.remove(event.getEntity().getEntityId());
|
||||
BLUE_ITEMS.remove(event.getEntity().getEntityId());
|
||||
}
|
||||
@EventHandler
|
||||
public void onItemDespawn(ItemDespawnEvent event) {
|
||||
RED_ITEMS.remove(event.getEntity().getEntityId());
|
||||
BLUE_ITEMS.remove(event.getEntity().getEntityId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,70 +34,70 @@ import java.util.EnumSet;
|
||||
@Linked
|
||||
public class JoinListener extends BasicListener {
|
||||
|
||||
public JoinListener(){
|
||||
super(EnumSet.of(FightState.WAITING, FightState.FIGHTING));
|
||||
}
|
||||
public JoinListener() {
|
||||
super(EnumSet.of(FightState.WAITING, FightState.FIGHTING));
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onJoin(PlayerJoinEvent e){
|
||||
e.setJoinMessage("§a» " + e.getPlayer().getDisplayName());
|
||||
join(e.getPlayer());
|
||||
}
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public void onJoin(PlayerJoinEvent e) {
|
||||
e.setJoinMessage("§a» " + e.getPlayer().getDisplayName());
|
||||
join(e.getPlayer());
|
||||
}
|
||||
|
||||
public static void join(Player p) {
|
||||
if (Config.isEvent()) {
|
||||
joinEvent(p);
|
||||
return;
|
||||
}
|
||||
public static void join(Player p) {
|
||||
if (Config.isEvent()) {
|
||||
joinEvent(p);
|
||||
return;
|
||||
}
|
||||
|
||||
if (Config.isChallenge()) {
|
||||
joinChallenge(p);
|
||||
return;
|
||||
}
|
||||
if (Config.isChallenge()) {
|
||||
joinChallenge(p);
|
||||
return;
|
||||
}
|
||||
|
||||
joinNormal(p);
|
||||
}
|
||||
joinNormal(p);
|
||||
}
|
||||
|
||||
private static void joinEvent(Player p) {
|
||||
if (Config.EventTeamRedID == 0 && Config.EventTeamBlueID == 0) {
|
||||
joinNormal(p);
|
||||
return;
|
||||
}
|
||||
private static void joinEvent(Player p) {
|
||||
if (Config.EventTeamRedID == 0 && Config.EventTeamBlueID == 0) {
|
||||
joinNormal(p);
|
||||
return;
|
||||
}
|
||||
|
||||
int teamId = SteamwarUser.get(p.getUniqueId()).getTeam();
|
||||
if (teamId != Config.EventTeamRedID && teamId != Config.EventTeamBlueID) {
|
||||
teamId = 0;
|
||||
}
|
||||
if (teamId == Config.EventTeamRedID && MissileWars.getRedTeam().size() < Config.MaximumTeamMembers) {
|
||||
MissileWars.getRedTeam().join(p);
|
||||
} else if (teamId == Config.EventTeamBlueID && MissileWars.getBlueTeam().size() < Config.MaximumTeamMembers) {
|
||||
MissileWars.getBlueTeam().join(p);
|
||||
} else {
|
||||
p.teleport(MissileWars.getRedTeam().getSpawn().toVector().midpoint(MissileWars.getBlueTeam().getSpawn().toVector()).toLocation(p.getWorld()));
|
||||
}
|
||||
}
|
||||
int teamId = SteamwarUser.get(p.getUniqueId()).getTeam();
|
||||
if (teamId != Config.EventTeamRedID && teamId != Config.EventTeamBlueID) {
|
||||
teamId = 0;
|
||||
}
|
||||
if (teamId == Config.EventTeamRedID && MissileWars.getRedTeam().size() < Config.MaximumTeamMembers) {
|
||||
MissileWars.getRedTeam().join(p);
|
||||
} else if (teamId == Config.EventTeamBlueID && MissileWars.getBlueTeam().size() < Config.MaximumTeamMembers) {
|
||||
MissileWars.getBlueTeam().join(p);
|
||||
} else {
|
||||
p.teleport(MissileWars.getRedTeam().getSpawn().toVector().midpoint(MissileWars.getBlueTeam().getSpawn().toVector()).toLocation(p.getWorld()));
|
||||
}
|
||||
}
|
||||
|
||||
private static void joinChallenge(Player p) {
|
||||
if (Config.RedLeader.equals(p.getUniqueId())) {
|
||||
MissileWars.getRedTeam().join(p);
|
||||
} else if (Config.BlueLeader.equals(p.getUniqueId())) {
|
||||
MissileWars.getBlueTeam().join(p);
|
||||
} else {
|
||||
p.teleport(MissileWars.getRedTeam().getSpawn().toVector().midpoint(MissileWars.getBlueTeam().getSpawn().toVector()).toLocation(p.getWorld()));
|
||||
}
|
||||
}
|
||||
private static void joinChallenge(Player p) {
|
||||
if (Config.RedLeader.equals(p.getUniqueId())) {
|
||||
MissileWars.getRedTeam().join(p);
|
||||
} else if (Config.BlueLeader.equals(p.getUniqueId())) {
|
||||
MissileWars.getBlueTeam().join(p);
|
||||
} else {
|
||||
p.teleport(MissileWars.getRedTeam().getSpawn().toVector().midpoint(MissileWars.getBlueTeam().getSpawn().toVector()).toLocation(p.getWorld()));
|
||||
}
|
||||
}
|
||||
|
||||
private static void joinNormal(Player p) {
|
||||
if (MissileWars.getRedTeam().size() == MissileWars.getBlueTeam().size()) {
|
||||
if (Math.random() > 0.5) {
|
||||
MissileWars.getRedTeam().join(p);
|
||||
} else {
|
||||
MissileWars.getBlueTeam().join(p);
|
||||
}
|
||||
} else if (MissileWars.getRedTeam().size() < MissileWars.getBlueTeam().size()) {
|
||||
MissileWars.getRedTeam().join(p);
|
||||
} else {
|
||||
MissileWars.getBlueTeam().join(p);
|
||||
}
|
||||
}
|
||||
private static void joinNormal(Player p) {
|
||||
if (MissileWars.getRedTeam().size() == MissileWars.getBlueTeam().size()) {
|
||||
if (Math.random() > 0.5) {
|
||||
MissileWars.getRedTeam().join(p);
|
||||
} else {
|
||||
MissileWars.getBlueTeam().join(p);
|
||||
}
|
||||
} else if (MissileWars.getRedTeam().size() < MissileWars.getBlueTeam().size()) {
|
||||
MissileWars.getRedTeam().join(p);
|
||||
} else {
|
||||
MissileWars.getBlueTeam().join(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,30 +35,29 @@ import java.util.EnumSet;
|
||||
@Linked
|
||||
public class PortalDestructListener extends BasicListener {
|
||||
|
||||
public PortalDestructListener(){
|
||||
super(EnumSet.of(FightState.FIGHTING));
|
||||
}
|
||||
public PortalDestructListener() {
|
||||
super(EnumSet.of(FightState.FIGHTING));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onBlockupdate(BlockPhysicsEvent e) {
|
||||
if (e.getBlock().getType() != Material.NETHER_PORTAL)
|
||||
return;
|
||||
int z = e.getBlock().getZ();
|
||||
if (z == MissileWars.getRedTeam().getPortalZ())
|
||||
MissileWars.end(WinReasons.PORTAL_DESTROYED, MissileWars.getBlueTeam());
|
||||
if (z == MissileWars.getBlueTeam().getPortalZ())
|
||||
MissileWars.end(WinReasons.PORTAL_DESTROYED, MissileWars.getRedTeam());
|
||||
}
|
||||
@EventHandler
|
||||
public void onBlockupdate(BlockPhysicsEvent e) {
|
||||
if (e.getBlock().getType() != Material.NETHER_PORTAL) return;
|
||||
int z = e.getBlock().getZ();
|
||||
if (z == MissileWars.getRedTeam().getPortalZ()) {
|
||||
MissileWars.end(WinReasons.PORTAL_DESTROYED, MissileWars.getBlueTeam());
|
||||
}
|
||||
if (z == MissileWars.getBlueTeam().getPortalZ()) {
|
||||
MissileWars.end(WinReasons.PORTAL_DESTROYED, MissileWars.getRedTeam());
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onExplosion(EntityExplodeEvent e){
|
||||
if(e.getEntityType() != EntityType.FIREBALL)
|
||||
return;
|
||||
@EventHandler
|
||||
public void onExplosion(EntityExplodeEvent e) {
|
||||
if (e.getEntityType() != EntityType.FIREBALL) return;
|
||||
|
||||
double z = e.getLocation().getZ();
|
||||
double distRed = Math.abs(Config.RedPortalZ + 0.5 - z);
|
||||
double distBlue = Math.abs(Config.BluePortalZ + 0.5 - z);
|
||||
if(distRed < 2 || distBlue < 2)
|
||||
e.setCancelled(true);
|
||||
}
|
||||
double z = e.getLocation().getZ();
|
||||
double distRed = Math.abs(Config.RedPortalZ + 0.5 - z);
|
||||
double distBlue = Math.abs(Config.BluePortalZ + 0.5 - z);
|
||||
if (distRed < 2 || distBlue < 2) e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,20 +30,19 @@ import java.util.EnumSet;
|
||||
|
||||
@Linked
|
||||
public class WaitingListener extends BasicListener {
|
||||
public WaitingListener() {
|
||||
super(EnumSet.of(FightState.WAITING));
|
||||
}
|
||||
public WaitingListener() {
|
||||
super(EnumSet.of(FightState.WAITING));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDisconnect(PlayerQuitEvent e){
|
||||
if (Bukkit.getOnlinePlayers().isEmpty() || (Bukkit.getOnlinePlayers().contains(e.getPlayer()) && Bukkit.getOnlinePlayers().size() == 1)) {
|
||||
Bukkit.shutdown();
|
||||
}
|
||||
}
|
||||
@EventHandler
|
||||
public void onDisconnect(PlayerQuitEvent e) {
|
||||
if (Bukkit.getOnlinePlayers().isEmpty() || (Bukkit.getOnlinePlayers().contains(e.getPlayer()) && Bukkit.getOnlinePlayers().size() == 1)) {
|
||||
Bukkit.shutdown();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDamage(EntityDamageEvent e){
|
||||
if(e.getCause() != EntityDamageEvent.DamageCause.VOID)
|
||||
e.setCancelled(true);
|
||||
}
|
||||
@EventHandler
|
||||
public void onDamage(EntityDamageEvent e) {
|
||||
if (e.getCause() != EntityDamageEvent.DamageCause.VOID) e.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ public class CooldownScript implements RunnableScript {
|
||||
|
||||
public CooldownScript(JsonObject object) {
|
||||
JsonPrimitive primitive = object.getAsJsonPrimitive("cooldown");
|
||||
if(primitive.isNumber()) cooldown = primitive.getAsInt();
|
||||
if (primitive.isNumber()) cooldown = primitive.getAsInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -67,11 +67,9 @@ public class PasteScript implements RunnableScript {
|
||||
|
||||
centered = getBoolean(paste, "centered", false);
|
||||
ignoreAir = getBoolean(paste, "ignoreAir", false);
|
||||
if (paste.has("offset"))
|
||||
return;
|
||||
if (paste.has("offset")) return;
|
||||
JsonArray jsonArray = paste.getAsJsonArray("offset");
|
||||
if (jsonArray.size() == 3)
|
||||
return;
|
||||
if (jsonArray.size() == 3) return;
|
||||
xOffset = jsonArray.get(0).getAsInt();
|
||||
yOffset = jsonArray.get(1).getAsInt();
|
||||
zOffset = jsonArray.get(2).getAsInt();
|
||||
|
||||
@@ -26,7 +26,8 @@ import org.bukkit.entity.Player;
|
||||
|
||||
public class RemoveScript implements RunnableScript {
|
||||
|
||||
public RemoveScript(JsonObject jsonObject) {}
|
||||
public RemoveScript(JsonObject jsonObject) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean execute(RunnableScriptEvent runnableScriptEvent) {
|
||||
|
||||
@@ -37,7 +37,7 @@ public class SlowMoRunner {
|
||||
|
||||
static {
|
||||
Bukkit.getScheduler().runTaskTimer(MissileWars.getPlugin(), () -> {
|
||||
if(currentTime > 0) {
|
||||
if (currentTime > 0) {
|
||||
current += 1;
|
||||
if (current % 5 == 0) {
|
||||
SlowMoUtils.unfreeze();
|
||||
|
||||
@@ -2,16 +2,16 @@ name: MissileWars
|
||||
prefix: MW
|
||||
main: de.steamwar.misslewars.MissileWars
|
||||
authors:
|
||||
- Jan9103
|
||||
- Lixfel
|
||||
- YoyoNow
|
||||
- Jan9103
|
||||
- Lixfel
|
||||
- YoyoNow
|
||||
version: "1.0"
|
||||
api-version: "1.13"
|
||||
depend:
|
||||
- WorldEdit
|
||||
- SpigotCore
|
||||
- WorldEdit
|
||||
- SpigotCore
|
||||
commands:
|
||||
spectate:
|
||||
invite:
|
||||
accept:
|
||||
decline:
|
||||
spectate:
|
||||
invite:
|
||||
accept:
|
||||
decline:
|
||||
Reference in New Issue
Block a user