package me.avopxl.haudenhemdmann;
import java.util.ArrayList;
import java.util.HashMap;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Sign;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.block.SignChangeEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin implements Listener {
/** UTILS **/
public static HashMap<Player, Location> save = new HashMap<Player, Location>();
public static HashMap<Player, ItemStack[]> save2 = new HashMap<Player, ItemStack[]>();
public static ArrayList<Player> ingame = new ArrayList<Player>();
public static boolean countdown = false;
/** REGISTERING **/
@Override
public void onEnable() {
Bukkit.getServer().getPluginManager().registerEvents(this, this);
set("hemd.spawn.welt", "world");
coord("hemd.spawn.x", 0);
coord("hemd.spawn.y", 0);
coord("hemd.spawn.z", 0);
set("hemd.teleport.welt", "world");
coord("hemd.teleport.x", 0);
coord("hemd.teleport.y", 0);
coord("hemd.teleport.z", 0);
set("hemd.wartelobby.welt", "world");
coord("hemd.wartelobby.x", 0);
coord("hemd.wartelobby.y", 0);
coord("hemd.wartelobby.z", 0);
getConfig().options().copyDefaults(true);
saveConfig();
}
/** METHODS **/
public void coord(String config, int value) {
if (getConfig().getInt(config) == 0) {
getConfig().set(config, value);
} else {
getConfig().set(config, getConfig().getInt(config));
}
}
public void set(String config, String value) {
if (getConfig().getString(config) == null) {
getConfig().set(config, value);
} else {
getConfig().set(config, getConfig().getString(config));
}
}
public void start(Player gamers) {
if (Join.running == false) {
World w = Bukkit.getServer().getWorld(getConfig().getString("hemd.spawn.world"));
Location spawn = new Location(w, getConfig().getDouble("hemd.spawn.x"),
getConfig().getDouble("hemd.spawn.y"), getConfig().getDouble("hemd.spawn.z"));
gamers.teleport(spawn);
gamers.sendMessage("§7[§eHau den HemdMann§7] §aDas Spiel hat begonnen! Farme dir nun Equipment!");
ingame.add(gamers);
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
public void run() {
gamers.sendMessage("§7[§eHau den HemdMann§7] §aIn 4 Minute werden alle Spieler teleportiert!");
}
}, 1 * (60 * 20));
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
public void run() {
gamers.sendMessage("§7[§eHau den HemdMann§7] §aIn 3 Minute werden alle Spieler teleportiert!");
}
}, 2 * (60 * 20));
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
public void run() {
gamers.sendMessage("§7[§eHau den HemdMann§7] §aIn 2 Minute werden alle Spieler teleportiert!");
}
}, 3 * (60 * 20));
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
public void run() {
gamers.sendMessage("§7[§eHau den HemdMann§7] §aIn 1 Minute werden alle Spieler teleportiert!");
}
}, 4 * (60 * 20));
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
public void run() {
Teleport.teleport(gamers);
}
}, 5 * (60 * 20));
} else {
gamers.sendMessage(
"§4§lError: §cDie Runde ist anscheinend bereits gestartet! Bitte melde das einen Administrator.");
}
}
public void end() {
for (Player p : Join.players) {
p.sendMessage("§7[§eHau den HemdMann§7] §aHerzlichen Glückwunsch! Alle HemdMänner wurden gehauen!");
p.sendMessage("§7[§eHau den HemdMann§7] §aBenutze den Befehl /leavehdhm oder warte noch 10 Sekunden.");
Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
public void run() {
if (Join.players.contains(p)) {
Leave.leave(p);
Join.running = false;
}
}
}, 10 * 20);
}
}
/** EVENTS **/
@EventHandler
public void SignChangeEvent(SignChangeEvent e) {
Player p = e.getPlayer();
if (p.hasPermission("hemdmann.haudenhemdmann.schild")) {
if (e.getLine(0).equalsIgnoreCase("[hau]") || e.getLine(0).equalsIgnoreCase("[hdhm]")) {
e.setLine(0, "§6[HDHM]");
e.setLine(1, Join.players.size() + "§e/§010");
Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
public void run() {
e.setLine(1, Join.players.size() + "§e/§010");
}
}, 50, 50);
e.setLine(2, "§b[§3Join§b]");
e.setLine(3, "***");
}
}
}
@EventHandler
public void PlayerInteract(PlayerInteractEvent e) {
Player p = e.getPlayer();
ItemStack i = e.getItem();
if (e.getClickedBlock().getType() == Material.WALL_SIGN) {
Sign s = (Sign) e.getClickedBlock().getState();
if (s.getLine(3).equalsIgnoreCase("***")) {
Join.join(p);
}
} else if (i.getType() == Material.SLIME_BALL) {
if (i.getItemMeta().getDisplayName().equalsIgnoreCase("§cSpiel verlassen")) {
Leave.leave(p);
}
} else {
}
}
@EventHandler
public void onLeave(PlayerQuitEvent e) {
Player p = e.getPlayer();
if (Join.players.contains(p)) {
Leave.leave(p);
}
}
@EventHandler
public void onBlockPlace(BlockPlaceEvent e) {
if (Join.players.contains(e.getPlayer())) {
e.setCancelled(true);
}
}
@EventHandler
public void onBlockBreak(BlockBreakEvent e) {
if (Join.players.contains(e.getPlayer())) {
e.setCancelled(true);
}
}
@EventHandler
public void onDamage(EntityDamageByEntityEvent e) {
if (Join.players.contains(e.getEntity())) {
e.setCancelled(true);
}
}
/** COMMANDS **/
public boolean onCommand(CommandSender cs, Command cmd, String label, String[] args) {
Player p = (Player) cs;
if (cmd.getName().equalsIgnoreCase("sethemdspawn")) {
if (p.hasPermission("hemdmann.haudenhemdmann.setspawn")) {
if (args.length == 0) {
getConfig().set("hemd.spawn.world", "'" + p.getWorld().getName().toString() + "'");
getConfig().set("hemd.spawn.x", p.getLocation().getX());
getConfig().set("hemd.spawn.y", p.getLocation().getY());
getConfig().set("hemd.spawn.z", p.getLocation().getZ());
saveConfig();
p.sendMessage("§aDer Spawn wurde erfolgreich gesetzt!");
return true;
} else {
p.sendMessage("§c/sethemdspawn");
return true;
}
}
}
if (cmd.getName().equalsIgnoreCase("starthdhm")) {
if (p.hasPermission("hemdmann.haudenhemdmann.start")) {
for (Player gamers : Join.players) {
start(gamers);
}
}
}
if (cmd.getName().equalsIgnoreCase("sethemdteleport")) {
if (p.hasPermission("hemdmann.haudenhemdmann.setteleport")) {
if (args.length == 0) {
getConfig().set("hemd.teleport.world", "'" + p.getWorld().getName().toString() + "'");
getConfig().set("hemd.teleport.x", p.getLocation().getX());
getConfig().set("hemd.teleport.y", p.getLocation().getY());
getConfig().set("hemd.teleport.z", p.getLocation().getZ());
saveConfig();
p.sendMessage("§aDer Spawn des Teleports wurde erfolgreich gesetzt!");
return true;
} else {
p.sendMessage("§c/sethemdspawn");
return true;
}
}
}
if (cmd.getName().equalsIgnoreCase("joinhdhm")) {
Join.join(p);
}
if (cmd.getName().equalsIgnoreCase("leavehdhm")) {
Leave.leave(p);
}
if (cmd.getName().equalsIgnoreCase("setwartelobby")) {
if (p.hasPermission("hemdmann.haudenhemdmann.setwartelobby")) {
if (args.length == 0) {
getConfig().set("hemd.wartelobby.world", "'" + p.getWorld().getName().toString() + "'");
getConfig().set("hemd.wartelobby.x", p.getLocation().getX());
getConfig().set("hemd.wartelobby.y", p.getLocation().getY());
getConfig().set("hemd.wartelobby.z", p.getLocation().getZ());
saveConfig();
p.sendMessage("§aDer Spawn der Wartelobby wurde erfolgreich gesetzt!");
return true;
} else {
p.sendMessage("§c/sethemdspawn");
return true;
}
}
}
return true;
}
}