Advertisement
riking

fixed

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