You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
159 lines
6.8 KiB
159 lines
6.8 KiB
package cx.sfy.TheBridge.listeners;
|
|
|
|
import org.bukkit.Location;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.block.Sign;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.block.Action;
|
|
import org.bukkit.event.block.BlockBreakEvent;
|
|
import org.bukkit.event.block.SignChangeEvent;
|
|
import org.bukkit.event.player.PlayerInteractEvent;
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
import cx.sfy.TheBridge.Main;
|
|
import cx.sfy.TheBridge.game.GameDuo;
|
|
import cx.sfy.TheBridge.game.GameFour;
|
|
import cx.sfy.TheBridge.game.GameDuo.State;
|
|
import cx.sfy.TheBridge.game.GameFour.FState;;
|
|
|
|
public class SetupListener implements Listener {
|
|
|
|
Main plugin;
|
|
|
|
public SetupListener(Main plugin) {
|
|
this.plugin = plugin;
|
|
}
|
|
|
|
@SuppressWarnings("deprecation")
|
|
@EventHandler
|
|
public void onInteract(PlayerInteractEvent e) {
|
|
Player p = e.getPlayer();
|
|
if (p.getItemInHand() == null || p.getItemInHand().getType() == Material.AIR) {
|
|
return;
|
|
}
|
|
ItemStack item = p.getItemInHand();
|
|
if (item.getType() == Material.BLAZE_ROD && item.getItemMeta().getDisplayName().equalsIgnoreCase("�eSetup TheBridge")) {
|
|
if (e.getAction().equals(Action.LEFT_CLICK_BLOCK)) {
|
|
plugin.getSM().setMax(p, e.getClickedBlock().getLocation());
|
|
e.setCancelled(true);
|
|
}
|
|
if (e.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
|
|
plugin.getSM().setMin(p, e.getClickedBlock().getLocation());
|
|
e.setCancelled(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onSignChange(SignChangeEvent e) {
|
|
Player p = e.getPlayer();
|
|
if (!p.hasPermission("bridges.admin")) {
|
|
return;
|
|
}
|
|
if (e.getLine(0).equals("[bridges]")) {
|
|
if (e.getLine(1).toLowerCase().equals("normal")) {
|
|
String game = e.getLine(2);
|
|
Sign sign = (Sign)e.getBlock().getState();
|
|
if (plugin.getGM().getGameByName(game) == null) {
|
|
p.sendMessage("�cThis Game not exits.");
|
|
return;
|
|
}
|
|
GameDuo gname = plugin.getGM().getGameByName(game);
|
|
plugin.getSIM().createSign(e.getBlock().getLocation(), game, sign);
|
|
e.setLine(0, plugin.getLang().get("signs.normal.line-1").replaceAll("<state>", getState(gname.getState())).replaceAll("<name>", game).replaceAll("<players>", String.valueOf(gname.getPlayers())).replaceAll("<max>", String.valueOf(gname.getMax())));
|
|
e.setLine(1, plugin.getLang().get("signs.normal.line-2").replaceAll("<state>", getState(gname.getState())).replaceAll("<name>", game).replaceAll("<players>", String.valueOf(gname.getPlayers())).replaceAll("<max>", String.valueOf(gname.getMax())));
|
|
e.setLine(2, plugin.getLang().get("signs.normal.line-3").replaceAll("<state>", getState(gname.getState())).replaceAll("<name>", game).replaceAll("<players>", String.valueOf(gname.getPlayers())).replaceAll("<max>", String.valueOf(gname.getMax())));
|
|
e.setLine(3, plugin.getLang().get("signs.normal.line-4").replaceAll("<state>", getState(gname.getState())).replaceAll("<name>", game).replaceAll("<players>", String.valueOf(gname.getPlayers())).replaceAll("<max>", String.valueOf(gname.getMax())));
|
|
p.sendMessage("�aSign Normal added.");
|
|
} else if (e.getLine(1).toLowerCase().equals("four")) {
|
|
String game = e.getLine(2);
|
|
Sign sign = (Sign)e.getBlock().getState();
|
|
if (plugin.getGM().getGameFourByName(game) == null) {
|
|
p.sendMessage("�cThis Game not exits.");
|
|
return;
|
|
}
|
|
GameFour gname = plugin.getGM().getGameFourByName(game);
|
|
plugin.getSIM().createFourSign(e.getBlock().getLocation(), game, sign);
|
|
e.setLine(0, plugin.getLang().get("signs.four.line-1").replaceAll("<state>", getState(gname.getState())).replaceAll("<name>", game).replaceAll("<players>", String.valueOf(gname.getPlayers().size())).replaceAll("<max>", String.valueOf(gname.getMax())));
|
|
e.setLine(1, plugin.getLang().get("signs.four.line-2").replaceAll("<state>", getState(gname.getState())).replaceAll("<name>", game).replaceAll("<players>", String.valueOf(gname.getPlayers().size())).replaceAll("<max>", String.valueOf(gname.getMax())));
|
|
e.setLine(2, plugin.getLang().get("signs.four.line-3").replaceAll("<state>", getState(gname.getState())).replaceAll("<name>", game).replaceAll("<players>", String.valueOf(gname.getPlayers().size())).replaceAll("<max>", String.valueOf(gname.getMax())));
|
|
e.setLine(3, plugin.getLang().get("signs.four.line-4").replaceAll("<state>", getState(gname.getState())).replaceAll("<name>", game).replaceAll("<players>", String.valueOf(gname.getPlayers().size())).replaceAll("<max>", String.valueOf(gname.getMax())));
|
|
p.sendMessage("�aSign Four added.");
|
|
}
|
|
}
|
|
}
|
|
|
|
protected String getState(State state) {
|
|
if (state == State.WAITING) {
|
|
return plugin.getLang().get("states.waiting");
|
|
}
|
|
if (state == State.STARTING) {
|
|
return plugin.getLang().get("states.starting");
|
|
}
|
|
if (state == State.PREGAME) {
|
|
return plugin.getLang().get("states.pregame");
|
|
}
|
|
if (state == State.INGAME) {
|
|
return plugin.getLang().get("states.ingame");
|
|
}
|
|
if (state == State.FINISH) {
|
|
return plugin.getLang().get("states.finish");
|
|
}
|
|
if (state == State.RESTARTING) {
|
|
return plugin.getLang().get("states.restarting");
|
|
}
|
|
return "";
|
|
}
|
|
|
|
protected String getState(FState state) {
|
|
if (state == FState.WAITING) {
|
|
return plugin.getLang().get("states.waiting");
|
|
}
|
|
if (state == FState.STARTING) {
|
|
return plugin.getLang().get("states.starting");
|
|
}
|
|
if (state == FState.PREGAME) {
|
|
return plugin.getLang().get("states.pregame");
|
|
}
|
|
if (state == FState.INGAME) {
|
|
return plugin.getLang().get("states.ingame");
|
|
}
|
|
if (state == FState.FINISH) {
|
|
return plugin.getLang().get("states.finish");
|
|
}
|
|
if (state == FState.RESTARTING) {
|
|
return plugin.getLang().get("states.restarting");
|
|
}
|
|
return "";
|
|
}
|
|
|
|
@EventHandler
|
|
public void onBreak(BlockBreakEvent e) {
|
|
Player p = e.getPlayer();
|
|
if (!p.hasPermission("bridges.admin")) {
|
|
return;
|
|
}
|
|
if (plugin.getSIM().getSigns().keySet().contains(e.getBlock().getLocation())) {
|
|
plugin.getSigns().set("signs.normal." + plugin.getSIM().getSigns().get(e.getBlock().getLocation()).getGame(), null);
|
|
plugin.getSigns().save();
|
|
p.sendMessage("�cSign normal removed.");
|
|
} else if (plugin.getSIM().getFourSigns().keySet().contains(e.getBlock().getLocation())) {
|
|
plugin.getSigns().set("signs.four." + plugin.getSIM().getFourSigns().get(e.getBlock().getLocation()).getGame(), null);
|
|
plugin.getSigns().save();
|
|
p.sendMessage("�cSign four removed.");
|
|
}
|
|
}
|
|
|
|
public String getLocationString(Location loc){
|
|
String world = loc.getWorld().getName();
|
|
double x = loc.getX();
|
|
double y = loc.getY();
|
|
double z = loc.getZ();
|
|
float yaw = loc.getYaw();
|
|
float pitch = loc.getPitch();
|
|
return world + ";" + x + ";" + y + ";" + z + ";" + yaw + ";" + pitch;
|
|
}
|
|
|
|
}
|