From e3fe2d13e12701c2605de2f4f3ba9e09c4a35caf Mon Sep 17 00:00:00 2001 From: Josh Roy <10731363+JRoy@users.noreply.github.com> Date: Mon, 29 Apr 2024 22:11:45 -0400 Subject: [PATCH] minor update btw it compiles now potionmeta itemdb doesn't work need to finish that later --- .../com/earth2me/essentials/Enchantments.java | 257 ++++++++++-------- .../earth2me/essentials/MetaItemStack.java | 3 +- .../java/com/earth2me/essentials/Mob.java | 16 +- .../com/earth2me/essentials/MobCompat.java | 9 + .../java/com/earth2me/essentials/MobData.java | 4 +- .../java/com/earth2me/essentials/Potions.java | 85 +++--- .../essentials/commands/Commandfirework.java | 4 +- .../essentials/items/AbstractItemDb.java | 7 +- .../earth2me/essentials/items/FlatItemDb.java | 3 +- .../essentials/utils/RegistryUtil.java | 20 ++ .../providers/LegacyPotionMetaProvider.java | 2 - 11 files changed, 249 insertions(+), 161 deletions(-) create mode 100644 Essentials/src/main/java/com/earth2me/essentials/utils/RegistryUtil.java diff --git a/Essentials/src/main/java/com/earth2me/essentials/Enchantments.java b/Essentials/src/main/java/com/earth2me/essentials/Enchantments.java index 542dca31182..6c9e84fba2f 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Enchantments.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Enchantments.java @@ -1,5 +1,6 @@ package com.earth2me.essentials; +import com.earth2me.essentials.utils.RegistryUtil; import org.bukkit.NamespacedKey; import org.bukkit.enchantments.Enchantment; @@ -15,33 +16,43 @@ public final class Enchantments { private static boolean isFlat; static { - ENCHANTMENTS.put("alldamage", Enchantment.DAMAGE_ALL); - ALIASENCHANTMENTS.put("alldmg", Enchantment.DAMAGE_ALL); - ENCHANTMENTS.put("sharpness", Enchantment.DAMAGE_ALL); - ALIASENCHANTMENTS.put("sharp", Enchantment.DAMAGE_ALL); - ALIASENCHANTMENTS.put("dal", Enchantment.DAMAGE_ALL); - - ENCHANTMENTS.put("ardmg", Enchantment.DAMAGE_ARTHROPODS); - ENCHANTMENTS.put("baneofarthropods", Enchantment.DAMAGE_ARTHROPODS); - ALIASENCHANTMENTS.put("baneofarthropod", Enchantment.DAMAGE_ARTHROPODS); - ALIASENCHANTMENTS.put("arthropod", Enchantment.DAMAGE_ARTHROPODS); - ALIASENCHANTMENTS.put("dar", Enchantment.DAMAGE_ARTHROPODS); - - ENCHANTMENTS.put("undeaddamage", Enchantment.DAMAGE_UNDEAD); - ENCHANTMENTS.put("smite", Enchantment.DAMAGE_UNDEAD); - ALIASENCHANTMENTS.put("du", Enchantment.DAMAGE_UNDEAD); - - ENCHANTMENTS.put("digspeed", Enchantment.DIG_SPEED); - ENCHANTMENTS.put("efficiency", Enchantment.DIG_SPEED); - ALIASENCHANTMENTS.put("minespeed", Enchantment.DIG_SPEED); - ALIASENCHANTMENTS.put("cutspeed", Enchantment.DIG_SPEED); - ALIASENCHANTMENTS.put("ds", Enchantment.DIG_SPEED); - ALIASENCHANTMENTS.put("eff", Enchantment.DIG_SPEED); - - ENCHANTMENTS.put("durability", Enchantment.DURABILITY); - ALIASENCHANTMENTS.put("dura", Enchantment.DURABILITY); - ENCHANTMENTS.put("unbreaking", Enchantment.DURABILITY); - ALIASENCHANTMENTS.put("d", Enchantment.DURABILITY); + final Enchantment SHARPNESS = RegistryUtil.valueOf(Enchantment.class, "DAMAGE_ALL", "SHARPNESS"); + + ENCHANTMENTS.put("alldamage", SHARPNESS); + ALIASENCHANTMENTS.put("alldmg", SHARPNESS); + ENCHANTMENTS.put("sharpness", SHARPNESS); + ALIASENCHANTMENTS.put("sharp", SHARPNESS); + ALIASENCHANTMENTS.put("dal", SHARPNESS); + + final Enchantment BANE_OF_ARTHROPODS = RegistryUtil.valueOf(Enchantment.class, "DAMAGE_ARTHROPODS", "BANE_OF_ARTHROPODS"); + + ENCHANTMENTS.put("ardmg", BANE_OF_ARTHROPODS); + ENCHANTMENTS.put("baneofarthropods", BANE_OF_ARTHROPODS); + ALIASENCHANTMENTS.put("baneofarthropod", BANE_OF_ARTHROPODS); + ALIASENCHANTMENTS.put("arthropod", BANE_OF_ARTHROPODS); + ALIASENCHANTMENTS.put("dar", BANE_OF_ARTHROPODS); + + final Enchantment SMITE = RegistryUtil.valueOf(Enchantment.class, "DAMAGE_UNDEAD", "SMITE"); + + ENCHANTMENTS.put("undeaddamage", SMITE); + ENCHANTMENTS.put("smite", SMITE); + ALIASENCHANTMENTS.put("du", SMITE); + + final Enchantment EFFICIENCY = RegistryUtil.valueOf(Enchantment.class, "DIG_SPEED", "EFFICIENCY"); + + ENCHANTMENTS.put("digspeed", EFFICIENCY); + ENCHANTMENTS.put("efficiency", EFFICIENCY); + ALIASENCHANTMENTS.put("minespeed", EFFICIENCY); + ALIASENCHANTMENTS.put("cutspeed", EFFICIENCY); + ALIASENCHANTMENTS.put("ds", EFFICIENCY); + ALIASENCHANTMENTS.put("eff", EFFICIENCY); + + final Enchantment UNBREAKING = RegistryUtil.valueOf(Enchantment.class, "DURABILITY", "UNBREAKING"); + + ENCHANTMENTS.put("durability", UNBREAKING); + ALIASENCHANTMENTS.put("dura", UNBREAKING); + ENCHANTMENTS.put("unbreaking", UNBREAKING); + ALIASENCHANTMENTS.put("d", UNBREAKING); ENCHANTMENTS.put("thorns", Enchantment.THORNS); ENCHANTMENTS.put("highcrit", Enchantment.THORNS); @@ -59,92 +70,120 @@ public final class Enchantments { ALIASENCHANTMENTS.put("kback", Enchantment.KNOCKBACK); ALIASENCHANTMENTS.put("kb", Enchantment.KNOCKBACK); ALIASENCHANTMENTS.put("k", Enchantment.KNOCKBACK); - - ALIASENCHANTMENTS.put("blockslootbonus", Enchantment.LOOT_BONUS_BLOCKS); - ENCHANTMENTS.put("fortune", Enchantment.LOOT_BONUS_BLOCKS); - ALIASENCHANTMENTS.put("fort", Enchantment.LOOT_BONUS_BLOCKS); - ALIASENCHANTMENTS.put("lbb", Enchantment.LOOT_BONUS_BLOCKS); - - ALIASENCHANTMENTS.put("mobslootbonus", Enchantment.LOOT_BONUS_MOBS); - ENCHANTMENTS.put("mobloot", Enchantment.LOOT_BONUS_MOBS); - ENCHANTMENTS.put("looting", Enchantment.LOOT_BONUS_MOBS); - ALIASENCHANTMENTS.put("lbm", Enchantment.LOOT_BONUS_MOBS); - - ALIASENCHANTMENTS.put("oxygen", Enchantment.OXYGEN); - ENCHANTMENTS.put("respiration", Enchantment.OXYGEN); - ALIASENCHANTMENTS.put("breathing", Enchantment.OXYGEN); - ENCHANTMENTS.put("breath", Enchantment.OXYGEN); - ALIASENCHANTMENTS.put("o", Enchantment.OXYGEN); - - ENCHANTMENTS.put("protection", Enchantment.PROTECTION_ENVIRONMENTAL); - ALIASENCHANTMENTS.put("prot", Enchantment.PROTECTION_ENVIRONMENTAL); - ENCHANTMENTS.put("protect", Enchantment.PROTECTION_ENVIRONMENTAL); - ALIASENCHANTMENTS.put("p", Enchantment.PROTECTION_ENVIRONMENTAL); - - ALIASENCHANTMENTS.put("explosionsprotection", Enchantment.PROTECTION_EXPLOSIONS); - ALIASENCHANTMENTS.put("explosionprotection", Enchantment.PROTECTION_EXPLOSIONS); - ALIASENCHANTMENTS.put("expprot", Enchantment.PROTECTION_EXPLOSIONS); - ALIASENCHANTMENTS.put("blastprotection", Enchantment.PROTECTION_EXPLOSIONS); - ALIASENCHANTMENTS.put("bprotection", Enchantment.PROTECTION_EXPLOSIONS); - ALIASENCHANTMENTS.put("bprotect", Enchantment.PROTECTION_EXPLOSIONS); - ENCHANTMENTS.put("blastprotect", Enchantment.PROTECTION_EXPLOSIONS); - ALIASENCHANTMENTS.put("pe", Enchantment.PROTECTION_EXPLOSIONS); - - ALIASENCHANTMENTS.put("fallprotection", Enchantment.PROTECTION_FALL); - ENCHANTMENTS.put("fallprot", Enchantment.PROTECTION_FALL); - ENCHANTMENTS.put("featherfall", Enchantment.PROTECTION_FALL); - ALIASENCHANTMENTS.put("featherfalling", Enchantment.PROTECTION_FALL); - ALIASENCHANTMENTS.put("pfa", Enchantment.PROTECTION_FALL); - - ALIASENCHANTMENTS.put("fireprotection", Enchantment.PROTECTION_FIRE); - ALIASENCHANTMENTS.put("flameprotection", Enchantment.PROTECTION_FIRE); - ENCHANTMENTS.put("fireprotect", Enchantment.PROTECTION_FIRE); - ALIASENCHANTMENTS.put("flameprotect", Enchantment.PROTECTION_FIRE); - ENCHANTMENTS.put("fireprot", Enchantment.PROTECTION_FIRE); - ALIASENCHANTMENTS.put("flameprot", Enchantment.PROTECTION_FIRE); - ALIASENCHANTMENTS.put("pf", Enchantment.PROTECTION_FIRE); - - ENCHANTMENTS.put("projectileprotection", Enchantment.PROTECTION_PROJECTILE); - ENCHANTMENTS.put("projprot", Enchantment.PROTECTION_PROJECTILE); - ALIASENCHANTMENTS.put("pp", Enchantment.PROTECTION_PROJECTILE); + + final Enchantment FORTUNE = RegistryUtil.valueOf(Enchantment.class, "LOOT_BONUS_BLOCKS", "FORTUNE"); + + ALIASENCHANTMENTS.put("blockslootbonus", FORTUNE); + ENCHANTMENTS.put("fortune", FORTUNE); + ALIASENCHANTMENTS.put("fort", FORTUNE); + ALIASENCHANTMENTS.put("lbb", FORTUNE); + + final Enchantment LOOTING = RegistryUtil.valueOf(Enchantment.class, "LOOT_BONUS_MOBS", "LOOTING"); + + ALIASENCHANTMENTS.put("mobslootbonus", LOOTING); + ENCHANTMENTS.put("mobloot", LOOTING); + ENCHANTMENTS.put("looting", LOOTING); + ALIASENCHANTMENTS.put("lbm", LOOTING); + + final Enchantment RESPIRATION = RegistryUtil.valueOf(Enchantment.class, "OXYGEN", "RESPIRATION"); + + ALIASENCHANTMENTS.put("oxygen", RESPIRATION); + ENCHANTMENTS.put("respiration", RESPIRATION); + ALIASENCHANTMENTS.put("breathing", RESPIRATION); + ENCHANTMENTS.put("breath", RESPIRATION); + ALIASENCHANTMENTS.put("o", RESPIRATION); + + final Enchantment PROTECTION = RegistryUtil.valueOf(Enchantment.class, "PROTECTION_ENVIRONMENTAL", "PROTECTION"); + + ENCHANTMENTS.put("protection", PROTECTION); + ALIASENCHANTMENTS.put("prot", PROTECTION); + ENCHANTMENTS.put("protect", PROTECTION); + ALIASENCHANTMENTS.put("p", PROTECTION); + + final Enchantment BLAST_PROTECTION = RegistryUtil.valueOf(Enchantment.class, "PROTECTION_EXPLOSIONS", "BLAST_PROTECTION"); + + ALIASENCHANTMENTS.put("explosionsprotection", BLAST_PROTECTION); + ALIASENCHANTMENTS.put("explosionprotection", BLAST_PROTECTION); + ALIASENCHANTMENTS.put("expprot", BLAST_PROTECTION); + ALIASENCHANTMENTS.put("blastprotection", BLAST_PROTECTION); + ALIASENCHANTMENTS.put("bprotection", BLAST_PROTECTION); + ALIASENCHANTMENTS.put("bprotect", BLAST_PROTECTION); + ENCHANTMENTS.put("blastprotect", BLAST_PROTECTION); + ALIASENCHANTMENTS.put("pe", BLAST_PROTECTION); + + final Enchantment FEATHER_FALLING = RegistryUtil.valueOf(Enchantment.class, "PROTECTION_FALL", "FEATHER_FALLING"); + + ALIASENCHANTMENTS.put("fallprotection", FEATHER_FALLING); + ENCHANTMENTS.put("fallprot", FEATHER_FALLING); + ENCHANTMENTS.put("featherfall", FEATHER_FALLING); + ALIASENCHANTMENTS.put("featherfalling", FEATHER_FALLING); + ALIASENCHANTMENTS.put("pfa", FEATHER_FALLING); + + final Enchantment FIRE_PROTECTION = RegistryUtil.valueOf(Enchantment.class, "PROTECTION_FIRE", "FIRE_PROTECTION"); + + ALIASENCHANTMENTS.put("fireprotection", FIRE_PROTECTION); + ALIASENCHANTMENTS.put("flameprotection", FIRE_PROTECTION); + ENCHANTMENTS.put("fireprotect", FIRE_PROTECTION); + ALIASENCHANTMENTS.put("flameprotect", FIRE_PROTECTION); + ENCHANTMENTS.put("fireprot", FIRE_PROTECTION); + ALIASENCHANTMENTS.put("flameprot", FIRE_PROTECTION); + ALIASENCHANTMENTS.put("pf", FIRE_PROTECTION); + + final Enchantment PROJECTILE_PROTECTION = RegistryUtil.valueOf(Enchantment.class, "PROTECTION_PROJECTILE", "PROJECTILE_PROTECTION"); + + ENCHANTMENTS.put("projectileprotection", PROJECTILE_PROTECTION); + ENCHANTMENTS.put("projprot", PROJECTILE_PROTECTION); + ALIASENCHANTMENTS.put("pp", PROJECTILE_PROTECTION); ENCHANTMENTS.put("silktouch", Enchantment.SILK_TOUCH); ALIASENCHANTMENTS.put("softtouch", Enchantment.SILK_TOUCH); ALIASENCHANTMENTS.put("st", Enchantment.SILK_TOUCH); - - ENCHANTMENTS.put("waterworker", Enchantment.WATER_WORKER); - ENCHANTMENTS.put("aquaaffinity", Enchantment.WATER_WORKER); - ALIASENCHANTMENTS.put("watermine", Enchantment.WATER_WORKER); - ALIASENCHANTMENTS.put("ww", Enchantment.WATER_WORKER); - - ALIASENCHANTMENTS.put("firearrow", Enchantment.ARROW_FIRE); - ENCHANTMENTS.put("flame", Enchantment.ARROW_FIRE); - ENCHANTMENTS.put("flamearrow", Enchantment.ARROW_FIRE); - ALIASENCHANTMENTS.put("af", Enchantment.ARROW_FIRE); - - ENCHANTMENTS.put("arrowdamage", Enchantment.ARROW_DAMAGE); - ENCHANTMENTS.put("power", Enchantment.ARROW_DAMAGE); - ALIASENCHANTMENTS.put("arrowpower", Enchantment.ARROW_DAMAGE); - ALIASENCHANTMENTS.put("ad", Enchantment.ARROW_DAMAGE); - - ENCHANTMENTS.put("arrowknockback", Enchantment.ARROW_KNOCKBACK); - ALIASENCHANTMENTS.put("arrowkb", Enchantment.ARROW_KNOCKBACK); - ENCHANTMENTS.put("punch", Enchantment.ARROW_KNOCKBACK); - ALIASENCHANTMENTS.put("arrowpunch", Enchantment.ARROW_KNOCKBACK); - ALIASENCHANTMENTS.put("ak", Enchantment.ARROW_KNOCKBACK); - - ALIASENCHANTMENTS.put("infinitearrows", Enchantment.ARROW_INFINITE); - ENCHANTMENTS.put("infarrows", Enchantment.ARROW_INFINITE); - ENCHANTMENTS.put("infinity", Enchantment.ARROW_INFINITE); - ALIASENCHANTMENTS.put("infinite", Enchantment.ARROW_INFINITE); - ALIASENCHANTMENTS.put("unlimited", Enchantment.ARROW_INFINITE); - ALIASENCHANTMENTS.put("unlimitedarrows", Enchantment.ARROW_INFINITE); - ALIASENCHANTMENTS.put("ai", Enchantment.ARROW_INFINITE); - - ENCHANTMENTS.put("luck", Enchantment.LUCK); - ALIASENCHANTMENTS.put("luckofsea", Enchantment.LUCK); - ALIASENCHANTMENTS.put("luckofseas", Enchantment.LUCK); - ALIASENCHANTMENTS.put("rodluck", Enchantment.LUCK); + + final Enchantment AQUA_AFFINITY = RegistryUtil.valueOf(Enchantment.class, "WATER_WORKER", "AQUA_AFFINITY"); + + ENCHANTMENTS.put("waterworker", AQUA_AFFINITY); + ENCHANTMENTS.put("aquaaffinity", AQUA_AFFINITY); + ALIASENCHANTMENTS.put("watermine", AQUA_AFFINITY); + ALIASENCHANTMENTS.put("ww", AQUA_AFFINITY); + + final Enchantment FLAME = RegistryUtil.valueOf(Enchantment.class, "ARROW_FIRE", "FLAME"); + + ALIASENCHANTMENTS.put("firearrow", FLAME); + ENCHANTMENTS.put("flame", FLAME); + ENCHANTMENTS.put("flamearrow", FLAME); + ALIASENCHANTMENTS.put("af", FLAME); + + final Enchantment POWER = RegistryUtil.valueOf(Enchantment.class, "ARROW_DAMAGE", "POWER"); + + ENCHANTMENTS.put("arrowdamage", POWER); + ENCHANTMENTS.put("power", POWER); + ALIASENCHANTMENTS.put("arrowpower", POWER); + ALIASENCHANTMENTS.put("ad", POWER); + + final Enchantment PUNCH = RegistryUtil.valueOf(Enchantment.class, "ARROW_KNOCKBACK", "PUNCH"); + + ENCHANTMENTS.put("arrowknockback", PUNCH); + ALIASENCHANTMENTS.put("arrowkb", PUNCH); + ENCHANTMENTS.put("punch", PUNCH); + ALIASENCHANTMENTS.put("arrowpunch", PUNCH); + ALIASENCHANTMENTS.put("ak", PUNCH); + + final Enchantment INFINITY = RegistryUtil.valueOf(Enchantment.class, "ARROW_INFINITE", "INFINITY"); + + ALIASENCHANTMENTS.put("infinitearrows", INFINITY); + ENCHANTMENTS.put("infarrows", INFINITY); + ENCHANTMENTS.put("infinity", INFINITY); + ALIASENCHANTMENTS.put("infinite", INFINITY); + ALIASENCHANTMENTS.put("unlimited", INFINITY); + ALIASENCHANTMENTS.put("unlimitedarrows", INFINITY); + ALIASENCHANTMENTS.put("ai", INFINITY); + + final Enchantment LUCK_OF_THE_SEA = RegistryUtil.valueOf(Enchantment.class, "LUCK", "LUCK_OF_THE_SEA"); + + ENCHANTMENTS.put("luck", LUCK_OF_THE_SEA); + ALIASENCHANTMENTS.put("luckofsea", LUCK_OF_THE_SEA); + ALIASENCHANTMENTS.put("luckofseas", LUCK_OF_THE_SEA); + ALIASENCHANTMENTS.put("rodluck", LUCK_OF_THE_SEA); ENCHANTMENTS.put("lure", Enchantment.LURE); ALIASENCHANTMENTS.put("rodlure", Enchantment.LURE); diff --git a/Essentials/src/main/java/com/earth2me/essentials/MetaItemStack.java b/Essentials/src/main/java/com/earth2me/essentials/MetaItemStack.java index 73a97ef29dd..5fb21123d52 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/MetaItemStack.java +++ b/Essentials/src/main/java/com/earth2me/essentials/MetaItemStack.java @@ -30,7 +30,6 @@ import org.bukkit.inventory.meta.LeatherArmorMeta; import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.inventory.meta.SkullMeta; -import org.bukkit.potion.Potion; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; @@ -548,9 +547,11 @@ public void addPotionMeta(final CommandSource sender, final boolean allowShortNa stack.setType(Material.POTION); } } else { + /* todo figure out how to unfuck this code final Potion potion = Potion.fromDamage(stack.getDurability()); potion.setSplash(isSplashPotion); potion.apply(stack); + */ } resetPotionMeta(); } diff --git a/Essentials/src/main/java/com/earth2me/essentials/Mob.java b/Essentials/src/main/java/com/earth2me/essentials/Mob.java index 249746c0f09..45c5e3b56a8 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Mob.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Mob.java @@ -42,9 +42,9 @@ public enum Mob { ENDERDRAGON("EnderDragon", Enemies.ENEMY, EntityType.ENDER_DRAGON), VILLAGER("Villager", Enemies.FRIENDLY, EntityType.VILLAGER), BLAZE("Blaze", Enemies.ENEMY, EntityType.BLAZE), - MUSHROOMCOW("MushroomCow", Enemies.FRIENDLY, EntityType.MUSHROOM_COW), + MUSHROOMCOW("MushroomCow", Enemies.FRIENDLY, MobCompat.MOOSHROOM), MAGMACUBE("MagmaCube", Enemies.ENEMY, EntityType.MAGMA_CUBE), - SNOWMAN("Snowman", Enemies.FRIENDLY, "", EntityType.SNOWMAN), + SNOWMAN("Snowman", Enemies.FRIENDLY, "", MobCompat.SNOW_GOLEM), OCELOT("Ocelot", Enemies.NEUTRAL, EntityType.OCELOT), IRONGOLEM("IronGolem", Enemies.NEUTRAL, EntityType.IRON_GOLEM), WITHER("Wither", Enemies.ENEMY, EntityType.WITHER), @@ -52,12 +52,12 @@ public enum Mob { WITCH("Witch", Enemies.ENEMY, EntityType.WITCH), BOAT("Boat", Enemies.NEUTRAL, EntityType.BOAT), MINECART("Minecart", Enemies.NEUTRAL, EntityType.MINECART), - MINECART_CHEST("ChestMinecart", Enemies.NEUTRAL, EntityType.MINECART_CHEST), - MINECART_FURNACE("FurnaceMinecart", Enemies.NEUTRAL, EntityType.MINECART_FURNACE), - MINECART_TNT("TNTMinecart", Enemies.NEUTRAL, EntityType.MINECART_TNT), - MINECART_HOPPER("HopperMinecart", Enemies.NEUTRAL, EntityType.MINECART_HOPPER), - MINECART_MOB_SPAWNER("SpawnerMinecart", Enemies.NEUTRAL, EntityType.MINECART_MOB_SPAWNER), - ENDERCRYSTAL("EnderCrystal", Enemies.NEUTRAL, EntityType.ENDER_CRYSTAL), + MINECART_CHEST("ChestMinecart", Enemies.NEUTRAL, MobCompat.CHEST_MINECART), + MINECART_FURNACE("FurnaceMinecart", Enemies.NEUTRAL, MobCompat.FURNACE_MINECART), + MINECART_TNT("TNTMinecart", Enemies.NEUTRAL, MobCompat.TNT_MINECART), + MINECART_HOPPER("HopperMinecart", Enemies.NEUTRAL, MobCompat.HOPPER_MINECART), + MINECART_MOB_SPAWNER("SpawnerMinecart", Enemies.NEUTRAL, MobCompat.SPAWNER_MINECART), + ENDERCRYSTAL("EnderCrystal", Enemies.NEUTRAL, MobCompat.END_CRYSTAL), EXPERIENCEORB("ExperienceOrb", Enemies.NEUTRAL, "EXPERIENCE_ORB"), ARMOR_STAND("ArmorStand", Enemies.NEUTRAL, "ARMOR_STAND"), ENDERMITE("Endermite", Enemies.ENEMY, "ENDERMITE"), diff --git a/Essentials/src/main/java/com/earth2me/essentials/MobCompat.java b/Essentials/src/main/java/com/earth2me/essentials/MobCompat.java index e4992f54772..a2d8d6ec787 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/MobCompat.java +++ b/Essentials/src/main/java/com/earth2me/essentials/MobCompat.java @@ -50,6 +50,15 @@ public final class MobCompat { // Constants for mobs that have changed since earlier versions public static final EntityType CAT = getEntityType("CAT", "OCELOT"); public static final EntityType ZOMBIFIED_PIGLIN = getEntityType("ZOMBIFIED_PIGLIN", "PIG_ZOMBIE"); + public static final EntityType MOOSHROOM = getEntityType("MOOSHROOM", "MUSHROOM_COW"); + public static final EntityType SNOW_GOLEM = getEntityType("SNOW_GOLEM", "SNOWMAN"); + public static final EntityType CHEST_MINECART = getEntityType("CHEST_MINECART", "MINECART_CHEST"); + public static final EntityType FURNACE_MINECART = getEntityType("FURNACE_MINECART", "MINECART_FURNACE"); + public static final EntityType TNT_MINECART = getEntityType("TNT_MINECART", "MINECART_TNT"); + public static final EntityType HOPPER_MINECART = getEntityType("HOPPER_MINECART", "MINECART_HOPPER"); + public static final EntityType SPAWNER_MINECART = getEntityType("SPAWNER_MINECART", "MINECART_MOB_SPAWNER"); + public static final EntityType END_CRYSTAL = getEntityType("END_CRYSTAL", "ENDER_CRYSTAL"); + public static final EntityType FIREWORK_ROCKET = getEntityType("FIREWORK_ROCKET", "FIREWORK"); private MobCompat() { } diff --git a/Essentials/src/main/java/com/earth2me/essentials/MobData.java b/Essentials/src/main/java/com/earth2me/essentials/MobData.java index 581713d8240..051a59dc321 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/MobData.java +++ b/Essentials/src/main/java/com/earth2me/essentials/MobData.java @@ -157,8 +157,8 @@ public enum MobData { BLOCKFISH_TROPICAL_FISH("blockfish", MobCompat.TROPICAL_FISH, "tropicalfish:BLOCKFISH", true), BETTY_TROPICAL_FISH("betty", MobCompat.TROPICAL_FISH, "tropicalfish:BETTY", true), CLAYFISH_TROPICAL_FISH("clayfish", MobCompat.TROPICAL_FISH, "tropicalfish:CLAYFISH", true), - BROWN_MUSHROOM_COW("brown", EntityType.MUSHROOM_COW, "mooshroom:BROWN", true), - RED_MUSHROOM_COW("red", EntityType.MUSHROOM_COW, "mooshroom:RED", true), + BROWN_MUSHROOM_COW("brown", MobCompat.MOOSHROOM, "mooshroom:BROWN", true), + RED_MUSHROOM_COW("red", MobCompat.MOOSHROOM, "mooshroom:RED", true), AGGRESSIVE_PANDA_MAIN("aggressive", MobCompat.PANDA, "pandamain:AGGRESSIVE", true), LAZY_PANDA_MAIN("lazy", MobCompat.PANDA, "pandamain:LAZY", true), WORRIED_PANDA_MAIN("worried", MobCompat.PANDA, "pandamain:WORRIED", true), diff --git a/Essentials/src/main/java/com/earth2me/essentials/Potions.java b/Essentials/src/main/java/com/earth2me/essentials/Potions.java index b174a03c12b..21eb45ff448 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/Potions.java +++ b/Essentials/src/main/java/com/earth2me/essentials/Potions.java @@ -1,6 +1,7 @@ package com.earth2me.essentials; import com.earth2me.essentials.utils.NumberUtil; +import com.earth2me.essentials.utils.RegistryUtil; import org.bukkit.potion.PotionEffectType; import java.util.HashMap; @@ -21,50 +22,68 @@ public final class Potions { ALIASPOTIONS.put("sprint", PotionEffectType.SPEED); ALIASPOTIONS.put("swift", PotionEffectType.SPEED); - POTIONS.put("slowness", PotionEffectType.SLOW); - ALIASPOTIONS.put("slow", PotionEffectType.SLOW); - ALIASPOTIONS.put("sluggish", PotionEffectType.SLOW); + final PotionEffectType SLOWNESS = RegistryUtil.valueOf(PotionEffectType.class, "SLOW", "SLOWNESS"); - POTIONS.put("haste", PotionEffectType.FAST_DIGGING); - ALIASPOTIONS.put("superpick", PotionEffectType.FAST_DIGGING); - ALIASPOTIONS.put("quickmine", PotionEffectType.FAST_DIGGING); - ALIASPOTIONS.put("digspeed", PotionEffectType.FAST_DIGGING); - ALIASPOTIONS.put("digfast", PotionEffectType.FAST_DIGGING); - ALIASPOTIONS.put("sharp", PotionEffectType.FAST_DIGGING); + POTIONS.put("slowness", SLOWNESS); + ALIASPOTIONS.put("slow", SLOWNESS); + ALIASPOTIONS.put("sluggish", SLOWNESS); - POTIONS.put("fatigue", PotionEffectType.SLOW_DIGGING); - ALIASPOTIONS.put("slow", PotionEffectType.SLOW_DIGGING); - ALIASPOTIONS.put("dull", PotionEffectType.SLOW_DIGGING); + final PotionEffectType HASTE = RegistryUtil.valueOf(PotionEffectType.class, "FAST_DIGGING", "HASTE"); - POTIONS.put("strength", PotionEffectType.INCREASE_DAMAGE); - ALIASPOTIONS.put("strong", PotionEffectType.INCREASE_DAMAGE); - ALIASPOTIONS.put("bull", PotionEffectType.INCREASE_DAMAGE); - ALIASPOTIONS.put("attack", PotionEffectType.INCREASE_DAMAGE); + POTIONS.put("haste", HASTE); + ALIASPOTIONS.put("superpick", HASTE); + ALIASPOTIONS.put("quickmine", HASTE); + ALIASPOTIONS.put("digspeed", HASTE); + ALIASPOTIONS.put("digfast", HASTE); + ALIASPOTIONS.put("sharp", HASTE); - POTIONS.put("heal", PotionEffectType.HEAL); - ALIASPOTIONS.put("healthy", PotionEffectType.HEAL); - ALIASPOTIONS.put("instaheal", PotionEffectType.HEAL); + final PotionEffectType MINING_FATIGUE = RegistryUtil.valueOf(PotionEffectType.class, "SLOW_DIGGING", "MINING_FATIGUE"); - POTIONS.put("harm", PotionEffectType.HARM); - ALIASPOTIONS.put("harming", PotionEffectType.HARM); - ALIASPOTIONS.put("injure", PotionEffectType.HARM); - ALIASPOTIONS.put("damage", PotionEffectType.HARM); - ALIASPOTIONS.put("inflict", PotionEffectType.HARM); + POTIONS.put("fatigue", MINING_FATIGUE); + ALIASPOTIONS.put("slow", MINING_FATIGUE); + ALIASPOTIONS.put("dull", MINING_FATIGUE); - POTIONS.put("jump", PotionEffectType.JUMP); - ALIASPOTIONS.put("leap", PotionEffectType.JUMP); + final PotionEffectType STRENGTH = RegistryUtil.valueOf(PotionEffectType.class, "INCREASE_DAMAGE", "STRENGTH"); - POTIONS.put("nausea", PotionEffectType.CONFUSION); - ALIASPOTIONS.put("sick", PotionEffectType.CONFUSION); - ALIASPOTIONS.put("sickness", PotionEffectType.CONFUSION); - ALIASPOTIONS.put("confusion", PotionEffectType.CONFUSION); + POTIONS.put("strength", STRENGTH); + ALIASPOTIONS.put("strong", STRENGTH); + ALIASPOTIONS.put("bull", STRENGTH); + ALIASPOTIONS.put("attack", STRENGTH); + + final PotionEffectType INSTANT_HEALTH = RegistryUtil.valueOf(PotionEffectType.class, "HEAL", "INSTANT_HEALTH"); + + POTIONS.put("heal", INSTANT_HEALTH); + ALIASPOTIONS.put("healthy", INSTANT_HEALTH); + ALIASPOTIONS.put("instaheal", INSTANT_HEALTH); + + final PotionEffectType INSTANT_DAMAGE = RegistryUtil.valueOf(PotionEffectType.class, "HARM", "INSTANT_DAMAGE"); + + POTIONS.put("harm", INSTANT_DAMAGE); + ALIASPOTIONS.put("harming", INSTANT_DAMAGE); + ALIASPOTIONS.put("injure", INSTANT_DAMAGE); + ALIASPOTIONS.put("damage", INSTANT_DAMAGE); + ALIASPOTIONS.put("inflict", INSTANT_DAMAGE); + + final PotionEffectType JUMP_BOOST = RegistryUtil.valueOf(PotionEffectType.class, "JUMP", "JUMP_BOOST"); + + POTIONS.put("jump", JUMP_BOOST); + ALIASPOTIONS.put("leap", JUMP_BOOST); + + final PotionEffectType NAUSEA = RegistryUtil.valueOf(PotionEffectType.class, "CONFUSION", "NAUSEA"); + + POTIONS.put("nausea", NAUSEA); + ALIASPOTIONS.put("sick", NAUSEA); + ALIASPOTIONS.put("sickness", NAUSEA); + ALIASPOTIONS.put("confusion", NAUSEA); POTIONS.put("regeneration", PotionEffectType.REGENERATION); ALIASPOTIONS.put("regen", PotionEffectType.REGENERATION); - POTIONS.put("resistance", PotionEffectType.DAMAGE_RESISTANCE); - ALIASPOTIONS.put("dmgresist", PotionEffectType.DAMAGE_RESISTANCE); - ALIASPOTIONS.put("armor", PotionEffectType.DAMAGE_RESISTANCE); + final PotionEffectType RESISTANCE = RegistryUtil.valueOf(PotionEffectType.class, "DAMAGE_RESISTANCE", "RESISTANCE"); + + POTIONS.put("resistance", RESISTANCE); + ALIASPOTIONS.put("dmgresist", RESISTANCE); + ALIASPOTIONS.put("armor", RESISTANCE); POTIONS.put("fireresist", PotionEffectType.FIRE_RESISTANCE); ALIASPOTIONS.put("fireresistance", PotionEffectType.FIRE_RESISTANCE); diff --git a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandfirework.java b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandfirework.java index 53238793aa1..0caddc7c295 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/commands/Commandfirework.java +++ b/Essentials/src/main/java/com/earth2me/essentials/commands/Commandfirework.java @@ -1,6 +1,7 @@ package com.earth2me.essentials.commands; import com.earth2me.essentials.MetaItemStack; +import com.earth2me.essentials.MobCompat; import com.earth2me.essentials.User; import com.earth2me.essentials.utils.MaterialUtil; import com.earth2me.essentials.utils.NumberUtil; @@ -9,7 +10,6 @@ import org.bukkit.DyeColor; import org.bukkit.FireworkEffect; import org.bukkit.Server; -import org.bukkit.entity.EntityType; import org.bukkit.entity.Firework; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.FireworkMeta; @@ -81,7 +81,7 @@ protected void run(final Server server, final User user, final String commandLab } } for (int i = 0; i < amount; i++) { - final Firework firework = (Firework) user.getWorld().spawnEntity(user.getLocation(), EntityType.FIREWORK); + final Firework firework = (Firework) user.getWorld().spawnEntity(user.getLocation(), MobCompat.FIREWORK_ROCKET); final FireworkMeta fmeta = (FireworkMeta) stack.getItemMeta(); if (direction) { final Vector vector = user.getBase().getEyeLocation().getDirection().multiply(0.070); diff --git a/Essentials/src/main/java/com/earth2me/essentials/items/AbstractItemDb.java b/Essentials/src/main/java/com/earth2me/essentials/items/AbstractItemDb.java index 46ea38d5d33..16dc0295200 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/items/AbstractItemDb.java +++ b/Essentials/src/main/java/com/earth2me/essentials/items/AbstractItemDb.java @@ -8,6 +8,7 @@ import com.earth2me.essentials.utils.VersionUtil; import net.ess3.api.IEssentials; import net.ess3.api.PluginKey; +import net.ess3.provider.PotionMetaProvider; import org.bukkit.Color; import org.bukkit.DyeColor; import org.bukkit.FireworkEffect; @@ -287,8 +288,10 @@ public String serialize(final ItemStack is, final boolean useResolvers) { final boolean splash; final Collection effects; if (VersionUtil.PRE_FLATTENING) { - splash = ess.getPotionMetaProvider().isSplash(is); - effects = ess.getPotionMetaProvider().getEffects(is); + final PotionMetaProvider.AbstractPotionData potionData = ess.getPotionMetaProvider().getPotionData(is); + + splash = potionData.isSplash(); + effects = potionData.getEffects(); } else { splash = is.getType() == Material.SPLASH_POTION; effects = ((PotionMeta) is.getItemMeta()).getCustomEffects(); diff --git a/Essentials/src/main/java/com/earth2me/essentials/items/FlatItemDb.java b/Essentials/src/main/java/com/earth2me/essentials/items/FlatItemDb.java index 067030c99d8..560489b21a4 100644 --- a/Essentials/src/main/java/com/earth2me/essentials/items/FlatItemDb.java +++ b/Essentials/src/main/java/com/earth2me/essentials/items/FlatItemDb.java @@ -16,7 +16,6 @@ import org.bukkit.inventory.meta.Damageable; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.PotionMeta; -import org.bukkit.potion.PotionData; import java.util.ArrayList; import java.util.Collection; @@ -133,7 +132,7 @@ public ItemStack get(String id, final boolean useResolvers) throws Exception { if (potionData != null && meta instanceof PotionMeta) { final PotionMeta potionMeta = (PotionMeta) meta; - potionMeta.setBasePotionType(potionData); + //todo figure out what to do here potionMeta.setBasePotionType(potionData); } // For some reason, Damageable doesn't extend ItemMeta but CB implements them in the same diff --git a/Essentials/src/main/java/com/earth2me/essentials/utils/RegistryUtil.java b/Essentials/src/main/java/com/earth2me/essentials/utils/RegistryUtil.java new file mode 100644 index 00000000000..b8c0eff0ec9 --- /dev/null +++ b/Essentials/src/main/java/com/earth2me/essentials/utils/RegistryUtil.java @@ -0,0 +1,20 @@ +package com.earth2me.essentials.utils; + +public final class RegistryUtil { + + private RegistryUtil() { + } + + public static T valueOf(Class registry, String... names) { + for (String name : names) { + try { + final T value = (T) registry.getDeclaredField(name).get(null); + if (value != null) { + return value; + } + } catch (NoSuchFieldException | IllegalAccessException ignored) { + } + } + return null; + } +} diff --git a/providers/1_12Provider/src/main/java/net/ess3/provider/providers/LegacyPotionMetaProvider.java b/providers/1_12Provider/src/main/java/net/ess3/provider/providers/LegacyPotionMetaProvider.java index 3b9507b5441..eb3a0693cbd 100644 --- a/providers/1_12Provider/src/main/java/net/ess3/provider/providers/LegacyPotionMetaProvider.java +++ b/providers/1_12Provider/src/main/java/net/ess3/provider/providers/LegacyPotionMetaProvider.java @@ -104,9 +104,7 @@ public int hashCode() { @Override public void updatePotionStack(ItemStack stack, AbstractPotionData data) { - return; //todo - return; } @Override