Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.RSP.bb.Mechanics.basic;
- import me.RSP.bb.Main;
- import me.RSP.bb.Arenas.Arena;
- import me.RSP.bb.Arenas.ArenaState;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Material;
- import org.bukkit.World;
- import org.bukkit.block.Sign;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.block.Action;
- import org.bukkit.event.block.SignChangeEvent;
- import org.bukkit.event.player.PlayerInteractEvent;
- public class Signs implements Listener{
- @EventHandler
- public void onSignChange(SignChangeEvent e){
- if (!e.getBlock().getWorld().getName().equalsIgnoreCase("Lobby")){
- e.getBlock().setType(Material.AIR);
- e.getPlayer().sendMessage(ChatColor.RED + "Signs can only be placed in the lobby!");
- return;
- }
- try {
- setSign(e, Bukkit.getWorld(e.getLine(0)));
- }
- catch (NullPointerException ex){
- e.getPlayer().sendMessage(ChatColor.RED + "Invalid Arena Name!");
- e.getBlock().setType(Material.AIR);
- return;
- }
- }
- public void setSign(SignChangeEvent sign, World world){
- sign.setLine(0, ChatColor.DARK_RED + world.getName());
- Arena arena = new Arena(world);
- Main.getUtils().getArenasFile().newSign((Sign) sign.getBlock().getState(), arena);
- update(sign, arena);
- }
- public void update(SignChangeEvent sign, Arena arena){
- sign.setLine(2, arena.getPlayerCount() + "/8");
- sign.setLine(3, ArenaState.toString(arena.getState()));
- }
- @EventHandler
- public void onRightClick(PlayerInteractEvent e){
- if (e.getAction() == Action.RIGHT_CLICK_BLOCK && e.getClickedBlock().getType() == Material.WALL_SIGN){
- Sign sign = (Sign) e.getClickedBlock().getState();
- if ((!sign.getLine(3).equalsIgnoreCase(ArenaState.toString(ArenaState.IN_GAME)))
- && !sign.getLine(2).equalsIgnoreCase("8/8")){
- World w = Bukkit.getWorld(ChatColor.stripColor(sign.getLine(0)));
- Arena arena;
- try {
- arena = Main.getUtils().getArenas().getArenaFor(w);
- }
- catch (NullPointerException ex){
- arena = new Arena(w);
- }
- if (Main.getUtils().getArenas().getArenaFor(w) == null){
- arena = new Arena(w);
- }
- Main.getUtils().getJoinArena().enterGame(e.getPlayer(), arena);
- sign.setLine(2, arena.getPlayerCount() + "/8");
- sign.setLine(3, ArenaState.toString(arena.getState()));
- sign.update();
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement