package de.steamwar.bausystem; import de.steamwar.bausystem.commands.*; import de.steamwar.bausystem.world.ArenaSection; import de.steamwar.bausystem.world.BauScoreboard; import de.steamwar.bausystem.world.RegionListener; import de.steamwar.bausystem.world.TNTListener; import de.steamwar.core.CommandRemover; import de.steamwar.scoreboard.SWScoreboard; import de.steamwar.sql.SteamwarUser; import org.bukkit.Bukkit; import org.bukkit.configuration.InvalidConfigurationException; 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.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.permissions.PermissionAttachment; import org.bukkit.plugin.java.JavaPlugin; 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/"; @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("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); } 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) { Player p = e.getPlayer(); PermissionAttachment attachment = p.addAttachment(this); attachment.setPermission("F3NPerm.use", 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); } @EventHandler public void onLeave(PlayerQuitEvent e) { SWScoreboard.removeScoreboard(e.getPlayer()); if(Bukkit.getOnlinePlayers().isEmpty() || (Bukkit.getOnlinePlayers().size() == 1 && Bukkit.getOnlinePlayers().contains(e.getPlayer()))) Bukkit.shutdown(); } }