SPIGOT-7808: Fix implementation of Enchantment#getName() for bad name return

This commit is contained in:
Doc 2024-07-03 20:21:17 +10:00 committed by md_5
parent 19335f69e3
commit cfe29350be
No known key found for this signature in database
GPG Key ID: E8E901AC7C617C11

View File

@ -57,12 +57,10 @@ public class CraftEnchantment extends Enchantment implements Handleable<net.mine
private final NamespacedKey key; private final NamespacedKey key;
private final Holder<net.minecraft.world.item.enchantment.Enchantment> handle; private final Holder<net.minecraft.world.item.enchantment.Enchantment> handle;
private final int id;
public CraftEnchantment(NamespacedKey key, net.minecraft.world.item.enchantment.Enchantment handle) { public CraftEnchantment(NamespacedKey key, net.minecraft.world.item.enchantment.Enchantment handle) {
this.key = key; this.key = key;
this.handle = CraftRegistry.getMinecraftRegistry(Registries.ENCHANTMENT).wrapAsHolder(handle); this.handle = CraftRegistry.getMinecraftRegistry(Registries.ENCHANTMENT).wrapAsHolder(handle);
this.id = CraftRegistry.getMinecraftRegistry(Registries.ENCHANTMENT).getId(handle);
} }
@Override @Override
@ -108,50 +106,31 @@ public class CraftEnchantment extends Enchantment implements Handleable<net.mine
@Override @Override
public String getName() { public String getName() {
// PAIL: migration paths // PAIL: migration paths
return switch (id) { if (!getKey().getNamespace().equals(NamespacedKey.MINECRAFT)) {
case 0 -> "PROTECTION_ENVIRONMENTAL"; return getKey().toString();
case 1 -> "PROTECTION_FIRE"; }
case 2 -> "PROTECTION_FALL"; String keyName = getKey().getKey().toUpperCase(Locale.ROOT);
case 3 -> "PROTECTION_EXPLOSIONS"; return switch (keyName) {
case 4 -> "PROTECTION_PROJECTILE"; case "PROTECTION" -> "PROTECTION_ENVIRONMENTAL";
case 5 -> "OXYGEN"; case "FIRE_PROTECTION" -> "PROTECTION_FIRE";
case 6 -> "WATER_WORKER"; case "FEATHER_FALLING" -> "PROTECTION_FALL";
case 7 -> "THORNS"; case "BLAST_PROTECTION" -> "PROTECTION_EXPLOSIONS";
case 8 -> "DEPTH_STRIDER"; case "PROJECTILE_PROTECTION" -> "PROTECTION_PROJECTILE";
case 9 -> "FROST_WALKER"; case "RESPIRATION" -> "OXYGEN";
case 10 -> "BINDING_CURSE"; case "AQUA_AFFINITY" -> "WATER_WORKER";
case 11 -> "SOUL_SPEED"; case "SHARPNESS" -> "DAMAGE_ALL";
case 12 -> "SWIFT_SNEAK"; case "SMITE" -> "DAMAGE_UNDEAD";
case 13 -> "DAMAGE_ALL"; case "BANE_OF_ARTHROPODS" -> "DAMAGE_ARTHROPODS";
case 14 -> "DAMAGE_UNDEAD"; case "LOOTING" -> "LOOT_BONUS_MOBS";
case 15 -> "DAMAGE_ARTHROPODS"; case "EFFICIENCY" -> "DIG_SPEED";
case 16 -> "KNOCKBACK"; case "UNBREAKING" -> "DURABILITY";
case 17 -> "FIRE_ASPECT"; case "FORTUNE" -> "LOOT_BONUS_BLOCKS";
case 18 -> "LOOT_BONUS_MOBS"; case "POWER" -> "ARROW_DAMAGE";
case 19 -> "SWEEPING_EDGE"; case "PUNCH" -> "ARROW_KNOCKBACK";
case 20 -> "DIG_SPEED"; case "FLAME" -> "ARROW_FIRE";
case 21 -> "SILK_TOUCH"; case "INFINITY" -> "ARROW_INFINITE";
case 22 -> "DURABILITY"; case "LUCK_OF_THE_SEA" -> "LUCK";
case 23 -> "LOOT_BONUS_BLOCKS"; default -> keyName;
case 24 -> "ARROW_DAMAGE";
case 25 -> "ARROW_KNOCKBACK";
case 26 -> "ARROW_FIRE";
case 27 -> "ARROW_INFINITE";
case 28 -> "LUCK";
case 29 -> "LURE";
case 30 -> "LOYALTY";
case 31 -> "IMPALING";
case 32 -> "RIPTIDE";
case 33 -> "CHANNELING";
case 34 -> "MULTISHOT";
case 35 -> "QUICK_CHARGE";
case 36 -> "PIERCING";
case 37 -> "DENSITY";
case 38 -> "BREACH";
case 39 -> "WIND_BURST";
case 40 -> "MENDING";
case 41 -> "VANISHING_CURSE";
default -> getKey().toString();
}; };
} }