package de.steamwar.bausystem; import de.steamwar.bausystem.commands.*; import de.steamwar.bausystem.tracer.TNTListener; import de.steamwar.bausystem.tracer.TNTTracer15; import de.steamwar.bausystem.tracer.trace.ShowManager; import de.steamwar.bausystem.world.*; import de.steamwar.core.CommandRemover; import de.steamwar.core.Core; import de.steamwar.scoreboard.SWScoreboard; import de.steamwar.sql.SteamwarUser; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.attribute.Attribute; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.scheduler.BukkitTask; import java.io.File; import java.io.IOException; import java.util.List; import java.util.UUID; import java.util.logging.Level; public class BauSystem extends JavaPlugin implements Listener { private static BauSystem plugin; private static UUID owner; private static List sections; public static final String PREFIX = "§eBauSystem§8» §7"; public static final String SECTION_PATH = "/home/minecraft/backbone/server/UserBau/"; private BukkitTask autoShutdown; @Override public void onEnable() { plugin = this; String worldName = Bukkit.getWorlds().get(0).getName(); try{ owner = UUID.fromString(worldName); sections = ArenaSection.loadFromFile(new File(Bukkit.getWorldContainer().getPath() + '/' + owner.toString() + "/sections.yml")); }catch(IllegalArgumentException e){ try{ int ownerID = Integer.parseInt(worldName); owner = SteamwarUser.get(ownerID).getUUID(); sections = ArenaSection.loadFromFile(new File(Bukkit.getWorldContainer().getPath() + '/' + ownerID + "/sections.yml")); }catch(NumberFormatException | IOException | InvalidConfigurationException ex){ getLogger().log(Level.SEVERE, "owner is no UUID / failed to load sections.yml", e); Bukkit.shutdown(); return; } } catch (InvalidConfigurationException | IOException e) { getLogger().log(Level.SEVERE, "Failed to load sections.yml", e); Bukkit.shutdown(); return; } try { CommandRemover.removeAll("tp", "gamemode", "time", "clear"); CommandInjector.injectCommand(new CommandTeleport()); CommandInjector.injectCommand(new CommandGamemode()); CommandInjector.injectCommand(new CommandTime()); CommandInjector.injectCommand(new CommandClear()); } catch (Exception e) { getLogger().log(Level.SEVERE, "Failed to replace commands", e); Bukkit.shutdown(); return; } getCommand("trace").setExecutor(new CommandTrace()); getCommand("trace").setTabCompleter(new CommandTraceTabCompleter()); getCommand("nightvision").setExecutor(new CommandNV()); getCommand("reset").setExecutor(new CommandReset()); getCommand("speed").setExecutor(new CommandSpeed()); getCommand("tnt").setExecutor(new CommandTNT()); getCommand("fire").setExecutor(new CommandFire()); getCommand("freeze").setExecutor(new CommandFreeze()); getCommand("testblock").setExecutor(new CommandTestblock()); getCommand("bau").setExecutor(new CommandBau()); getCommand("bauinfo").setExecutor(new CommandInfo()); getCommand("protect").setExecutor(new CommandProtect()); getCommand("skull").setExecutor(new CommandSkull()); getCommand("loader").setExecutor(new CommandLoader()); getCommand("lockschem").setExecutor(new CommandLockschem()); Bukkit.getPluginManager().registerEvents(this, this); Bukkit.getPluginManager().registerEvents(new RegionListener(), this); Bukkit.getPluginManager().registerEvents(new TNTListener(), this); Bukkit.getPluginManager().registerEvents(new BauScoreboard(), this); new AFKStopper(); if (Core.getVersion() == 15) { TNTTracer15.initTNTTracer_15(); } autoShutdown = Bukkit.getScheduler().runTaskLater(this, Bukkit::shutdown, 1200); } public static BauSystem getPlugin(){ return plugin; } public static UUID getOwner(){ return owner; } public static List getSections(){ return sections; } public static int getOwnerID(){ return SteamwarUser.get(owner).getId(); } @EventHandler public void onDeath(PlayerDeathEvent e) { e.setDeathMessage(null); } @EventHandler public void onJoin(PlayerLoginEvent e) { if(autoShutdown != null){ autoShutdown.cancel(); autoShutdown = null; } Player p = e.getPlayer(); p.setOp(true); /*PermissionAttachment attachment = p.addAttachment(this); attachment.setPermission("F3NPerm.use", true); attachment.setPermission("fawe.tips", false); attachment.setPermission("fawe.admin", true); attachment.setPermission("fawe.permpack.basic", true); attachment.setPermission("worldedit.navigation.jumpto.tool", true); attachment.setPermission("worldedit.navigation.thru.tool", true); attachment.setPermission("worldedit.biome.info", true); attachment.setPermission("worldedit.biome.set", true); attachment.setPermission("worldedit.biome.list", true); attachment.setPermission("worldedit.chunkinfo", true); attachment.setPermission("worldedit.listchunks", true); attachment.setPermission("worldedit.clipboard.cut", true); attachment.setPermission("worldedit.clipboard.paste", true); attachment.setPermission("worldedit.schematic.formats", true); attachment.setPermission("worldedit.schematic.load", true); attachment.setPermission("worldedit.schematic.list", true); attachment.setPermission("worldedit.schematic.save", true); attachment.setPermission("worldedit.clipboard.clear", true); attachment.setPermission("worldedit.clipboard.copy", true); attachment.setPermission("worldedit.clipboard.lazycopy", true); attachment.setPermission("worldedit.clipboard.place", true); attachment.setPermission("worldedit.clipboard.download", true); attachment.setPermission("worldedit.clipboard.flip", true); attachment.setPermission("worldedit.clipboard.rotate", true); attachment.setPermission("worldedit.help", true); attachment.setPermission("worldedit.global-mask", true); attachment.setPermission("worldedit.global-transform", true); attachment.setPermission("worldedit.generation.cylinder", true); attachment.setPermission("worldedit.generation.sphere", true); attachment.setPermission("worldedit.generation.forest", true); attachment.setPermission("worldedit.generation.pumpkins", true); attachment.setPermission("worldedit.generation.pyramid", true); attachment.setPermission("worldedit.generation.shape", true); attachment.setPermission("worldedit.biome.set", true); attachment.setPermission("worldedit.history.undo", true); attachment.setPermission("worldedit.history.redo", true); attachment.setPermission("worldedit.history.rollback", true); attachment.setPermission("worldedit.navigation.unstuck", true); attachment.setPermission("worldedit.navigation.ascend", true); attachment.setPermission("worldedit.navigation.descend", true); attachment.setPermission("worldedit.navigation.ceiling", true); attachment.setPermission("worldedit.navigation.thru.command", true); attachment.setPermission("worldedit.navigation.jumpto.command", true); attachment.setPermission("worldedit.navigation.up", true); attachment.setPermission("worldedit.region.hollow", true); attachment.setPermission("worldedit.region.line", true); attachment.setPermission("worldedit.region.curve", true); attachment.setPermission("worldedit.region.overlay", true); attachment.setPermission("worldedit.region.center", true); attachment.setPermission("worldedit.region.naturalize", true); attachment.setPermission("worldedit.region.walls", true); attachment.setPermission("worldedit.region.faces", true); attachment.setPermission("worldedit.region.smooth", true); attachment.setPermission("worldedit.region.move", true); attachment.setPermission("worldedit.region.forest", true); attachment.setPermission("worldedit.region.replace", true); attachment.setPermission("worldedit.region.stack", true); attachment.setPermission("worldedit.region.set", true); attachment.setPermission("worldedit.selection.pos", true); attachment.setPermission("worldedit.selection.chunk", true); attachment.setPermission("worldedit.selection.hpos", true); attachment.setPermission("worldedit.wand", true); attachment.setPermission("worldedit.wand.toggle", true); attachment.setPermission("worldedit.selection.contract", true); attachment.setPermission("worldedit.selection.outset", true); attachment.setPermission("worldedit.selection.inset", true); attachment.setPermission("worldedit.analysis.distr", true); attachment.setPermission("worldedit.analysis.count", true); attachment.setPermission("worldedit.selection.size", true); attachment.setPermission("worldedit.selection.expand", true); attachment.setPermission("worldedit.selection.shift", true); attachment.setPermission("worldedit.snapshots.list", true); attachment.setPermission("worldedit.superpickaxe", true); attachment.setPermission("worldedit.superpickaxe.area", true); attachment.setPermission("worldedit.superpickaxe.recursive", true); attachment.setPermission("worldedit.brush.blendball", true); attachment.setPermission("worldedit.brush.erode", true); attachment.setPermission("worldedit.brush.pull", true); attachment.setPermission("worldedit.brush.circle", true); attachment.setPermission("worldedit.brush.recursive", true); attachment.setPermission("worldedit.brush.line", true); attachment.setPermission("worldedit.brush.spline", true); attachment.setPermission("worldedit.brush.surfacespline", true); attachment.setPermission("worldedit.brush.shatter", true); attachment.setPermission("worldedit.brush.stencil", true); attachment.setPermission("worldedit.brush.height", true); attachment.setPermission("worldedit.brush.layer", true); attachment.setPermission("worldedit.brush.populateschematic", true); attachment.setPermission("worldedit.brush.scatter", true); attachment.setPermission("worldedit.brush.splatter", true); attachment.setPermission("worldedit.brush.scattercommand", true); attachment.setPermission("worldedit.brush.copy", true); attachment.setPermission("worldedit.brush.command", true); attachment.setPermission("worldedit.brush.apply", true); attachment.setPermission("worldedit.brush.sphere", true); attachment.setPermission("worldedit.brush.cylinder", true); attachment.setPermission("worldedit.brush.clipboard", true); attachment.setPermission("worldedit.brush.smooth", true); attachment.setPermission("worldedit.brush.ex", true); attachment.setPermission("worldedit.brush.gravity", true); attachment.setPermission("worldedit.brush.options.range", true); attachment.setPermission("worldedit.brush.options.material", true); attachment.setPermission("worldedit.brush.options.size", true); attachment.setPermission("worldedit.brush.options.mask", true); attachment.setPermission("worldedit.brush.options.smask", true); attachment.setPermission("worldedit.brush.options.transform", true); attachment.setPermission("worldedit.brush.options.scroll", true); attachment.setPermission("worldedit.brush.options.visualize", true); attachment.setPermission("worldedit.tool.deltree", true); attachment.setPermission("worldedit.tool.farwand", true); attachment.setPermission("worldedit.tool.lrbuild", true); attachment.setPermission("worldedit.tool.info", true); attachment.setPermission("worldedit.tool.tree", true); attachment.setPermission("worldedit.tool.replacer", true); attachment.setPermission("worldedit.tool.data-cycler", true); attachment.setPermission("worldedit.tool.flood-fill", true); attachment.setPermission("worldedit.tool.inspect", true); attachment.setPermission("worldedit.fill.recursive", true); attachment.setPermission("worldedit.drain", true); attachment.setPermission("worldedit.fixlava", true); attachment.setPermission("worldedit.fixwater", true); attachment.setPermission("worldedit.removeabove", true); attachment.setPermission("worldedit.removebelow", true); attachment.setPermission("worldedit.removenear", true); attachment.setPermission("worldedit.replacenear", true); attachment.setPermission("worldedit.snow", true); attachment.setPermission("worldedit.thaw", true); attachment.setPermission("worldedit.green", true); attachment.setPermission("worldedit.extinguish", true); attachment.setPermission("worldedit.calc", true); attachment.setPermission("worldedit.fill", true);*/ if (Core.getVersion() == 15) ShowManager.add(p); } @EventHandler public void onLeave(PlayerQuitEvent e) { Player player = e.getPlayer(); SWScoreboard.removeScoreboard(player); if (Bukkit.getOnlinePlayers().isEmpty() || (Bukkit.getOnlinePlayers().size() == 1 && Bukkit.getOnlinePlayers().contains(player))) { Bukkit.shutdown(); return; } if (Core.getVersion() == 15) ShowManager.remove(e.getPlayer()); } @EventHandler public void onInventoryClick(InventoryClickEvent e) { ItemStack stack = e.getCursor(); if (stack == null) return; if (!stack.hasItemMeta()) return; if (stack.getItemMeta().hasEnchants()) { for (Enchantment en : Enchantment.values()) { if (stack.getEnchantmentLevel(en) > en.getMaxLevel()) stack.removeEnchantment(en); } } Player p = (Player) e.getWhoClicked(); Material material = stack.getType(); if (material == Material.POTION || material == Material.SPLASH_POTION || material == Material.LINGERING_POTION) stack.setType(Material.MILK_BUCKET); if(Core.getVersion() < 14){ e.setCurrentItem(stack); return; } if (stack.getItemMeta().hasAttributeModifiers()) { ItemMeta meta = stack.getItemMeta(); for (Attribute a : Attribute.values()) meta.removeAttributeModifier(a); stack.setItemMeta(meta); Bukkit.getLogger().log(Level.SEVERE, "Spieler " + p.getName() + " (" + p.getUniqueId().toString() + ") hat versucht ein Item mit einem Attribute-Modifier zu bekommen."); } e.setCurrentItem(stack); } }