Changed way to join and leave. Also created the leave command.
This commit is contained in:
		@@ -1,10 +1,16 @@
 | 
				
			|||||||
package nl.Steffion.BlockHunt;
 | 
					package nl.Steffion.BlockHunt;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import nl.Steffion.BlockHunt.Arena.ArenaState;
 | 
				
			||||||
import nl.Steffion.BlockHunt.Managers.ConfigC;
 | 
					import nl.Steffion.BlockHunt.Managers.ConfigC;
 | 
				
			||||||
import nl.Steffion.BlockHunt.Managers.MessageM;
 | 
					import nl.Steffion.BlockHunt.Managers.MessageM;
 | 
				
			||||||
import nl.Steffion.BlockHunt.Managers.MessageM.CType;
 | 
					import nl.Steffion.BlockHunt.Managers.MessageM.CType;
 | 
				
			||||||
 | 
					import nl.Steffion.BlockHunt.Serializables.LocationSerializable;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.bukkit.Bukkit;
 | 
				
			||||||
 | 
					import org.bukkit.GameMode;
 | 
				
			||||||
 | 
					import org.bukkit.Material;
 | 
				
			||||||
import org.bukkit.entity.Player;
 | 
					import org.bukkit.entity.Player;
 | 
				
			||||||
 | 
					import org.bukkit.inventory.ItemStack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class ArenaHandler {
 | 
					public class ArenaHandler {
 | 
				
			||||||
	public static void loadArenas() {
 | 
						public static void loadArenas() {
 | 
				
			||||||
@@ -33,4 +39,134 @@ public class ArenaHandler {
 | 
				
			|||||||
					vars));
 | 
										vars));
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static void playerJoinArena(Player player, String arenaname) {
 | 
				
			||||||
 | 
							boolean found = false;
 | 
				
			||||||
 | 
							boolean alreadyJoined = false;
 | 
				
			||||||
 | 
							for (Arena arena : W.arenaList) {
 | 
				
			||||||
 | 
								if (arena.playersInArena != null) {
 | 
				
			||||||
 | 
									if (arena.playersInArena.contains(player)) {
 | 
				
			||||||
 | 
										alreadyJoined = true;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (!alreadyJoined) {
 | 
				
			||||||
 | 
								for (Arena arena : W.arenaList) {
 | 
				
			||||||
 | 
									if (arena.arenaName.equalsIgnoreCase(arenaname)) {
 | 
				
			||||||
 | 
										found = true;
 | 
				
			||||||
 | 
										if (arena.disguiseBlocks.isEmpty()) {
 | 
				
			||||||
 | 
											MessageM.sendFMessage(player,
 | 
				
			||||||
 | 
													ConfigC.error_joinNoBlocksSet, true);
 | 
				
			||||||
 | 
										} else {
 | 
				
			||||||
 | 
											LocationSerializable zero = new LocationSerializable(
 | 
				
			||||||
 | 
													Bukkit.getWorld("world"), 0, 0, 0, 0, 0);
 | 
				
			||||||
 | 
											if (!arena.lobbyWarp.equals(zero)
 | 
				
			||||||
 | 
													&& !arena.hidersWarp.equals(zero)
 | 
				
			||||||
 | 
													&& !arena.seekersWarp.equals(zero)) {
 | 
				
			||||||
 | 
												if (arena.gameState == ArenaState.WAITING
 | 
				
			||||||
 | 
														|| arena.gameState == ArenaState.STARTING) {
 | 
				
			||||||
 | 
													arena.playersInArena.add(player);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
													W.pLocation.put(player, player.getLocation());
 | 
				
			||||||
 | 
													W.pGameMode.put(player, player.getGameMode());
 | 
				
			||||||
 | 
													player.setGameMode(GameMode.ADVENTURE);
 | 
				
			||||||
 | 
													W.pInventory.put(player, player.getInventory()
 | 
				
			||||||
 | 
															.getContents());
 | 
				
			||||||
 | 
													player.getInventory().clear();
 | 
				
			||||||
 | 
													W.pArmor.put(player, player.getInventory()
 | 
				
			||||||
 | 
															.getArmorContents());
 | 
				
			||||||
 | 
													player.getInventory().setHelmet(
 | 
				
			||||||
 | 
															new ItemStack(Material.AIR));
 | 
				
			||||||
 | 
													player.getInventory().setChestplate(
 | 
				
			||||||
 | 
															new ItemStack(Material.AIR));
 | 
				
			||||||
 | 
													player.getInventory().setLeggings(
 | 
				
			||||||
 | 
															new ItemStack(Material.AIR));
 | 
				
			||||||
 | 
													player.getInventory().setBoots(
 | 
				
			||||||
 | 
															new ItemStack(Material.AIR));
 | 
				
			||||||
 | 
													W.pEXP.put(player, player.getExp());
 | 
				
			||||||
 | 
													player.setExp(0);
 | 
				
			||||||
 | 
													W.pHealth.put(player, player.getHealth());
 | 
				
			||||||
 | 
													player.setHealth(20);
 | 
				
			||||||
 | 
													W.pFood.put(player, player.getFoodLevel());
 | 
				
			||||||
 | 
													player.setFoodLevel(20);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
													player.teleport(arena.lobbyWarp);
 | 
				
			||||||
 | 
													ArenaHandler.sendFMessage(arena,
 | 
				
			||||||
 | 
															ConfigC.normal_joinJoinedArena, true,
 | 
				
			||||||
 | 
															"playername-" + player.getName(), "1-"
 | 
				
			||||||
 | 
																	+ arena.playersInArena.size(),
 | 
				
			||||||
 | 
															"2-" + arena.maxPlayers);
 | 
				
			||||||
 | 
													if (arena.playersInArena.size() < arena.minPlayers) {
 | 
				
			||||||
 | 
														ArenaHandler.sendFMessage(arena,
 | 
				
			||||||
 | 
																ConfigC.warning_lobbyNeedAtleast,
 | 
				
			||||||
 | 
																true, "1-" + arena.minPlayers);
 | 
				
			||||||
 | 
													}
 | 
				
			||||||
 | 
												} else {
 | 
				
			||||||
 | 
													MessageM.sendFMessage(player,
 | 
				
			||||||
 | 
															ConfigC.error_joinArenaIngame, true);
 | 
				
			||||||
 | 
												}
 | 
				
			||||||
 | 
											} else {
 | 
				
			||||||
 | 
												MessageM.sendFMessage(player,
 | 
				
			||||||
 | 
														ConfigC.error_joinWarpsNotSet, true);
 | 
				
			||||||
 | 
											}
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								MessageM.sendFMessage(player, ConfigC.error_joinAlreadyJoined, true);
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (!found) {
 | 
				
			||||||
 | 
								MessageM.sendFMessage(player, ConfigC.error_noArena, true, "name-"
 | 
				
			||||||
 | 
										+ arenaname);
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						public static void playerLeaveArena(Player player) {
 | 
				
			||||||
 | 
							Arena arena = null;
 | 
				
			||||||
 | 
							for (Arena arena2 : W.arenaList) {
 | 
				
			||||||
 | 
								if (arena2.playersInArena != null) {
 | 
				
			||||||
 | 
									if (arena2.playersInArena.contains(player)) {
 | 
				
			||||||
 | 
										arena = arena2;
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (arena != null) {
 | 
				
			||||||
 | 
								arena.playersInArena.remove(player);
 | 
				
			||||||
 | 
								if (arena.seekers.contains(player)) {
 | 
				
			||||||
 | 
									arena.seekers.remove(player);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								player.teleport(W.pLocation.get(player));
 | 
				
			||||||
 | 
								W.pLocation.remove(player);
 | 
				
			||||||
 | 
								player.setGameMode(W.pGameMode.get(player));
 | 
				
			||||||
 | 
								W.pGameMode.remove(player);
 | 
				
			||||||
 | 
								player.getInventory().setContents(W.pInventory.get(player));
 | 
				
			||||||
 | 
								W.pInventory.remove(player);
 | 
				
			||||||
 | 
								player.getInventory().setArmorContents(W.pArmor.get(player));
 | 
				
			||||||
 | 
								W.pArmor.remove(player);
 | 
				
			||||||
 | 
								player.setExp(W.pEXP.get(player));
 | 
				
			||||||
 | 
								W.pEXP.remove(player);
 | 
				
			||||||
 | 
								player.setHealth(W.pHealth.get(player));
 | 
				
			||||||
 | 
								W.pHealth.remove(player);
 | 
				
			||||||
 | 
								player.setFoodLevel(W.pFood.get(player));
 | 
				
			||||||
 | 
								W.pFood.remove(player);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								if (W.dcAPI.isDisguised(player)) {
 | 
				
			||||||
 | 
									W.dcAPI.undisguisePlayer(player);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
								MessageM.sendFMessage(player, ConfigC.normal_leaveYouLeft, true);
 | 
				
			||||||
 | 
								ArenaHandler.sendFMessage(arena, ConfigC.normal_leaveLeftArena,
 | 
				
			||||||
 | 
										true, "playername-" + player.getName(), "1-"
 | 
				
			||||||
 | 
												+ arena.playersInArena.size(), "2-"
 | 
				
			||||||
 | 
												+ arena.maxPlayers);
 | 
				
			||||||
 | 
							} else {
 | 
				
			||||||
 | 
								MessageM.sendFMessage(player, ConfigC.error_leaveNotInArena, true);
 | 
				
			||||||
 | 
								return;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,17 +1,11 @@
 | 
				
			|||||||
package nl.Steffion.BlockHunt.Commands;
 | 
					package nl.Steffion.BlockHunt.Commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import nl.Steffion.BlockHunt.Arena;
 | 
					 | 
				
			||||||
import nl.Steffion.BlockHunt.Arena.ArenaState;
 | 
					 | 
				
			||||||
import nl.Steffion.BlockHunt.ArenaHandler;
 | 
					import nl.Steffion.BlockHunt.ArenaHandler;
 | 
				
			||||||
import nl.Steffion.BlockHunt.W;
 | 
					 | 
				
			||||||
import nl.Steffion.BlockHunt.Managers.CommandC;
 | 
					import nl.Steffion.BlockHunt.Managers.CommandC;
 | 
				
			||||||
import nl.Steffion.BlockHunt.Managers.ConfigC;
 | 
					import nl.Steffion.BlockHunt.Managers.ConfigC;
 | 
				
			||||||
import nl.Steffion.BlockHunt.Managers.MessageM;
 | 
					import nl.Steffion.BlockHunt.Managers.MessageM;
 | 
				
			||||||
import nl.Steffion.BlockHunt.Managers.PlayerM;
 | 
					import nl.Steffion.BlockHunt.Managers.PlayerM;
 | 
				
			||||||
import nl.Steffion.BlockHunt.Managers.PlayerM.PermsC;
 | 
					import nl.Steffion.BlockHunt.Managers.PlayerM.PermsC;
 | 
				
			||||||
import nl.Steffion.BlockHunt.Serializables.LocationSerializable;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import org.bukkit.Bukkit;
 | 
					 | 
				
			||||||
import org.bukkit.command.Command;
 | 
					import org.bukkit.command.Command;
 | 
				
			||||||
import org.bukkit.entity.Player;
 | 
					import org.bukkit.entity.Player;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -27,79 +21,7 @@ public class CMDjoin extends DefaultCMD {
 | 
				
			|||||||
							ConfigC.error_notEnoughArguments, true, "syntax-"
 | 
												ConfigC.error_notEnoughArguments, true, "syntax-"
 | 
				
			||||||
									+ CommandC.JOIN.usage);
 | 
														+ CommandC.JOIN.usage);
 | 
				
			||||||
				} else {
 | 
									} else {
 | 
				
			||||||
					boolean found = false;
 | 
										ArenaHandler.playerJoinArena(player, args[1]);
 | 
				
			||||||
					boolean alreadyJoined = false;
 | 
					 | 
				
			||||||
					for (Arena arena : W.arenaList) {
 | 
					 | 
				
			||||||
						if (arena.playersInArena != null) {
 | 
					 | 
				
			||||||
							if (arena.playersInArena.contains(player)) {
 | 
					 | 
				
			||||||
								alreadyJoined = true;
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					if (!alreadyJoined) {
 | 
					 | 
				
			||||||
						for (Arena arena : W.arenaList) {
 | 
					 | 
				
			||||||
							if (arena.arenaName.equalsIgnoreCase(args[1])) {
 | 
					 | 
				
			||||||
								found = true;
 | 
					 | 
				
			||||||
								if (arena.disguiseBlocks.isEmpty()) {
 | 
					 | 
				
			||||||
									MessageM.sendFMessage(player,
 | 
					 | 
				
			||||||
											ConfigC.error_joinNoBlocksSet, true);
 | 
					 | 
				
			||||||
								} else {
 | 
					 | 
				
			||||||
									LocationSerializable zero = new LocationSerializable(
 | 
					 | 
				
			||||||
											Bukkit.getWorld("world"), 0, 0, 0,
 | 
					 | 
				
			||||||
											0, 0);
 | 
					 | 
				
			||||||
									if (!arena.lobbyWarp.equals(zero)
 | 
					 | 
				
			||||||
											&& !arena.hidersWarp.equals(zero)
 | 
					 | 
				
			||||||
											&& !arena.seekersWarp.equals(zero)) {
 | 
					 | 
				
			||||||
										if (arena.gameState == ArenaState.WAITING
 | 
					 | 
				
			||||||
												|| arena.gameState == ArenaState.STARTING) {
 | 
					 | 
				
			||||||
											arena.playersInArena.add(player);
 | 
					 | 
				
			||||||
											player.teleport(arena.lobbyWarp);
 | 
					 | 
				
			||||||
											ArenaHandler
 | 
					 | 
				
			||||||
													.sendFMessage(
 | 
					 | 
				
			||||||
															arena,
 | 
					 | 
				
			||||||
															ConfigC.normal_joinJoinedArena,
 | 
					 | 
				
			||||||
															true,
 | 
					 | 
				
			||||||
															"playername-"
 | 
					 | 
				
			||||||
																	+ player.getName(),
 | 
					 | 
				
			||||||
															"1-"
 | 
					 | 
				
			||||||
																	+ arena.playersInArena
 | 
					 | 
				
			||||||
																			.size(),
 | 
					 | 
				
			||||||
															"2-"
 | 
					 | 
				
			||||||
																	+ arena.maxPlayers);
 | 
					 | 
				
			||||||
											if (arena.playersInArena.size() < arena.minPlayers) {
 | 
					 | 
				
			||||||
												ArenaHandler
 | 
					 | 
				
			||||||
														.sendFMessage(
 | 
					 | 
				
			||||||
																arena,
 | 
					 | 
				
			||||||
																ConfigC.warning_lobbyNeedAtleast,
 | 
					 | 
				
			||||||
																true,
 | 
					 | 
				
			||||||
																"1-"
 | 
					 | 
				
			||||||
																		+ arena.minPlayers);
 | 
					 | 
				
			||||||
											}
 | 
					 | 
				
			||||||
										} else {
 | 
					 | 
				
			||||||
											MessageM.sendFMessage(
 | 
					 | 
				
			||||||
													player,
 | 
					 | 
				
			||||||
													ConfigC.error_joinArenaIngame,
 | 
					 | 
				
			||||||
													true);
 | 
					 | 
				
			||||||
										}
 | 
					 | 
				
			||||||
									} else {
 | 
					 | 
				
			||||||
										MessageM.sendFMessage(player,
 | 
					 | 
				
			||||||
												ConfigC.error_joinWarpsNotSet,
 | 
					 | 
				
			||||||
												true);
 | 
					 | 
				
			||||||
									}
 | 
					 | 
				
			||||||
								}
 | 
					 | 
				
			||||||
							}
 | 
					 | 
				
			||||||
						}
 | 
					 | 
				
			||||||
					} else {
 | 
					 | 
				
			||||||
						MessageM.sendFMessage(player,
 | 
					 | 
				
			||||||
								ConfigC.error_joinAlreadyJoined, true);
 | 
					 | 
				
			||||||
						return true;
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
					if (!found) {
 | 
					 | 
				
			||||||
						MessageM.sendFMessage(player, ConfigC.error_noArena,
 | 
					 | 
				
			||||||
								true, "name-" + args[1]);
 | 
					 | 
				
			||||||
					}
 | 
					 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			} else {
 | 
								} else {
 | 
				
			||||||
				MessageM.sendFMessage(player, ConfigC.error_onlyIngame, true);
 | 
									MessageM.sendFMessage(player, ConfigC.error_onlyIngame, true);
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										25
									
								
								src/nl/Steffion/BlockHunt/Commands/CMDleave.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								src/nl/Steffion/BlockHunt/Commands/CMDleave.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					package nl.Steffion.BlockHunt.Commands;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import nl.Steffion.BlockHunt.ArenaHandler;
 | 
				
			||||||
 | 
					import nl.Steffion.BlockHunt.Managers.ConfigC;
 | 
				
			||||||
 | 
					import nl.Steffion.BlockHunt.Managers.MessageM;
 | 
				
			||||||
 | 
					import nl.Steffion.BlockHunt.Managers.PlayerM;
 | 
				
			||||||
 | 
					import nl.Steffion.BlockHunt.Managers.PlayerM.PermsC;
 | 
				
			||||||
 | 
					import org.bukkit.command.Command;
 | 
				
			||||||
 | 
					import org.bukkit.entity.Player;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class CMDleave extends DefaultCMD {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						@Override
 | 
				
			||||||
 | 
						public boolean exectue(Player player, Command cmd, String label,
 | 
				
			||||||
 | 
								String[] args) {
 | 
				
			||||||
 | 
							if (PlayerM.hasPerm(player, PermsC.leave, true)) {
 | 
				
			||||||
 | 
								if (player != null) {
 | 
				
			||||||
 | 
									ArenaHandler.playerLeaveArena(player);
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									MessageM.sendFMessage(player, ConfigC.error_onlyIngame, true);
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							return true;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user