SHOW:
|
|
- or go back to the newest paste.
| 1 | package de.De24.hublobby; | |
| 2 | ||
| 3 | import java.util.ArrayList; | |
| 4 | import java.util.Arrays; | |
| 5 | import java.util.List; | |
| 6 | ||
| 7 | import org.bukkit.Bukkit; | |
| 8 | import org.bukkit.ChatColor; | |
| 9 | import org.bukkit.GameMode; | |
| 10 | import org.bukkit.Location; | |
| 11 | import org.bukkit.Material; | |
| 12 | import org.bukkit.command.Command; | |
| 13 | import org.bukkit.command.CommandSender; | |
| 14 | import org.bukkit.configuration.ConfigurationSection; | |
| 15 | import org.bukkit.configuration.file.FileConfiguration; | |
| 16 | import org.bukkit.entity.Player; | |
| 17 | import org.bukkit.event.Event.Result; | |
| 18 | import org.bukkit.event.EventHandler; | |
| 19 | import org.bukkit.event.Listener; | |
| 20 | import org.bukkit.event.block.Action; | |
| 21 | import org.bukkit.event.entity.EntityDamageEvent; | |
| 22 | import org.bukkit.event.inventory.InventoryClickEvent; | |
| 23 | import org.bukkit.event.inventory.InventoryOpenEvent; | |
| 24 | import org.bukkit.event.player.AsyncPlayerChatEvent; | |
| 25 | import org.bukkit.event.player.PlayerDropItemEvent; | |
| 26 | import org.bukkit.event.player.PlayerInteractEvent; | |
| 27 | import org.bukkit.event.player.PlayerJoinEvent; | |
| 28 | import org.bukkit.event.player.PlayerQuitEvent; | |
| 29 | import org.bukkit.inventory.Inventory; | |
| 30 | import org.bukkit.inventory.ItemStack; | |
| 31 | import org.bukkit.inventory.meta.ItemMeta; | |
| 32 | import org.bukkit.permissions.Permission; | |
| 33 | import org.bukkit.plugin.java.JavaPlugin; | |
| 34 | import org.bukkit.potion.PotionEffect; | |
| 35 | ||
| 36 | public class HubLobby extends JavaPlugin implements Listener {
| |
| 37 | ||
| 38 | public static final ItemStack EMPTY_ITEM; | |
| 39 | public static final ItemStack CUBETOWN_ITEM; | |
| 40 | public static final ItemStack MINIGAMES_ITEM; | |
| 41 | public static final ItemStack HUNGERGAMES_ITEM; | |
| 42 | public static final ItemStack PAINTBALL_ITEM; | |
| 43 | public static final ItemStack GOLDMINE_ITEM; | |
| 44 | ||
| 45 | public static final ItemStack[] MENU_ITEMS; | |
| 46 | - | public static final List<String> games = Arrays.asList(new String[] {"hg", "sg", "ipaint", "tict"});
|
| 46 | + | |
| 47 | public static final List<String> games = Arrays.asList(new String[] {"hg", "sg", "ipaint", "tict", "goldmine"});
| |
| 48 | ||
| 49 | static {
| |
| 50 | EMPTY_ITEM = new ItemStack(Material.AIR); | |
| 51 | ||
| 52 | ItemMeta meta; | |
| 53 | ArrayList<String> lore; | |
| 54 | ||
| 55 | {
| |
| 56 | CUBETOWN_ITEM = new ItemStack(Material.EMERALD); | |
| 57 | meta = CUBETOWN_ITEM.getItemMeta(); | |
| 58 | meta.setDisplayName(ChatColor.LIGHT_PURPLE + "Coming Soon!"); | |
| 59 | lore = new ArrayList<String>(); | |
| 60 | lore.add("§8Coming Soon. Very Soon!");
| |
| 61 | meta.setLore(lore); | |
| 62 | CUBETOWN_ITEM.setItemMeta(meta); | |
| 63 | } | |
| 64 | ||
| 65 | {
| |
| 66 | MINIGAMES_ITEM = new ItemStack(Material.IRON_SWORD); | |
| 67 | meta = MINIGAMES_ITEM.getItemMeta(); | |
| 68 | meta.setDisplayName(ChatColor.AQUA + "Mini Games"); | |
| 69 | lore = new ArrayList<String>(); | |
| 70 | lore.add("§8Klicke, um §3zu den MiniGames zu kommen!");
| |
| 71 | meta.setLore(lore); | |
| 72 | MINIGAMES_ITEM.setItemMeta(meta); | |
| 73 | } | |
| 74 | ||
| 75 | {
| |
| 76 | HUNGERGAMES_ITEM = new ItemStack(Material.BOW); | |
| 77 | meta = HUNGERGAMES_ITEM.getItemMeta(); | |
| 78 | meta.setDisplayName(ChatColor.GOLD + "Kit HungerGames"); | |
| 79 | lore = new ArrayList<String>(); | |
| 80 | lore.add("§8Klicke, um §3zu den HungerGames Servern zu kommen!");
| |
| 81 | meta.setLore(lore); | |
| 82 | HUNGERGAMES_ITEM.setItemMeta(meta); | |
| 83 | } | |
| 84 | ||
| 85 | {
| |
| 86 | PAINTBALL_ITEM = new ItemStack(Material.SNOW_BALL); | |
| 87 | meta = PAINTBALL_ITEM.getItemMeta(); | |
| 88 | meta.setDisplayName(ChatColor.GREEN + "Paintball"); | |
| 89 | lore = new ArrayList<String>(); | |
| 90 | lore.add("§8Klicke, um §3zum Paintball Server zu kommen!");
| |
| 91 | meta.setLore(lore); | |
| 92 | PAINTBALL_ITEM.setItemMeta(meta); | |
| 93 | } | |
| 94 | - | MENU_ITEMS = new ItemStack[] { EMPTY_ITEM, HUNGERGAMES_ITEM, EMPTY_ITEM, PAINTBALL_ITEM, EMPTY_ITEM, MINIGAMES_ITEM, EMPTY_ITEM, CUBETOWN_ITEM, EMPTY_ITEM};
|
| 94 | + | |
| 95 | {
| |
| 96 | GOLDMINE_ITEM = new ItemStack(Material.GOLD_NUGGET); | |
| 97 | meta = GOLDMINE_ITEM.getItemMeta(); | |
| 98 | meta.setDisplayName(ChatColor.MAGENTA + "Gold Mine"); | |
| 99 | lore = new ArrayList<String>(); | |
| 100 | lore.add("§8Klicke, um §3mine for gold!");
| |
| 101 | meta.setLore(lore); | |
| 102 | GOLDMINE_ITEM.setItemMeta(meta); | |
| 103 | } | |
| 104 | ||
| 105 | MENU_ITEMS = new ItemStack[] { HUNGERGAMES_ITEM, EMPTY_ITEM, PAINTBALL_ITEM, EMPTY_ITEM, MINIGAMES_ITEM, EMPTY_ITEM, CUBETOWN_ITEM, EMPTY_ITEM, GOLDMINE_ITEM };
| |
| 106 | } | |
| 107 | ||
| 108 | public Permission permChat; | |
| 109 | public Permission permHubset; | |
| 110 | ||
| 111 | public void onEnable() {
| |
| 112 | Bukkit.getPluginManager().registerEvents(this, this); | |
| 113 | loadDefaults(); | |
| 114 | permChat = getServer().getPluginManager().getPermission("hub.chat");
| |
| 115 | permHubset = getServer().getPluginManager().getPermission("hub.setloc");
| |
| 116 | ||
| 117 | saveConfig(); | |
| 118 | } | |
| 119 | ||
| 120 | public void onDisable() {
| |
| 121 | saveConfig(); | |
| 122 | } | |
| 123 | ||
| 124 | private void loadDefaults() {
| |
| 125 | FileConfiguration config = getConfig(); | |
| 126 | config.options().header("HubLobby // TheMineTV by fkfabian & De24");
| |
| 127 | ConfigurationSection hg = getConfig().getConfigurationSection("hg");
| |
| 128 | if (hg == null) {
| |
| 129 | hg = getConfig().createSection("hg");
| |
| 130 | } | |
| 131 | hg.addDefault("enabled", false);
| |
| 132 | ConfigurationSection ipaint = getConfig().getConfigurationSection("ipaint");
| |
| 133 | if (ipaint == null) {
| |
| 134 | ipaint = getConfig().createSection("ipaint");
| |
| 135 | } | |
| 136 | ipaint.addDefault("enabled", false);
| |
| 137 | ConfigurationSection sg = getConfig().getConfigurationSection("sg");
| |
| 138 | if (sg == null) {
| |
| 139 | sg = getConfig().createSection("sg");
| |
| 140 | } | |
| 141 | sg.addDefault("enabled", false);
| |
| 142 | ConfigurationSection tict = getConfig().getConfigurationSection("tict");
| |
| 143 | if (tict == null) {
| |
| 144 | tict = getConfig().createSection("tict");
| |
| 145 | } | |
| 146 | tict.addDefault("enabled", false);
| |
| 147 | ConfigurationSection goldmine = getConfig().getConfigurationSection("goldmine");
| |
| 148 | if (goldmine == null) {
| |
| 149 | goldmine = getConfig().createSection("goldmine");
| |
| 150 | } | |
| 151 | goldmine.addDefault("enabled", false);
| |
| 152 | } | |
| 153 | ||
| 154 | public boolean onCommand(CommandSender sender, Command cmd, String cmdLabel, String[] args) {
| |
| 155 | if (cmd.getName().equalsIgnoreCase("hubset")) {
| |
| 156 | if (!sender.hasPermission(permHubset)) {
| |
| 157 | return false; | |
| 158 | } else if (args.length == 0) {
| |
| 159 | return false; | |
| 160 | } else if (args[0].equals("clear")) {
| |
| 161 | // Clear a certain hub destination | |
| 162 | if (args.length == 1) {
| |
| 163 | return false; | |
| 164 | } | |
| 165 | String game = args[1]; | |
| 166 | if (games.contains(game)) {
| |
| 167 | ConfigurationSection config = getConfig().getConfigurationSection(game); | |
| 168 | config.set("enabled", false);
| |
| 169 | sender.sendMessage("§2[HubLobby]§f Disabled " + game);
| |
| 170 | return true; | |
| 171 | } else {
| |
| 172 | sender.sendMessage("§2[HubLobby]§a Unknown game " + game + ". Did you spell it wrong?");
| |
| 173 | return false; | |
| 174 | } | |
| 175 | } else {
| |
| 176 | // Set a certain hub destination | |
| 177 | String game = args[0]; | |
| 178 | if (!games.contains(game)) {
| |
| 179 | sender.sendMessage("§2[HubLobby]§a Unknown game " + game + ". Did you spell it wrong?");
| |
| 180 | return false; | |
| 181 | } | |
| 182 | Player p; | |
| 183 | if (args.length == 2) {
| |
| 184 | p = getServer().getPlayer(args[1]); | |
| 185 | if (p == null) {
| |
| 186 | sender.sendMessage("§2[HubLobby]§a Could not find player " + args[1]);
| |
| 187 | return false; | |
| 188 | } | |
| 189 | } else if (sender instanceof Player) {
| |
| 190 | p = (Player) sender; | |
| 191 | } else {
| |
| 192 | sender.sendMessage("§2[HubLobby]§a A player is required when run from console");
| |
| 193 | return false; | |
| 194 | } | |
| 195 | return processLocationSet(p, game); | |
| 196 | } | |
| 197 | } | |
| 198 | return false; | |
| 199 | } | |
| 200 | ||
| 201 | private boolean processLocationSet(Player p, String game) {
| |
| 202 | ConfigurationSection section = getConfig().getConfigurationSection(game); | |
| 203 | Location loc = p.getLocation(); | |
| 204 | section.set("X", loc.getX());
| |
| 205 | section.set("Y", loc.getY());
| |
| 206 | section.set("Z", loc.getZ());
| |
| 207 | section.set("yaw", loc.getYaw());
| |
| 208 | section.set("pitch", loc.getPitch());
| |
| 209 | section.set("world", loc.getWorld().getName());
| |
| 210 | section.set("enabled", true);
| |
| 211 | saveConfig(); | |
| 212 | p.sendMessage("§2[HubLobby]§f Set location for " + game);
| |
| 213 | return true; | |
| 214 | } | |
| 215 | ||
| 216 | @EventHandler | |
| 217 | public void onInvOpen(InventoryOpenEvent e) {
| |
| 218 | if (e.getInventory().getSize() != 9) {
| |
| 219 | // This is not our menu inventory - disallow | |
| 220 | e.setCancelled(true); | |
| 221 | } | |
| 222 | } | |
| 223 | ||
| 224 | @EventHandler | |
| 225 | public void onClick(InventoryClickEvent e) {
| |
| 226 | if (e.getInventory().getSize() != 9) {
| |
| 227 | // This is not our menu inventory - ignore | |
| 228 | return; | |
| 229 | } | |
| 230 | if (!(e.getWhoClicked() instanceof Player)) {
| |
| 231 | // This isn't a player? ignore. | |
| 232 | return; | |
| 233 | } | |
| 234 | // Don't want default behavior at all | |
| 235 | e.setResult(Result.DENY); | |
| 236 | Player p = (Player) e.getWhoClicked(); | |
| 237 | ItemStack clicked = e.getCurrentItem(); | |
| 238 | if (clicked == CUBETOWN_ITEM) {
| |
| 239 | p.closeInventory(); | |
| 240 | sendPlayer(p, "tict"); | |
| 241 | } else if (clicked == MINIGAMES_ITEM) {
| |
| 242 | p.closeInventory(); | |
| 243 | sendPlayer(p, "sg"); | |
| 244 | } else if (clicked == HUNGERGAMES_ITEM) {
| |
| 245 | p.closeInventory(); | |
| 246 | sendPlayer(p, "hg"); | |
| 247 | } else if (clicked == PAINTBALL_ITEM) {
| |
| 248 | p.closeInventory(); | |
| 249 | sendPlayer(p, "ipaint"); | |
| 250 | } else if (clicked == GOLDMINE_ITEM) {
| |
| 251 | p.closeInventory(); | |
| 252 | sendPlayer(p, "goldmine"); | |
| 253 | } | |
| 254 | } | |
| 255 | ||
| 256 | private void sendPlayer(Player p, String game) {
| |
| 257 | ConfigurationSection config = getConfig().getConfigurationSection(game); | |
| 258 | if (config.getBoolean("enabled")) {
| |
| 259 | Location dest = new Location(Bukkit.getWorld(config.getString("world")), config.getDouble("X"), config.getDouble("Y"), config.getDouble("Z"), (float)config.getDouble("yaw"), (float)config.getDouble("pitch"));
| |
| 260 | p.teleport(dest); | |
| 261 | } else {
| |
| 262 | p.sendMessage("§2[HubLobby]§f Uh oh! That game is disabled. :(");
| |
| 263 | } | |
| 264 | } | |
| 265 | ||
| 266 | @EventHandler | |
| 267 | public void test(AsyncPlayerChatEvent e) {
| |
| 268 | if (!(e.getPlayer().hasPermission("hub.chat"))) {
| |
| 269 | e.setCancelled(true); | |
| 270 | e.getPlayer().sendMessage("§eLobby-Chat is disabled for non-premium!");
| |
| 271 | } | |
| 272 | } | |
| 273 | ||
| 274 | ||
| 275 | @EventHandler | |
| 276 | public void onPlayerDrop(PlayerDropItemEvent event) {
| |
| 277 | event.setCancelled(true); | |
| 278 | } | |
| 279 | ||
| 280 | ||
| 281 | @EventHandler | |
| 282 | public void onEntityDamage(EntityDamageEvent e) {
| |
| 283 | if ((e.getEntity() instanceof Player)) {
| |
| 284 | e.getCause(); | |
| 285 | if (e.getCause() == EntityDamageEvent.DamageCause.VOID) {
| |
| 286 | e.getEntity().teleport(e.getEntity().getWorld().getSpawnLocation()); | |
| 287 | } | |
| 288 | e.setCancelled(true); | |
| 289 | e.getEntity().setFireTicks(0); | |
| 290 | } | |
| 291 | } | |
| 292 | ||
| 293 | ||
| 294 | @EventHandler | |
| 295 | public void onQuit(PlayerQuitEvent e) {
| |
| 296 | // Suppress quit message | |
| 297 | e.setQuitMessage("");
| |
| 298 | } | |
| 299 | ||
| 300 | @EventHandler | |
| 301 | public void onJoin(PlayerJoinEvent e) {
| |
| 302 | // Adventure mode | |
| 303 | e.setJoinMessage("");
| |
| 304 | e.getPlayer().setGameMode(GameMode.ADVENTURE); | |
| 305 | // Give compass item | |
| 306 | ItemStack co = new ItemStack(Material.COMPASS); | |
| 307 | ItemMeta cometa = co.getItemMeta(); | |
| 308 | cometa.setDisplayName("§6§lTeleporter");
| |
| 309 | co.setItemMeta(cometa); | |
| 310 | Player p = e.getPlayer(); | |
| 311 | p.getInventory().clear(); | |
| 312 | p.getInventory().addItem(co); | |
| 313 | } | |
| 314 | ||
| 315 | @EventHandler | |
| 316 | public void onRightClick(PlayerInteractEvent event) {
| |
| 317 | Player p = event.getPlayer(); | |
| 318 | if (((event.getAction() == Action.RIGHT_CLICK_AIR) || (event.getAction() == Action.RIGHT_CLICK_BLOCK) && event.getPlayer().getItemInHand().getTypeId() == 345)) {
| |
| 319 | Inventory inv = getServer().createInventory(p, 9, "§8TheMineTV Hub"); | |
| 320 | inv.setContents(MENU_ITEMS); | |
| 321 | p.openInventory(inv); | |
| 322 | } | |
| 323 | } | |
| 324 | ||
| 325 | @EventHandler | |
| 326 | public void onPlayerJoin(PlayerJoinEvent e) {
| |
| 327 | if (!(e.getPlayer().hasPermission("clank.sichtbar"))) {
| |
| 328 | Player p = (Player) e.getPlayer(); | |
| 329 | for (Player players : Bukkit.getOnlinePlayers()) {
| |
| 330 | //players.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 500000, 2 )); | |
| 331 | for (PotionEffect effect : players.getActivePotionEffects()) | |
| 332 | players.removePotionEffect(effect.getType()); | |
| 333 | p.hidePlayer(players); | |
| 334 | players.hidePlayer(p); | |
| 335 | } | |
| 336 | } | |
| 337 | } | |
| 338 | } |