778 lines
42 KiB
Java
778 lines
42 KiB
Java
package de.nexuslobby.modules.gadgets;
|
|
|
|
import de.nexuslobby.NexusLobby;
|
|
import de.nexuslobby.api.Module;
|
|
import java.util.ArrayList;
|
|
import java.util.HashMap;
|
|
import java.util.HashSet;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
import java.util.UUID;
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.ChatColor;
|
|
import org.bukkit.Location;
|
|
import org.bukkit.Material;
|
|
import org.bukkit.Particle;
|
|
import org.bukkit.Sound;
|
|
import org.bukkit.World;
|
|
import org.bukkit.entity.Entity;
|
|
import org.bukkit.entity.EntityType;
|
|
import org.bukkit.entity.LivingEntity;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.entity.Slime;
|
|
import org.bukkit.entity.Zombie;
|
|
import org.bukkit.event.EventHandler;
|
|
import org.bukkit.event.HandlerList;
|
|
import org.bukkit.event.Listener;
|
|
import org.bukkit.event.block.Action;
|
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
|
import org.bukkit.event.player.PlayerFishEvent;
|
|
import org.bukkit.event.player.PlayerInteractAtEntityEvent;
|
|
import org.bukkit.event.player.PlayerInteractEvent;
|
|
import org.bukkit.event.player.PlayerMoveEvent;
|
|
import org.bukkit.event.player.PlayerQuitEvent;
|
|
import org.bukkit.event.player.PlayerUnleashEntityEvent;
|
|
import org.bukkit.event.player.PlayerFishEvent.State;
|
|
import org.bukkit.inventory.Inventory;
|
|
import org.bukkit.inventory.InventoryHolder;
|
|
import org.bukkit.inventory.ItemFlag;
|
|
import org.bukkit.inventory.ItemStack;
|
|
import org.bukkit.inventory.meta.ItemMeta;
|
|
|
|
public class GadgetModule implements Module, Listener {
|
|
private final Map<UUID, Integer> discoTasks = new HashMap();
|
|
private final Map<UUID, Balloon> activeBalloons = new HashMap();
|
|
private final Map<UUID, ParticleEffect> activeEffects = new HashMap();
|
|
private final Set<UUID> activeShields = new HashSet();
|
|
private final Map<UUID, Long> meteorCooldowns = new HashMap();
|
|
private final Map<UUID, Long> freezeCooldowns = new HashMap();
|
|
private final Map<UUID, Long> grapplingCooldowns = new HashMap();
|
|
private static final long METEOR_CD_MS = 15000L;
|
|
private static final long FREEZE_CD_MS = 10000L;
|
|
private static final long GRAPPLING_CD_MS = 3000L;
|
|
private final String MAIN_TITLE = "§b§lGadgets §8- §7Menü";
|
|
private final String BALLOON_TITLE = "§b§lGadgets §8- §eBallons";
|
|
private final String PARTICLE_TITLE = "§b§lGadgets §8- §dPartikel";
|
|
private final String FUN_TITLE = "§b§lGadgets §8- §6Lustiges";
|
|
private final String HAT_TITLE = "§b§lGadgets §8- §aHüte & Köpfe";
|
|
private final String PET_TITLE = "§b§lGadgets §8- §dBegleiter";
|
|
private final String PET2_TITLE = "§b§lGadgets §8- §dBegleiter §7(2)";
|
|
private final String PET3_TITLE = "§b§lGadgets §8- §dBegleiter §7(3)";
|
|
|
|
public String getName() {
|
|
return "Gadgets";
|
|
}
|
|
|
|
public void onEnable() {
|
|
Bukkit.getPluginManager().registerEvents(this, NexusLobby.getInstance());
|
|
PetManager.register();
|
|
Bukkit.getScheduler().runTaskTimer(NexusLobby.getInstance(), () -> {
|
|
PetManager.updatePets();
|
|
this.activeBalloons.values().forEach(Balloon::update);
|
|
|
|
for(Player p : Bukkit.getOnlinePlayers()) {
|
|
UUID uuid = p.getUniqueId();
|
|
this.handleSpecialHatEffects(p);
|
|
if (this.activeEffects.containsKey(uuid)) {
|
|
((ParticleEffect)this.activeEffects.get(uuid)).update(p);
|
|
}
|
|
|
|
if (this.activeShields.contains(uuid)) {
|
|
ShieldTask.handleShield(p);
|
|
}
|
|
}
|
|
|
|
}, 1L, 1L);
|
|
}
|
|
|
|
private boolean checkAndSetCooldown(Player player, Map<UUID, Long> cdMap, long durationMs, String gadgetName) {
|
|
long now = System.currentTimeMillis();
|
|
long last = (Long)cdMap.getOrDefault(player.getUniqueId(), 0L);
|
|
long remaining = durationMs - (now - last);
|
|
if (remaining > 0L) {
|
|
long secLeft = (long)Math.ceil((double)remaining / (double)1000.0F);
|
|
player.sendMessage("§8[§6Nexus§8] §c" + gadgetName + " §7hat noch §e" + secLeft + "s §7Cooldown.");
|
|
player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_BASS, 0.5F, 0.8F);
|
|
return false;
|
|
} else {
|
|
cdMap.put(player.getUniqueId(), now);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onInteractAtEntity(PlayerInteractAtEntityEvent event) {
|
|
if (event.getRightClicked().getScoreboardTags().contains("nexus_balloon")) {
|
|
event.setCancelled(true);
|
|
}
|
|
|
|
}
|
|
|
|
@EventHandler
|
|
public void onUnleash(PlayerUnleashEntityEvent event) {
|
|
if (event.getEntity().getScoreboardTags().contains("nexus_balloon")) {
|
|
event.setCancelled(true);
|
|
}
|
|
|
|
}
|
|
|
|
@EventHandler
|
|
public void onInteract(PlayerInteractEvent event) {
|
|
ItemStack item = event.getItem();
|
|
if (item != null && item.hasItemMeta() && item.getItemMeta().hasDisplayName()) {
|
|
String name = item.getItemMeta().getDisplayName();
|
|
if (event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
|
|
Player player = event.getPlayer();
|
|
if (!GadgetShield.isProtected(player) || !name.equals("§b§lFreeze-Ray") && !name.equals("§c§lMeteorit")) {
|
|
if (name.equals("§b§lFreeze-Ray")) {
|
|
event.setCancelled(true);
|
|
if (this.checkAndSetCooldown(player, this.freezeCooldowns, 10000L, "§b§lFreeze-Ray")) {
|
|
FreezeRay.shoot(player);
|
|
}
|
|
} else if (name.equals("§6§lPaintball-Gun")) {
|
|
PaintballGun.shoot(player);
|
|
event.setCancelled(true);
|
|
} else if (name.equals("§c§lMeteorit")) {
|
|
event.setCancelled(true);
|
|
if (this.checkAndSetCooldown(player, this.meteorCooldowns, 15000L, "§c§lMeteorit")) {
|
|
MeteorStrike.launch(player);
|
|
}
|
|
}
|
|
|
|
} else {
|
|
if (GadgetShield.isAdminShielded(player)) {
|
|
player.sendMessage("§8[§6Nexus§8] §cDein Gadget-Schutz ist aktiv. Deaktiviere ihn mit §e/nexus gadgetshield§c.");
|
|
} else {
|
|
player.sendMessage("§8[§6Parkour§8] §cGadgets können während des Parkours nicht benutzt werden.");
|
|
}
|
|
|
|
event.setCancelled(true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onFish(PlayerFishEvent event) {
|
|
Player player = event.getPlayer();
|
|
ItemStack item = player.getInventory().getItemInMainHand();
|
|
if (item.getType() == Material.FISHING_ROD && item.hasItemMeta() && item.getItemMeta().hasDisplayName()) {
|
|
if (item.getItemMeta().getDisplayName().equals("§b§lEnterhaken")) {
|
|
if (event.getState() == State.IN_GROUND || event.getState() == State.REEL_IN || event.getState() == State.CAUGHT_ENTITY) {
|
|
if (event.getHook() == null) {
|
|
return;
|
|
}
|
|
|
|
if (GadgetShield.isProtected(player)) {
|
|
player.sendMessage("§8[§6Nexus§8] §cDer Enterhaken ist gerade nicht verfügbar.");
|
|
return;
|
|
}
|
|
|
|
if (!this.checkAndSetCooldown(player, this.grapplingCooldowns, 3000L, "§b§lEnterhaken")) {
|
|
return;
|
|
}
|
|
|
|
GrapplingHook.pullPlayer(player, event.getHook().getLocation());
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
@EventHandler
|
|
public void onPlayerMove(PlayerMoveEvent event) {
|
|
if (FreezeRay.isFrozen(event.getPlayer().getUniqueId()) && (event.getFrom().getX() != event.getTo().getX() || event.getFrom().getZ() != event.getTo().getZ())) {
|
|
event.setTo(event.getFrom().setDirection(event.getTo().getDirection()));
|
|
}
|
|
|
|
}
|
|
|
|
private void handleSpecialHatEffects(Player p) {
|
|
ItemStack hat = p.getInventory().getHelmet();
|
|
if (hat != null && hat.getType() != Material.AIR) {
|
|
switch (hat.getType()) {
|
|
case CAMPFIRE:
|
|
p.getWorld().spawnParticle(Particle.CAMPFIRE_COSY_SMOKE, p.getLocation().add((double)0.0F, 2.2, (double)0.0F), 1, 0.05, 0.05, 0.05, 0.02);
|
|
break;
|
|
case SPAWNER:
|
|
p.getWorld().spawnParticle(Particle.FLAME, p.getLocation().add((double)0.0F, 2.1, (double)0.0F), 1, 0.12, 0.12, 0.12, 0.02);
|
|
break;
|
|
case SEA_LANTERN:
|
|
case BEACON:
|
|
p.getWorld().spawnParticle(Particle.END_ROD, p.getLocation().add((double)0.0F, 2.1, (double)0.0F), 1, 0.1, 0.1, 0.1, 0.03);
|
|
break;
|
|
case ENCHANTING_TABLE:
|
|
p.getWorld().spawnParticle(Particle.ENCHANT, p.getLocation().add((double)0.0F, 2.3, (double)0.0F), 1, 0.2, 0.2, 0.2, (double)0.5F);
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
public void openGUI(Player player) {
|
|
Inventory gui = Bukkit.createInventory((InventoryHolder)null, 27, "§b§lGadgets §8- §7Menü");
|
|
this.fillEdges(gui);
|
|
gui.setItem(10, this.createItem(Material.LEAD, "§e§lBallons", "§7Wähle einen fliegenden Begleiter"));
|
|
gui.setItem(11, this.createItem(Material.GOLDEN_HELMET, "§a§lHüte", "§7Setze dir etwas auf den Kopf"));
|
|
gui.setItem(13, this.createItem(Material.BONE, "§d§lBegleiter", "§7Echte Tiere, die dir folgen"));
|
|
gui.setItem(15, this.createItem(Material.FIREWORK_ROCKET, "§6§lLustiges", "§7Witzige Effekte"));
|
|
gui.setItem(16, this.createItem(Material.NETHER_STAR, "§d§lPartikel", "§7Magische Auren & Effekte"));
|
|
gui.setItem(22, this.createItem(Material.BARRIER, "§c§lStopp", "§7Alle Gadgets entfernen"));
|
|
player.openInventory(gui);
|
|
}
|
|
|
|
private void openHatGUI(Player player) {
|
|
Inventory gui = Bukkit.createInventory((InventoryHolder)null, 45, "§b§lGadgets §8- §aHüte & Köpfe");
|
|
this.fillEdges(gui);
|
|
gui.setItem(10, this.createItem(Material.JACK_O_LANTERN, "§6Kürbis-Hut", "§7Es ist immer Halloween!"));
|
|
gui.setItem(11, this.createItem(Material.SEA_LANTERN, "§bMeeres-Leuchten", "§7§oEffekt: Glitzern"));
|
|
gui.setItem(12, this.createItem(Material.GLOWSTONE, "§eGlowstone-Kopf", "§7Werde zur Lampe"));
|
|
gui.setItem(13, this.createItem(Material.TNT, "§cExplosiv-Hut", "§7Vorsicht, heiß!"));
|
|
gui.setItem(14, this.createItem(Material.GLASS, "§fAstronaut", "§7Bereit für den Mond?"));
|
|
gui.setItem(15, this.createItem(Material.DRAGON_HEAD, "§5Enderdrache", "§7Der König der Lüfte"));
|
|
gui.setItem(16, this.createItem(Material.CAKE, "§dKuchen-Kopf", "§7Jeder mag Kuchen!"));
|
|
gui.setItem(19, this.createItem(Material.SLIME_BLOCK, "§aGlibber-Block", "§7Ziemlich klebrig..."));
|
|
gui.setItem(20, this.createItem(Material.MELON, "§aMelonen-Helm", "§7Frisch und saftig"));
|
|
gui.setItem(21, this.createItem(Material.HAY_BLOCK, "§eStrohhut", "§7Sommer auf dem Land"));
|
|
gui.setItem(22, this.createItem(Material.SPAWNER, "§8Monster-Käfig", "§7§oEffekt: Flammen"));
|
|
gui.setItem(23, this.createItem(Material.CRAFTING_TABLE, "§6Werkbank", "§7Immer am Basteln"));
|
|
gui.setItem(24, this.createItem(Material.BOOKSHELF, "§fBücherregal", "§7Ein wahrer Schlaukopf"));
|
|
gui.setItem(25, this.createItem(Material.HONEY_BLOCK, "§6Honig-Hut", "§7Süß und klebrig"));
|
|
gui.setItem(28, this.createItem(Material.GOLD_BLOCK, "§6Gold-Bonze", "§7Zeig was du hast"));
|
|
gui.setItem(29, this.createItem(Material.DIAMOND_ORE, "§bDiamant-Erz", "§7Bau mich bloß nicht ab!"));
|
|
gui.setItem(30, this.createItem(Material.BEACON, "§fLeuchtfeuer", "§7§oEffekt: Glitzern"));
|
|
gui.setItem(31, this.createItem(Material.CONDUIT, "§3Auge des Meeres", "§7Die Macht von Atlantis"));
|
|
gui.setItem(32, this.createItem(Material.ENCHANTING_TABLE, "§dMagier", "§7§oEffekt: Runen"));
|
|
gui.setItem(33, this.createItem(Material.CAMPFIRE, "§cHeißer Kopf", "§7§oEffekt: Rauch"));
|
|
gui.setItem(34, this.createItem(Material.SKELETON_SKULL, "§7Skelett", "§7Ein wenig gruselig"));
|
|
gui.setItem(36, this.createItem(Material.ARROW, "§7Zurück", "§8Zum Hauptmenü"));
|
|
gui.setItem(40, this.createItem(Material.NETHER_STAR, "§7Hauptmenü", "§8Zum Gadget-Hauptmenü"));
|
|
player.openInventory(gui);
|
|
}
|
|
|
|
private void openPetGUI(Player player) {
|
|
Inventory gui = Bukkit.createInventory((InventoryHolder)null, 54, "§b§lGadgets §8- §dBegleiter");
|
|
this.fillEdges(gui);
|
|
gui.setItem(10, this.createItem(Material.BONE, "§fBaby-Wolf", "§7Ein kleiner treuer Begleiter"));
|
|
gui.setItem(11, this.createItem(Material.BONE, "§7Baby-Ashen Wolf", "§7Ein kleiner Aschen-Wolf"));
|
|
gui.setItem(12, this.createItem(Material.CAT_SPAWN_EGG, "§6Baby-Katze", "§7Ein kleiner Schmusefreund"));
|
|
gui.setItem(13, this.createItem(Material.PANDA_SPAWN_EGG, "§aBaby-Panda", "§7Ein kleiner Flauschball"));
|
|
gui.setItem(14, this.createItem(Material.FOX_SPAWN_EGG, "§6Baby-Fuchs", "§7Ein kleiner Schlaukopf"));
|
|
gui.setItem(15, this.createItem(Material.FROG_SPAWN_EGG, "§aBaby-Frosch", "§7Ein kleiner Hopsfreund"));
|
|
gui.setItem(16, this.createItem(Material.TURTLE_SPAWN_EGG, "§2Baby-Schildkröte", "§7Ein kleiner Panzenträger"));
|
|
gui.setItem(28, this.createItem(Material.FOX_SPAWN_EGG, "§bBaby-Schneefuchs", "§7Ein kleiner Schnee-Fuchs"));
|
|
gui.setItem(29, this.createItem(Material.RABBIT_SPAWN_EGG, "§fBaby-Kaninchen", "§7Ein kleiner Flitzer"));
|
|
gui.setItem(30, this.createItem(Material.AXOLOTL_SPAWN_EGG, "§dBaby-Axolotl", "§7Ein kleiner Wasserfreund"));
|
|
gui.setItem(31, this.createItem(Material.OCELOT_SPAWN_EGG, "§6Baby-Ozelot", "§7Ein kleiner Schleicher"));
|
|
gui.setItem(32, this.createItem(Material.POLAR_BEAR_SPAWN_EGG, "§fBaby-Eisbär", "§7Ein kleiner Eisbär"));
|
|
gui.setItem(33, this.createItem(Material.BEE_SPAWN_EGG, "§eBaby-Biene", "§7Eine kleine Biene"));
|
|
gui.setItem(34, this.createItem(Material.CHICKEN_SPAWN_EGG, "§fKüken", "§7Ein kleines Huhn"));
|
|
gui.setItem(19, this.createItem(Material.BONE, "§fWolf", "§7Ein treuer Begleiter"));
|
|
gui.setItem(20, this.createItem(Material.BONE, "§7Ashen Wolf", "§7Ein seltener Aschen-Wolf"));
|
|
gui.setItem(21, this.createItem(Material.CAT_SPAWN_EGG, "§6Katze", "§7Ein verschmuster Freund"));
|
|
gui.setItem(22, this.createItem(Material.PANDA_SPAWN_EGG, "§aPanda", "§7Ein gemütlicher Zeitgenosse"));
|
|
gui.setItem(23, this.createItem(Material.FOX_SPAWN_EGG, "§6Fuchs", "§7Ein schlauer Begleiter"));
|
|
gui.setItem(24, this.createItem(Material.FROG_SPAWN_EGG, "§aFrosch", "§7Ein echter Hopsmeister"));
|
|
gui.setItem(25, this.createItem(Material.TURTLE_SPAWN_EGG, "§2Schildkröte", "§7Gemütlich und gelassen"));
|
|
gui.setItem(37, this.createItem(Material.FOX_SPAWN_EGG, "§bSchneefuchs", "§7Ein Fuchs aus kalten Biomen"));
|
|
gui.setItem(38, this.createItem(Material.RABBIT_SPAWN_EGG, "§fKaninchen", "§7Ein schneller Hopper"));
|
|
gui.setItem(39, this.createItem(Material.AXOLOTL_SPAWN_EGG, "§dAxolotl", "§7Ein seltener Wasserfreund"));
|
|
gui.setItem(40, this.createItem(Material.OCELOT_SPAWN_EGG, "§6Ozelot", "§7Ein wachsamer Begleiter"));
|
|
gui.setItem(41, this.createItem(Material.POLAR_BEAR_SPAWN_EGG, "§fEisbär", "§7Ein starker Eisbär"));
|
|
gui.setItem(42, this.createItem(Material.BEE_SPAWN_EGG, "§eBiene", "§7Eine fleißige Biene"));
|
|
gui.setItem(43, this.createItem(Material.CHICKEN_SPAWN_EGG, "§fHuhn", "§7Ein gackerndes Huhn"));
|
|
gui.setItem(45, this.createItem(Material.ARROW, "§7Zurück", "§8Zum Hauptmenü"));
|
|
gui.setItem(49, this.createItem(Material.NETHER_STAR, "§7Hauptmenü", "§8Zum Gadget-Hauptmenü"));
|
|
gui.setItem(53, this.createItem(Material.ARROW, "§7Weiter", "§8Seite 2"));
|
|
player.openInventory(gui);
|
|
}
|
|
|
|
private void openPetGUI2(Player player) {
|
|
Inventory gui = Bukkit.createInventory((InventoryHolder)null, 54, "§b§lGadgets §8- §dBegleiter §7(2)");
|
|
this.fillEdges(gui);
|
|
gui.setItem(19, this.createItem(Material.ARMADILLO_SPAWN_EGG, "§7Baby-Armadillo", "§7Ein kleiner Gürteltier"));
|
|
gui.setItem(28, this.createItem(Material.ARMADILLO_SPAWN_EGG, "§7Armadillo", "§7Ein Gürteltier"));
|
|
gui.setItem(45, this.createItem(Material.ARROW, "§7Zurück", "§8Seite 1"));
|
|
gui.setItem(49, this.createItem(Material.NETHER_STAR, "§7Hauptmenü", "§8Zum Gadget-Hauptmenü"));
|
|
gui.setItem(53, this.createItem(Material.ARROW, "§7Weiter", "§8Seite 3"));
|
|
player.openInventory(gui);
|
|
}
|
|
|
|
private void openPetGUI3(Player player) {
|
|
Inventory gui = Bukkit.createInventory((InventoryHolder)null, 54, "§b§lGadgets §8- §dBegleiter §7(3)");
|
|
this.fillEdges(gui);
|
|
gui.setItem(19, this.createItem(Material.PARROT_SPAWN_EGG, "§cPapagei", "§7Ein bunter Begleiter"));
|
|
gui.setItem(20, this.createItem(Material.ALLAY_SPAWN_EGG, "§bAllay", "§7Ein magischer Helfer"));
|
|
gui.setItem(21, this.createItem(Material.SNIFFER_SPAWN_EGG, "§aSniffer", "§7Ein uraltes Tier"));
|
|
gui.setItem(45, this.createItem(Material.ARROW, "§7Zurück", "§8Seite 2"));
|
|
gui.setItem(49, this.createItem(Material.NETHER_STAR, "§7Hauptmenü", "§8Zum Gadget-Hauptmenü"));
|
|
player.openInventory(gui);
|
|
}
|
|
|
|
private void openBalloonGUI(Player player) {
|
|
Inventory gui = Bukkit.createInventory((InventoryHolder)null, 45, "§b§lGadgets §8- §eBallons");
|
|
this.fillEdges(gui);
|
|
Material[] wools = new Material[]{Material.WHITE_WOOL, Material.ORANGE_WOOL, Material.MAGENTA_WOOL, Material.LIGHT_BLUE_WOOL, Material.YELLOW_WOOL, Material.LIME_WOOL, Material.PINK_WOOL, Material.GRAY_WOOL, Material.CYAN_WOOL, Material.PURPLE_WOOL, Material.BLUE_WOOL, Material.BROWN_WOOL, Material.GREEN_WOOL, Material.RED_WOOL};
|
|
int slot = 10;
|
|
|
|
for(Material m : wools) {
|
|
if (slot == 17) {
|
|
slot = 19;
|
|
}
|
|
if (slot == 26) {
|
|
slot = 28;
|
|
}
|
|
|
|
gui.setItem(slot++, this.createItem(m, "§fBallon: " + m.name().replace("_WOOL", ""), "§7Klicke zum Ausrüsten"));
|
|
}
|
|
|
|
gui.setItem(36, this.createItem(Material.ARROW, "§7Zurück", "§8Zum Hauptmenü"));
|
|
gui.setItem(40, this.createItem(Material.NETHER_STAR, "§7Hauptmenü", "§8Zum Gadget-Hauptmenü"));
|
|
player.openInventory(gui);
|
|
}
|
|
|
|
private void openParticleGUI(Player player) {
|
|
Inventory gui = Bukkit.createInventory((InventoryHolder)null, 36, "§b§lGadgets §8- §dPartikel");
|
|
this.fillEdges(gui);
|
|
gui.setItem(11, this.createItem(Material.POPPY, "§cHerzchen-Aura", "§7Verbreite Liebe in der Lobby"));
|
|
gui.setItem(13, this.createItem(Material.BLAZE_POWDER, "§6Flammen-Ring", "§7Lass es brennen!"));
|
|
gui.setItem(15, this.createItem(Material.WATER_BUCKET, "§bRegenwolke", "§7Deine persönliche Abkühlung"));
|
|
gui.setItem(27, this.createItem(Material.ARROW, "§7Zurück", "§8Zum Hauptmenü"));
|
|
gui.setItem(31, this.createItem(Material.NETHER_STAR, "§7Hauptmenü", "§8Zum Gadget-Hauptmenü"));
|
|
player.openInventory(gui);
|
|
}
|
|
|
|
private void openFunGUI(Player player) {
|
|
Inventory gui = Bukkit.createInventory((InventoryHolder)null, 36, "§b§lGadgets §8- §6Lustiges");
|
|
this.fillEdges(gui);
|
|
gui.setItem(10, this.createItem(Material.FISHING_ROD, "§b§lEnterhaken", "§7Zieh dich durch die Luft! §8(3s CD)"));
|
|
gui.setItem(11, this.createItem(Material.PACKED_ICE, "§b§lFreeze-Ray", "§7Friere andere ein! §8(10s CD)"));
|
|
gui.setItem(12, this.createItem(Material.GOLDEN_HOE, "§6§lPaintball-Gun", "§7Male die Lobby bunt aus!"));
|
|
gui.setItem(13, this.createItem(Material.FEATHER, "§f§lMini-Tornado", "§7Wirbele dich herum!"));
|
|
gui.setItem(14, this.createItem(Material.FIRE_CHARGE, "§c§lMeteorit", "§7Lass es krachen! §8(15s CD)"));
|
|
gui.setItem(15, this.createItem(Material.SHIELD, "§5§lSchutzzone", "§7Halte andere auf Distanz"));
|
|
gui.setItem(16, this.createItem(Material.EGG, "§f§lChicken-Rain", "§7Gack-Gack! Hühner überall!"));
|
|
gui.setItem(19, this.createItem(Material.SLIME_BALL, "§a§lMob-Party", "§7Lustige Mini-Mobs tanzen um dich!"));
|
|
gui.setItem(20, this.createItem(Material.NOTE_BLOCK, "§d§lTanz-Emote", "§7Führe einen Tanz auf!"));
|
|
gui.setItem(21, this.createItem(Material.FIREWORK_ROCKET, "§c§lKonfetti-Kanone", "§7Schieße Konfetti in die Luft!"));
|
|
gui.setItem(22, this.createItem(Material.TNT, "§c§lFake-TNT", "§7Täusche andere mit einer harmlosen Explosion!"));
|
|
gui.setItem(27, this.createItem(Material.ARROW, "§7Zurück", "§8Zum Hauptmenü"));
|
|
gui.setItem(31, this.createItem(Material.NETHER_STAR, "§7Hauptmenü", "§8Zum Gadget-Hauptmenü"));
|
|
player.openInventory(gui);
|
|
}
|
|
|
|
@EventHandler
|
|
public void onInventoryClick(InventoryClickEvent event) {
|
|
String title = event.getView().getTitle();
|
|
if (title.startsWith("§b§lGadgets")) {
|
|
event.setCancelled(true);
|
|
final Player player = (Player)event.getWhoClicked();
|
|
ItemStack item = event.getCurrentItem();
|
|
if (item != null && item.getType() != Material.AIR) {
|
|
if (item.getType() == Material.ARROW) {
|
|
String displayName = item.hasItemMeta() && item.getItemMeta().hasDisplayName() ? item.getItemMeta().getDisplayName() : "";
|
|
if (displayName.equals("§7Weiter")) {
|
|
if (title.equals("§b§lGadgets §8- §dBegleiter")) {
|
|
this.openPetGUI2(player);
|
|
return;
|
|
}
|
|
|
|
if (title.equals("§b§lGadgets §8- §dBegleiter §7(2)")) {
|
|
this.openPetGUI3(player);
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (displayName.equals("§7Zurück")) {
|
|
if (title.equals("§b§lGadgets §8- §dBegleiter §7(2)")) {
|
|
this.openPetGUI(player);
|
|
return;
|
|
}
|
|
|
|
if (title.equals("§b§lGadgets §8- §dBegleiter §7(3)")) {
|
|
this.openPetGUI2(player);
|
|
return;
|
|
}
|
|
|
|
this.openGUI(player);
|
|
return;
|
|
}
|
|
}
|
|
|
|
if (item.getType() == Material.NETHER_STAR && title.startsWith("§b§lGadgets §8- §d")
|
|
|| item.getType() == Material.NETHER_STAR && title.equals("§b§lGadgets §8- §aHüte & Köpfe")
|
|
|| item.getType() == Material.NETHER_STAR && title.equals("§b§lGadgets §8- §eBallons")
|
|
|| item.getType() == Material.NETHER_STAR && title.equals("§b§lGadgets §8- §dPartikel")
|
|
|| item.getType() == Material.NETHER_STAR && title.equals("§b§lGadgets §8- §6Lustiges")) {
|
|
this.openGUI(player);
|
|
return;
|
|
}
|
|
|
|
if (title.equals("§b§lGadgets §8- §7Menü")) {
|
|
if (item.getType() == Material.LEAD) {
|
|
this.openBalloonGUI(player);
|
|
} else if (item.getType() == Material.GOLDEN_HELMET) {
|
|
this.openHatGUI(player);
|
|
} else if (item.getType() == Material.BONE) {
|
|
this.openPetGUI(player);
|
|
} else if (item.getType() == Material.NETHER_STAR) {
|
|
this.openParticleGUI(player);
|
|
} else if (item.getType() == Material.FIREWORK_ROCKET) {
|
|
this.openFunGUI(player);
|
|
} else if (item.getType() == Material.BARRIER) {
|
|
this.removeGadgets(player);
|
|
player.closeInventory();
|
|
}
|
|
} else if (title.equals("§b§lGadgets §8- §aHüte & Köpfe")) {
|
|
if (item.getType() != Material.GRAY_STAINED_GLASS_PANE) {
|
|
String hatName = item.hasItemMeta() && item.getItemMeta().hasDisplayName() ? item.getItemMeta().getDisplayName() : item.getType().name();
|
|
HatManager.setHat(player, item.getType(), hatName);
|
|
player.playSound(player.getLocation(), Sound.ITEM_ARMOR_EQUIP_GENERIC, 1.0F, 1.0F);
|
|
player.closeInventory();
|
|
}
|
|
} else if (title.equals("§b§lGadgets §8- §dBegleiter")) {
|
|
String displayName = item.hasItemMeta() && item.getItemMeta().hasDisplayName() ? item.getItemMeta().getDisplayName() : "";
|
|
boolean spawned = true;
|
|
if (displayName.equals("§fBaby-Wolf")) {
|
|
PetManager.spawnEntityPet(player, "WOLF", true);
|
|
} else if (displayName.equals("§fWolf")) {
|
|
PetManager.spawnEntityPet(player, "WOLF", false);
|
|
} else if (displayName.equals("§7Baby-Ashen Wolf")) {
|
|
PetManager.spawnEntityPet(player, "WOLF", true, "ASHEN");
|
|
} else if (displayName.equals("§7Ashen Wolf")) {
|
|
PetManager.spawnEntityPet(player, "WOLF", false, "ASHEN");
|
|
} else if (displayName.equals("§6Baby-Katze")) {
|
|
PetManager.spawnEntityPet(player, "CAT", true);
|
|
} else if (displayName.equals("§6Katze")) {
|
|
PetManager.spawnEntityPet(player, "CAT", false);
|
|
} else if (displayName.equals("§aBaby-Panda")) {
|
|
PetManager.spawnEntityPet(player, "PANDA", true);
|
|
} else if (displayName.equals("§aPanda")) {
|
|
PetManager.spawnEntityPet(player, "PANDA", false);
|
|
} else if (displayName.equals("§6Baby-Fuchs")) {
|
|
PetManager.spawnEntityPet(player, "FOX", true);
|
|
} else if (displayName.equals("§6Fuchs")) {
|
|
PetManager.spawnEntityPet(player, "FOX", false);
|
|
} else if (displayName.equals("§bBaby-Schneefuchs")) {
|
|
PetManager.spawnEntityPet(player, "FOX", true, "SNOW");
|
|
} else if (displayName.equals("§bSchneefuchs")) {
|
|
PetManager.spawnEntityPet(player, "FOX", false, "SNOW");
|
|
} else if (displayName.equals("§6Baby-Ozelot")) {
|
|
PetManager.spawnEntityPet(player, "OCELOT", true);
|
|
} else if (displayName.equals("§6Ozelot")) {
|
|
PetManager.spawnEntityPet(player, "OCELOT", false);
|
|
} else if (displayName.equals("§aBaby-Frosch")) {
|
|
PetManager.spawnEntityPet(player, "FROG", true);
|
|
} else if (displayName.equals("§aFrosch")) {
|
|
PetManager.spawnEntityPet(player, "FROG", false);
|
|
} else if (displayName.equals("§2Baby-Schildkröte")) {
|
|
PetManager.spawnEntityPet(player, "TURTLE", true);
|
|
} else if (displayName.equals("§2Schildkröte")) {
|
|
PetManager.spawnEntityPet(player, "TURTLE", false);
|
|
} else if (displayName.equals("§fBaby-Kaninchen")) {
|
|
PetManager.spawnEntityPet(player, "RABBIT", true);
|
|
} else if (displayName.equals("§fKaninchen")) {
|
|
PetManager.spawnEntityPet(player, "RABBIT", false);
|
|
} else if (displayName.equals("§dBaby-Axolotl")) {
|
|
PetManager.spawnEntityPet(player, "AXOLOTL", true);
|
|
} else if (displayName.equals("§dAxolotl")) {
|
|
PetManager.spawnEntityPet(player, "AXOLOTL", false);
|
|
} else if (displayName.equals("§fBaby-Eisbär")) {
|
|
PetManager.spawnEntityPet(player, "POLAR_BEAR", true);
|
|
} else if (displayName.equals("§fEisbär")) {
|
|
PetManager.spawnEntityPet(player, "POLAR_BEAR", false);
|
|
} else if (displayName.equals("§eBaby-Biene")) {
|
|
PetManager.spawnEntityPet(player, "BEE", true);
|
|
} else if (displayName.equals("§eBiene")) {
|
|
PetManager.spawnEntityPet(player, "BEE", false);
|
|
} else if (displayName.equals("§fKüken")) {
|
|
PetManager.spawnEntityPet(player, "CHICKEN", true);
|
|
} else if (displayName.equals("§fHuhn")) {
|
|
PetManager.spawnEntityPet(player, "CHICKEN", false);
|
|
} else if (displayName.equals("§7Baby-Armadillo")) {
|
|
PetManager.spawnEntityPet(player, "ARMADILLO", true);
|
|
} else if (displayName.equals("§7Armadillo")) {
|
|
PetManager.spawnEntityPet(player, "ARMADILLO", false);
|
|
} else {
|
|
spawned = false;
|
|
}
|
|
|
|
if (spawned) {
|
|
player.sendMessage("§8[§6Nexus§8] §dDein Pet wurde gerufen!");
|
|
player.closeInventory();
|
|
}
|
|
} else if (title.equals("§b§lGadgets §8- §dBegleiter §7(2)")) {
|
|
String displayName = item.hasItemMeta() && item.getItemMeta().hasDisplayName() ? item.getItemMeta().getDisplayName() : "";
|
|
boolean spawned = true;
|
|
if (displayName.equals("§7Baby-Armadillo")) {
|
|
PetManager.spawnEntityPet(player, "ARMADILLO", true);
|
|
} else if (displayName.equals("§7Armadillo")) {
|
|
PetManager.spawnEntityPet(player, "ARMADILLO", false);
|
|
} else {
|
|
spawned = false;
|
|
}
|
|
|
|
if (spawned) {
|
|
player.sendMessage("§8[§6Nexus§8] §dDein Pet wurde gerufen!");
|
|
player.closeInventory();
|
|
}
|
|
} else if (title.equals("§b§lGadgets §8- §dBegleiter §7(3)")) {
|
|
String displayName = item.hasItemMeta() && item.getItemMeta().hasDisplayName() ? item.getItemMeta().getDisplayName() : "";
|
|
boolean spawned = true;
|
|
if (displayName.equals("§cPapagei")) {
|
|
PetManager.spawnEntityPet(player, "PARROT", false);
|
|
} else if (displayName.equals("§bAllay")) {
|
|
PetManager.spawnEntityPet(player, "ALLAY", false);
|
|
} else if (displayName.equals("§aSniffer")) {
|
|
PetManager.spawnEntityPet(player, "SNIFFER", false);
|
|
} else {
|
|
spawned = false;
|
|
}
|
|
|
|
if (spawned) {
|
|
player.sendMessage("§8[§6Nexus§8] §dDein Pet wurde gerufen!");
|
|
player.closeInventory();
|
|
}
|
|
} else if (title.equals("§b§lGadgets §8- §eBallons")) {
|
|
if (item.getType().toString().endsWith("_WOOL")) {
|
|
if (this.activeBalloons.containsKey(player.getUniqueId())) {
|
|
((Balloon)this.activeBalloons.get(player.getUniqueId())).remove();
|
|
}
|
|
|
|
this.activeBalloons.put(player.getUniqueId(), new Balloon(player, item.getType()));
|
|
player.sendMessage("§8[§6Nexus§8] §aBallon aktiviert!");
|
|
player.closeInventory();
|
|
}
|
|
} else if (title.equals("§b§lGadgets §8- §dPartikel")) {
|
|
if (item.getType() == Material.POPPY) {
|
|
this.activeEffects.put(player.getUniqueId(), new ParticleEffect("hearts"));
|
|
} else if (item.getType() == Material.BLAZE_POWDER) {
|
|
this.activeEffects.put(player.getUniqueId(), new ParticleEffect("flames"));
|
|
} else if (item.getType() == Material.WATER_BUCKET) {
|
|
this.activeEffects.put(player.getUniqueId(), new ParticleEffect("cloud"));
|
|
}
|
|
|
|
player.sendMessage("§8[§6Nexus§8] §aPartikel aktiviert!");
|
|
player.closeInventory();
|
|
} else if (title.equals("§b§lGadgets §8- §6Lustiges")) {
|
|
if (item.getType() == Material.EGG) {
|
|
ChickenRain.start(player);
|
|
player.sendMessage("§8[§6Nexus§8] §fHühnerregen gestartet!");
|
|
player.closeInventory();
|
|
} else if (item.getType() == Material.FISHING_ROD) {
|
|
player.getInventory().addItem(new ItemStack[]{this.createItem(Material.FISHING_ROD, "§b§lEnterhaken", "§7Rechtsklick zum Katapultieren §8(3s CD)")});
|
|
player.closeInventory();
|
|
} else if (item.getType() == Material.PACKED_ICE) {
|
|
player.getInventory().addItem(new ItemStack[]{this.createItem(Material.PACKED_ICE, "§b§lFreeze-Ray", "§7Rechtsklick zum Einfrieren §8(10s CD)")});
|
|
player.closeInventory();
|
|
} else if (item.getType() == Material.GOLDEN_HOE) {
|
|
player.getInventory().addItem(new ItemStack[]{this.createItem(Material.GOLDEN_HOE, "§6§lPaintball-Gun", "§7Rechtsklick zum Schießen")});
|
|
player.closeInventory();
|
|
} else if (item.getType() == Material.FIRE_CHARGE) {
|
|
player.getInventory().addItem(new ItemStack[]{this.createItem(Material.FIRE_CHARGE, "§c§lMeteorit", "§7Rechtsklick zum Markieren §8(15s CD)")});
|
|
player.closeInventory();
|
|
} else if (item.getType() == Material.SHIELD) {
|
|
if (this.activeShields.contains(player.getUniqueId())) {
|
|
this.activeShields.remove(player.getUniqueId());
|
|
player.sendMessage("§8[§6Nexus§8] §cSchutzzone deaktiviert.");
|
|
} else {
|
|
this.activeShields.add(player.getUniqueId());
|
|
player.sendMessage("§8[§6Nexus§8] §5Schutzzone aktiviert!");
|
|
}
|
|
|
|
player.closeInventory();
|
|
} else if (item.getType() == Material.FEATHER) {
|
|
Bukkit.getScheduler().runTaskTimer(NexusLobby.getInstance(), new Runnable() {
|
|
int ticks = 0;
|
|
|
|
public void run() {
|
|
if (this.ticks < 20) {
|
|
float yaw = player.getLocation().getYaw() + 36.0F;
|
|
Location loc = player.getLocation().clone();
|
|
loc.setYaw(yaw);
|
|
loc.setY(loc.getY() + (double)0.5F);
|
|
player.teleport(loc);
|
|
player.getWorld().spawnParticle(Particle.CLOUD, loc.clone().add((double)0.0F, (double)1.5F, (double)0.0F), 14, 0.4, 0.2, 0.4, 0.02);
|
|
player.setVelocity(player.getVelocity().setY(0.13));
|
|
++this.ticks;
|
|
}
|
|
}
|
|
}, 0L, 1L);
|
|
player.playSound(player.getLocation(), Sound.ENTITY_PHANTOM_FLAP, 1.0F, 1.2F);
|
|
player.sendMessage("§8[§6Nexus§8] §fMini-Tornado: Du wirbelst herum!");
|
|
player.closeInventory();
|
|
} else if (item.getType() == Material.TNT) {
|
|
Location tntLoc = player.getLocation().add((double)0.0F, (double)0.5F, (double)0.0F);
|
|
player.getWorld().spawnParticle(Particle.SMOKE, tntLoc, 16, 0.4, 0.2, 0.4, 0.01);
|
|
player.getWorld().playSound(tntLoc, Sound.ENTITY_TNT_PRIMED, 1.0F, 1.0F);
|
|
Bukkit.getScheduler().runTaskLater(NexusLobby.getInstance(), () -> {
|
|
player.getWorld().spawnParticle(Particle.EXPLOSION, tntLoc, 2, (double)0.5F, 0.2, (double)0.5F, 0.1);
|
|
player.getWorld().playSound(tntLoc, Sound.ENTITY_GENERIC_EXPLODE, 1.0F, 1.1F);
|
|
}, 30L);
|
|
player.sendMessage("§8[§6Nexus§8] §cFake-TNT gezündet! Keine Sorge, alles harmlos.");
|
|
player.closeInventory();
|
|
} else if (item.getType() == Material.SLIME_BALL) {
|
|
World world = player.getWorld();
|
|
Location baseLoc = player.getLocation();
|
|
EntityType[] types = new EntityType[]{EntityType.ZOMBIE, EntityType.SKELETON, EntityType.CREEPER, EntityType.SLIME};
|
|
final List<LivingEntity> spawned = new ArrayList();
|
|
|
|
for(int i = 0; i < types.length; ++i) {
|
|
Location mobLoc = baseLoc.clone().add(Math.cos((double)i * Math.PI / (double)2.0F) * (double)1.5F, (double)0.0F, Math.sin((double)i * Math.PI / (double)2.0F) * (double)1.5F);
|
|
Entity ent = world.spawnEntity(mobLoc, types[i]);
|
|
if (ent instanceof LivingEntity) {
|
|
LivingEntity mob = (LivingEntity)ent;
|
|
mob.setCustomName("§aParty-Mob");
|
|
mob.setCustomNameVisible(true);
|
|
mob.setAI(false);
|
|
mob.setInvulnerable(true);
|
|
mob.setCollidable(false);
|
|
mob.setSilent(true);
|
|
mob.setGlowing(true);
|
|
|
|
try {
|
|
if (mob instanceof Zombie) {
|
|
Zombie zombie = (Zombie)mob;
|
|
zombie.setBaby(true);
|
|
} else if (mob instanceof Slime) {
|
|
Slime slime = (Slime)mob;
|
|
slime.setSize(1);
|
|
}
|
|
} catch (Exception var15) {
|
|
}
|
|
|
|
spawned.add(mob);
|
|
}
|
|
}
|
|
|
|
Bukkit.getScheduler().runTaskTimer(NexusLobby.getInstance(), new Runnable() {
|
|
int ticks = 0;
|
|
|
|
public void run() {
|
|
if (this.ticks >= 80) {
|
|
spawned.forEach((e) -> e.remove());
|
|
} else {
|
|
for(LivingEntity mob : spawned) {
|
|
mob.getWorld().spawnParticle(Particle.NOTE, mob.getLocation().add((double)0.0F, (double)1.0F, (double)0.0F), 6, 0.3, 0.2, 0.3, 0.01);
|
|
mob.teleport(mob.getLocation().add((double)0.0F, 0.08 * Math.sin((double)this.ticks / (double)2.0F), (double)0.0F));
|
|
}
|
|
|
|
++this.ticks;
|
|
}
|
|
}
|
|
}, 0L, 2L);
|
|
player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_CELEBRATE, 1.0F, 1.2F);
|
|
player.sendMessage("§8[§6Nexus§8] §aMob-Party gestartet! Die Mobs tanzen um dich.");
|
|
player.closeInventory();
|
|
} else if (item.getType() == Material.FIREWORK_ROCKET) {
|
|
for(int i = 0; i < 3; ++i) {
|
|
Bukkit.getScheduler().runTaskLater(NexusLobby.getInstance(), () -> {
|
|
player.getWorld().spawnParticle(Particle.CRIT, player.getLocation().add((double)0.0F, (double)1.0F, (double)0.0F), 40, 0.8, (double)0.5F, 0.8, 0.15);
|
|
player.getWorld().spawnParticle(Particle.NOTE, player.getLocation().add((double)0.0F, (double)1.0F, (double)0.0F), 20, 0.7, 0.3, 0.7, 0.1);
|
|
player.playSound(player.getLocation(), Sound.ENTITY_FIREWORK_ROCKET_BLAST, 1.0F, 1.1F);
|
|
}, (long)i * 6L);
|
|
}
|
|
|
|
player.sendMessage("§8[§6Nexus§8] §cKonfetti-Kanone: Buntes Konfetti überall!");
|
|
player.closeInventory();
|
|
} else if (item.getType() == Material.NOTE_BLOCK) {
|
|
Bukkit.getScheduler().runTaskTimer(NexusLobby.getInstance(), new Runnable() {
|
|
int ticks = 0;
|
|
|
|
public void run() {
|
|
if (this.ticks < 40) {
|
|
if (this.ticks % 8 == 0) {
|
|
player.setVelocity(player.getVelocity().setY(0.4));
|
|
player.getWorld().spawnParticle(Particle.NOTE, player.getLocation().add((double)0.0F, (double)2.0F, (double)0.0F), 8, (double)0.5F, 0.2, (double)0.5F, 0.01);
|
|
player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_BELL, 1.0F, 1.2F);
|
|
}
|
|
|
|
++this.ticks;
|
|
}
|
|
}
|
|
}, 0L, 2L);
|
|
player.sendMessage("§8[§6Nexus§8] §dTanz-Emote: Du beginnst zu tanzen!");
|
|
player.closeInventory();
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
private void removeGadgets(Player player) {
|
|
UUID uuid = player.getUniqueId();
|
|
Integer discoTask = (Integer)this.discoTasks.remove(uuid);
|
|
if (discoTask != null) {
|
|
Bukkit.getScheduler().cancelTask(discoTask);
|
|
}
|
|
|
|
if (this.activeBalloons.containsKey(player.getUniqueId())) {
|
|
((Balloon)this.activeBalloons.get(player.getUniqueId())).remove();
|
|
this.activeBalloons.remove(player.getUniqueId());
|
|
}
|
|
|
|
this.activeEffects.remove(player.getUniqueId());
|
|
this.activeShields.remove(player.getUniqueId());
|
|
PetManager.removePet(player);
|
|
FreezeRay.unfreeze(player.getUniqueId());
|
|
HatManager.removeHat(player);
|
|
player.getInventory().remove(Material.FISHING_ROD);
|
|
player.getInventory().remove(Material.PACKED_ICE);
|
|
player.getInventory().remove(Material.GOLDEN_HOE);
|
|
player.getInventory().remove(Material.FIRE_CHARGE);
|
|
player.sendMessage("§8[§6Nexus§8] §cAlle Gadgets abgelegt.");
|
|
}
|
|
|
|
private void fillEdges(Inventory inv) {
|
|
ItemStack glass = this.createItem(Material.GRAY_STAINED_GLASS_PANE, " ", (String)null);
|
|
|
|
for(int i = 0; i < inv.getSize(); ++i) {
|
|
if (i < 9 || i >= inv.getSize() - 9 || i % 9 == 0 || (i + 1) % 9 == 0) {
|
|
inv.setItem(i, glass);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
private ItemStack createItem(Material mat, String name, String lore) {
|
|
ItemStack item = new ItemStack(mat);
|
|
ItemMeta meta = item.getItemMeta();
|
|
if (meta != null) {
|
|
meta.setDisplayName(name);
|
|
List<String> l = new ArrayList();
|
|
if (lore != null && !lore.isEmpty()) {
|
|
l.add(ChatColor.translateAlternateColorCodes('&', lore));
|
|
meta.setLore(l);
|
|
}
|
|
|
|
meta.addItemFlags(new ItemFlag[]{ItemFlag.HIDE_ATTRIBUTES});
|
|
meta.addItemFlags(new ItemFlag[]{ItemFlag.HIDE_UNBREAKABLE});
|
|
meta.addItemFlags(new ItemFlag[]{ItemFlag.HIDE_ENCHANTS});
|
|
item.setItemMeta(meta);
|
|
}
|
|
|
|
return item;
|
|
}
|
|
|
|
public void onDisable() {
|
|
HandlerList.unregisterAll(this);
|
|
PetManager.unregister();
|
|
PetManager.clearAll();
|
|
this.activeBalloons.values().forEach(Balloon::remove);
|
|
this.activeBalloons.clear();
|
|
this.activeEffects.clear();
|
|
this.activeShields.clear();
|
|
GadgetShield.clear();
|
|
}
|
|
|
|
@EventHandler
|
|
public void onQuit(PlayerQuitEvent event) {
|
|
Player player = event.getPlayer();
|
|
removeGadgets(player);
|
|
UUID uuid = player.getUniqueId();
|
|
meteorCooldowns.remove(uuid);
|
|
freezeCooldowns.remove(uuid);
|
|
grapplingCooldowns.remove(uuid);
|
|
}
|
|
} |