public void attachRocketBoots(Player player, ItemStack boots) { if (gamemodeCheck.check(player, GameMode.CREATIVE, GameMode.SPECTATOR)) { commonString.messageSend( RocketInit.getPlugin(), player, true, RocketLanguage.RB_GAMEMODE_ERROR); disableRocketBoots(player, false, false, false, false, false); return; } UUID playerUUID = player.getUniqueId(); ItemMeta rocketMeta = boots.getItemMeta(); Block blockMiddle = player.getLocation().getBlock().getRelative(BlockFace.SELF); Boolean isWaterVariant = false; Boolean isRunnerVariant = false; String[] rocketMessage = new String[3]; rocketMessage[0] = RocketLanguage.RB_ACTIVATE; switch (rocketMeta.getLore().size()) { case 1: rocketMessage[1] = RocketLanguage.RB_VARIANT + RocketLanguage.RB_NOT_FOUND; rocketMessage[2] = RocketLanguage.RB_ENHANCE + RocketLanguage.RB_NOT_FOUND; RocketInit.rocketVariant.put(playerUUID, Variant.ORIGINAL); RocketInit.rocketEnhancement.put(playerUUID, RocketEnhancement.Enhancement.NOTHING); break; case 2: String loreLine = ChatColor.stripColor(rocketMeta.getLore().get(1)); if (Variant.isVariant(loreLine)) { Variant variantType = Variant.getEnum(loreLine); if (variantType != null) { rocketMessage[1] = RocketLanguage.RB_VARIANT + loreLine; rocketMessage[2] = RocketLanguage.RB_ENHANCE + RocketLanguage.RB_NOT_FOUND; RocketInit.rocketVariant.put(playerUUID, variantType); RocketInit.rocketEnhancement.put(playerUUID, RocketEnhancement.Enhancement.NOTHING); if (variantType.equals(Variant.WATER)) isWaterVariant = true; if (variantType.equals(Variant.RUNNER)) isRunnerVariant = true; } } if (RocketEnhancement.Enhancement.isEnhancement(loreLine)) { RocketEnhancement.Enhancement enhancementType = RocketEnhancement.Enhancement.getEnum(loreLine); if (enhancementType != null) { rocketMessage[1] = RocketLanguage.RB_VARIANT + RocketLanguage.RB_NOT_FOUND; rocketMessage[2] = RocketLanguage.RB_ENHANCE + loreLine; RocketInit.rocketVariant.put(playerUUID, Variant.ORIGINAL); RocketInit.rocketEnhancement.put(playerUUID, enhancementType); } } break; case 3: String variantLore = ChatColor.stripColor(rocketMeta.getLore().get(1)); String enhancementLore = ChatColor.stripColor(rocketMeta.getLore().get(2)); Variant variantType = Variant.getEnum(variantLore); RocketEnhancement.Enhancement enhancementType = RocketEnhancement.Enhancement.getEnum(enhancementLore); if (variantType != null && enhancementType != null) { rocketMessage[1] = RocketLanguage.RB_VARIANT + variantLore; RocketInit.rocketVariant.put(playerUUID, variantType); if (variantType.equals(Variant.WATER)) isWaterVariant = true; if (variantType.equals(Variant.RUNNER)) isRunnerVariant = true; rocketMessage[2] = RocketLanguage.RB_ENHANCE + enhancementLore; RocketInit.rocketEnhancement.put(playerUUID, enhancementType); } break; } if (!isWaterVariant && blockMiddle.isLiquid()) { RocketInit.rocketWater.add(playerUUID); commonString.messageSend( RocketInit.getPlugin(), player, true, RocketLanguage.RB_WATER_WARNING); return; } if (RocketInit.rocketVariant.get(playerUUID) == null || RocketInit.rocketEnhancement.get(playerUUID) == null) { commonString.messageSend(RocketInit.getPlugin(), player, true, RocketLanguage.RB_FAIL_ATTACH); disableRocketBoots(player, false, false, false, false, false); return; } if (RocketInit.rocketVariant.get(playerUUID) != Variant.ORIGINAL && player.getWorld().getName().equals("world_nether")) { commonString.messageSend(RocketInit.getPlugin(), player, true, RocketLanguage.RB_NETHER); disableRocketBoots(player, false, false, false, false, false); return; } if (player.getInventory().getBoots() == null) if (gamemodeCheck.check(player, GameMode.SURVIVAL, GameMode.ADVENTURE)) { commonString.messageSend(RocketInit.getPlugin(), player, true, rocketMessage); if (!isRunnerVariant) player.setAllowFlight(true); RocketInit.rocketPower.put(playerUUID, getBootPowerLevel(boots)); } }
public void disableRocketBoots( Player player, Boolean keepUsage, Boolean keepPower, Boolean keepFlight, Boolean keepVariant, Boolean keepEnhancement) { UUID playerUUID = player.getUniqueId(); if (!keepUsage && RocketInit.rocketUsage.contains(playerUUID)) RocketInit.rocketUsage.remove(playerUUID); if (RocketInit.rocketSprint.containsKey(playerUUID)) RocketInit.rocketSprint.remove(playerUUID); if (!keepPower && RocketInit.rocketPower.containsKey(playerUUID)) RocketInit.rocketPower.remove(playerUUID); if (!RocketInit.rocketFire.isEmpty()) RocketInit.rocketFire.clear(); if (RocketInit.rocketWater.contains(playerUUID)) RocketInit.rocketWater.remove(playerUUID); if (RocketInit.rocketRepair.containsKey(playerUUID)) RocketInit.rocketRepair.remove(playerUUID); if (!keepEnhancement && RocketInit.rocketEnhancement.containsKey(playerUUID)) RocketInit.rocketEnhancement.remove(playerUUID); if (!keepVariant && RocketInit.rocketVariant.containsKey(playerUUID)) { switch (RocketInit.rocketVariant.get(playerUUID)) { case ENDER: player.removePotionEffect(PotionEffectType.NIGHT_VISION); player.removePotionEffect(PotionEffectType.HEALTH_BOOST); break; case ZERO: player.removePotionEffect(PotionEffectType.CONFUSION); player.removePotionEffect(PotionEffectType.DAMAGE_RESISTANCE); player.removePotionEffect(PotionEffectType.INCREASE_DAMAGE); break; case STEALTH: for (Player onlinePlayer : Bukkit.getOnlinePlayers()) onlinePlayer.showPlayer(player); break; case DRUNK: player.removePotionEffect(PotionEffectType.CONFUSION); player.removePotionEffect(PotionEffectType.FAST_DIGGING); break; case BOOST: player.removePotionEffect(PotionEffectType.HEAL); break; case RUNNER: player.removePotionEffect(PotionEffectType.SPEED); break; } RocketInit.rocketVariant.remove(playerUUID); } if (player.isOnline() && gamemodeCheck.check(player, GameMode.SURVIVAL, GameMode.ADVENTURE)) { for (Player onlinePlayer : Bukkit.getOnlinePlayers()) onlinePlayer.showPlayer(player); player.setFlySpeed(0.1f); player.setFlying(false); if (!keepFlight) player.setAllowFlight(false); player.setNoDamageTicks(100); player.setFallDistance(0); } }
public void interactRocketBoots(InventoryClickEvent event, ItemStack boots) { Player player = (Player) event.getWhoClicked(); ClickType click = event.getClick(); Boolean hasRocketMeta = boots.hasItemMeta(); if (gamemodeCheck.check(player, GameMode.CREATIVE, GameMode.SPECTATOR)) { event.setCancelled(true); player.closeInventory(); disableRocketBoots(player, false, false, false, false, false); commonString.messageSend( RocketInit.getPlugin(), player, true, RocketLanguage.RB_GAMEMODE_ERROR); return; } if (hasRocketMeta) { ItemMeta rocketMeta = boots.getItemMeta(); if (rocketMeta.hasDisplayName()) if (rocketMeta.getDisplayName().matches(ChatColor.RED + "Rocket Boots")) if (rocketMeta.hasLore()) { String rocketLore = rocketMeta.getLore().get(0); String variantLore = null; if (rocketMeta.getLore().size() >= 2) variantLore = ChatColor.stripColor(rocketMeta.getLore().get(1)); Set<String> specialVariants = new HashSet<>(Collections.singletonList("Robin Hood")); if (variantLore != null) if (specialVariants.contains(variantLore)) { Variant variantType = Variant.getEnum(variantLore); if (variantType != null) if (variantType == Variant.MONEY) if (RocketInit.getVaultEconomy() == null) { commonString.messageSend( RocketInit.getPlugin(), player, true, RocketLanguage.RB_EQUIP_ERROR); return; } } if (rocketLore.matches(ChatColor.YELLOW + "Rocket Level I{0,3}V?X?")) if (!RocketInit.rocketUsage.contains(player.getUniqueId())) if (click == ClickType.MIDDLE) event.setCancelled(true); else attachRocketBoots(player, boots); } } else if (RocketInit.rocketSprint.containsKey(player.getUniqueId())) { commonString.messageSend( RocketInit.getPlugin(), player, true, new String[] {RocketLanguage.RB_COOLDOWN_TOUCH, RocketLanguage.RB_COOLDOWN_LAND}); event.setCancelled(true); player.closeInventory(); } else if (RocketInit.rocketPower.containsKey(player.getUniqueId())) disableRocketBoots(player, false, false, false, false, false); }