SPIGOT-5336: Field name parity with Minecraft keys

By: DerFrZocker <derrieple@gmail.com>
This commit is contained in:
CraftBukkit/Spigot
2024-04-24 01:15:00 +10:00
parent d122883f57
commit 760899464e
26 changed files with 1306 additions and 156 deletions

View File

@@ -35,14 +35,14 @@ public class CompositeSerialization extends AbstractTestingBase {
stacks.add(new ItemStack(Material.OAK_LEAVES, 32, (short) 2));
ItemStack item7 = new ItemStack(Material.IRON_SHOVEL);
item7.addUnsafeEnchantment(Enchantment.PROTECTION_FIRE, 1);
item7.addUnsafeEnchantment(Enchantment.FIRE_PROTECTION, 1);
stacks.add(item7);
ItemStack item8 = new ItemStack(Material.IRON_PICKAXE);
item8.addUnsafeEnchantment(Enchantment.PROTECTION_FALL, 2);
item8.addUnsafeEnchantment(Enchantment.PROTECTION_EXPLOSIONS, 1);
item8.addUnsafeEnchantment(Enchantment.PROTECTION_PROJECTILE, 5);
item8.addUnsafeEnchantment(Enchantment.OXYGEN, 4);
item8.addUnsafeEnchantment(Enchantment.FEATHER_FALLING, 2);
item8.addUnsafeEnchantment(Enchantment.BLAST_PROTECTION, 1);
item8.addUnsafeEnchantment(Enchantment.PROJECTILE_PROTECTION, 5);
item8.addUnsafeEnchantment(Enchantment.RESPIRATION, 4);
stacks.add(item8);
ItemStack item9 = new ItemStack(Material.APPLE);

View File

@@ -98,46 +98,46 @@ public class ItemMetaTest extends AbstractTestingBase {
@Test
public void testConflictingEnchantment() {
ItemMeta itemMeta = Bukkit.getItemFactory().getItemMeta(Material.DIAMOND_PICKAXE);
assertThat(itemMeta.hasConflictingEnchant(Enchantment.DURABILITY), is(false));
assertThat(itemMeta.hasConflictingEnchant(Enchantment.UNBREAKING), is(false));
itemMeta.addEnchant(Enchantment.SILK_TOUCH, 1, false);
assertThat(itemMeta.hasConflictingEnchant(Enchantment.DURABILITY), is(false));
assertThat(itemMeta.hasConflictingEnchant(Enchantment.LOOT_BONUS_BLOCKS), is(true));
assertThat(itemMeta.hasConflictingEnchant(Enchantment.UNBREAKING), is(false));
assertThat(itemMeta.hasConflictingEnchant(Enchantment.FORTUNE), is(true));
assertThat(itemMeta.hasConflictingEnchant(null), is(false));
}
@Test
public void testConflictingStoredEnchantment() {
EnchantmentStorageMeta itemMeta = (EnchantmentStorageMeta) Bukkit.getItemFactory().getItemMeta(Material.ENCHANTED_BOOK);
assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.DURABILITY), is(false));
assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.UNBREAKING), is(false));
itemMeta.addStoredEnchant(Enchantment.SILK_TOUCH, 1, false);
assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.DURABILITY), is(false));
assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.LOOT_BONUS_BLOCKS), is(true));
assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.UNBREAKING), is(false));
assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.FORTUNE), is(true));
assertThat(itemMeta.hasConflictingStoredEnchant(null), is(false));
}
@Test
public void testConflictingEnchantments() {
ItemMeta itemMeta = Bukkit.getItemFactory().getItemMeta(Material.DIAMOND_PICKAXE);
itemMeta.addEnchant(Enchantment.DURABILITY, 6, true);
itemMeta.addEnchant(Enchantment.DIG_SPEED, 6, true);
assertThat(itemMeta.hasConflictingEnchant(Enchantment.LOOT_BONUS_BLOCKS), is(false));
itemMeta.addEnchant(Enchantment.UNBREAKING, 6, true);
itemMeta.addEnchant(Enchantment.EFFICIENCY, 6, true);
assertThat(itemMeta.hasConflictingEnchant(Enchantment.FORTUNE), is(false));
itemMeta.addEnchant(Enchantment.SILK_TOUCH, 1, false);
assertThat(itemMeta.hasConflictingEnchant(Enchantment.LOOT_BONUS_BLOCKS), is(true));
assertThat(itemMeta.hasConflictingEnchant(Enchantment.FORTUNE), is(true));
assertThat(itemMeta.hasConflictingEnchant(null), is(false));
}
@Test
public void testConflictingStoredEnchantments() {
EnchantmentStorageMeta itemMeta = (EnchantmentStorageMeta) Bukkit.getItemFactory().getItemMeta(Material.ENCHANTED_BOOK);
itemMeta.addStoredEnchant(Enchantment.DURABILITY, 6, true);
itemMeta.addStoredEnchant(Enchantment.DIG_SPEED, 6, true);
assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.LOOT_BONUS_BLOCKS), is(false));
itemMeta.addStoredEnchant(Enchantment.UNBREAKING, 6, true);
itemMeta.addStoredEnchant(Enchantment.EFFICIENCY, 6, true);
assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.FORTUNE), is(false));
itemMeta.addStoredEnchant(Enchantment.SILK_TOUCH, 1, false);
assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.LOOT_BONUS_BLOCKS), is(true));
assertThat(itemMeta.hasConflictingStoredEnchant(Enchantment.FORTUNE), is(true));
assertThat(itemMeta.hasConflictingStoredEnchant(null), is(false));
}
@@ -276,7 +276,7 @@ public class ItemMetaTest extends AbstractTestingBase {
@Override ItemStack operate(final ItemStack cleanStack) {
final PotionMeta meta = (PotionMeta) cleanStack.getItemMeta();
meta.setBasePotionType(PotionType.WATER);
meta.addCustomEffect(PotionEffectType.CONFUSION.createEffect(1, 1), false);
meta.addCustomEffect(PotionEffectType.NAUSEA.createEffect(1, 1), false);
cleanStack.setItemMeta(meta);
return cleanStack;
}
@@ -292,7 +292,7 @@ public class ItemMetaTest extends AbstractTestingBase {
new StackProvider(Material.ENCHANTED_BOOK) {
@Override ItemStack operate(final ItemStack cleanStack) {
final EnchantmentStorageMeta meta = (EnchantmentStorageMeta) cleanStack.getItemMeta();
meta.addStoredEnchant(Enchantment.ARROW_FIRE, 1, true);
meta.addStoredEnchant(Enchantment.FLAME, 1, true);
cleanStack.setItemMeta(meta);
return cleanStack;
}
@@ -369,7 +369,7 @@ public class ItemMetaTest extends AbstractTestingBase {
new StackProvider(Material.SUSPICIOUS_STEW) {
@Override ItemStack operate(ItemStack cleanStack) {
final CraftMetaSuspiciousStew meta = ((CraftMetaSuspiciousStew) cleanStack.getItemMeta());
meta.addCustomEffect(PotionEffectType.CONFUSION.createEffect(1, 0), false);
meta.addCustomEffect(PotionEffectType.NAUSEA.createEffect(1, 0), false);
cleanStack.setItemMeta(meta);
return cleanStack;
}
@@ -402,7 +402,7 @@ public class ItemMetaTest extends AbstractTestingBase {
new StackProvider(Material.GOAT_HORN) {
@Override ItemStack operate(ItemStack cleanStack) {
final CraftMetaMusicInstrument meta = (CraftMetaMusicInstrument) cleanStack.getItemMeta();
meta.setInstrument(MusicInstrument.ADMIRE);
meta.setInstrument(MusicInstrument.ADMIRE_GOAT_HORN);
cleanStack.setItemMeta(meta);
return cleanStack;
}

View File

@@ -29,7 +29,7 @@ public class ItemStackEnchantStorageTest extends ItemStackTest {
@Override
public ItemStack operate(ItemStack cleanStack) {
EnchantmentStorageMeta meta = (EnchantmentStorageMeta) cleanStack.getItemMeta();
meta.addStoredEnchant(Enchantment.DURABILITY, 1, true);
meta.addStoredEnchant(Enchantment.UNBREAKING, 1, true);
cleanStack.setItemMeta(meta);
return cleanStack;
}
@@ -67,7 +67,7 @@ public class ItemStackEnchantStorageTest extends ItemStackTest {
@Override
public ItemStack operate(ItemStack cleanStack) {
EnchantmentStorageMeta meta = (EnchantmentStorageMeta) cleanStack.getItemMeta();
meta.addStoredEnchant(Enchantment.DAMAGE_UNDEAD, 1, true);
meta.addStoredEnchant(Enchantment.SMITE, 1, true);
cleanStack.setItemMeta(meta);
return cleanStack;
}
@@ -76,7 +76,7 @@ public class ItemStackEnchantStorageTest extends ItemStackTest {
@Override
public ItemStack operate(ItemStack cleanStack) {
EnchantmentStorageMeta meta = (EnchantmentStorageMeta) cleanStack.getItemMeta();
meta.addStoredEnchant(Enchantment.DAMAGE_UNDEAD, 1, true);
meta.addStoredEnchant(Enchantment.SMITE, 1, true);
meta.addStoredEnchant(Enchantment.FIRE_ASPECT, 1, true);
cleanStack.setItemMeta(meta);
return cleanStack;
@@ -89,7 +89,7 @@ public class ItemStackEnchantStorageTest extends ItemStackTest {
@Override
public ItemStack operate(ItemStack cleanStack) {
EnchantmentStorageMeta meta = (EnchantmentStorageMeta) cleanStack.getItemMeta();
meta.addStoredEnchant(Enchantment.PROTECTION_FIRE, 1, true);
meta.addStoredEnchant(Enchantment.FIRE_PROTECTION, 1, true);
cleanStack.setItemMeta(meta);
return cleanStack;
}
@@ -98,7 +98,7 @@ public class ItemStackEnchantStorageTest extends ItemStackTest {
@Override
public ItemStack operate(ItemStack cleanStack) {
EnchantmentStorageMeta meta = (EnchantmentStorageMeta) cleanStack.getItemMeta();
meta.addEnchant(Enchantment.PROTECTION_FIRE, 2, true);
meta.addEnchant(Enchantment.FIRE_PROTECTION, 2, true);
cleanStack.setItemMeta(meta);
return cleanStack;
}

View File

@@ -149,7 +149,7 @@ public class ItemStackLoreEnchantmentTest extends ItemStackTest {
new Operator() {
@Override
public ItemStack operate(ItemStack cleanStack) {
cleanStack.addUnsafeEnchantment(Enchantment.DIG_SPEED, 2);
cleanStack.addUnsafeEnchantment(Enchantment.EFFICIENCY, 2);
return cleanStack;
}
},
@@ -165,7 +165,7 @@ public class ItemStackLoreEnchantmentTest extends ItemStackTest {
new Operator() {
@Override
public ItemStack operate(ItemStack cleanStack) {
cleanStack.addUnsafeEnchantment(Enchantment.OXYGEN, 1);
cleanStack.addUnsafeEnchantment(Enchantment.RESPIRATION, 1);
return cleanStack;
}
},
@@ -183,14 +183,14 @@ public class ItemStackLoreEnchantmentTest extends ItemStackTest {
new Operator() {
@Override
public ItemStack operate(ItemStack cleanStack) {
cleanStack.addUnsafeEnchantment(Enchantment.ARROW_DAMAGE, 1);
cleanStack.addUnsafeEnchantment(Enchantment.POWER, 1);
return cleanStack;
}
},
new Operator() {
@Override
public ItemStack operate(ItemStack cleanStack) {
cleanStack.addUnsafeEnchantment(Enchantment.ARROW_FIRE, 1);
cleanStack.addUnsafeEnchantment(Enchantment.FLAME, 1);
return cleanStack;
}
},
@@ -201,7 +201,7 @@ public class ItemStackLoreEnchantmentTest extends ItemStackTest {
@Override
public ItemStack operate(ItemStack cleanStack) {
ItemMeta meta = cleanStack.getItemMeta();
meta.addEnchant(Enchantment.DURABILITY, 1, true);
meta.addEnchant(Enchantment.UNBREAKING, 1, true);
cleanStack.setItemMeta(meta);
return cleanStack;
}
@@ -239,7 +239,7 @@ public class ItemStackLoreEnchantmentTest extends ItemStackTest {
@Override
public ItemStack operate(ItemStack cleanStack) {
ItemMeta meta = cleanStack.getItemMeta();
meta.addEnchant(Enchantment.PROTECTION_FIRE, 1, true);
meta.addEnchant(Enchantment.FIRE_PROTECTION, 1, true);
cleanStack.setItemMeta(meta);
return cleanStack;
}
@@ -248,7 +248,7 @@ public class ItemStackLoreEnchantmentTest extends ItemStackTest {
@Override
public ItemStack operate(ItemStack cleanStack) {
ItemMeta meta = cleanStack.getItemMeta();
meta.addEnchant(Enchantment.PROTECTION_FIRE, 2, true);
meta.addEnchant(Enchantment.FIRE_PROTECTION, 2, true);
cleanStack.setItemMeta(meta);
return cleanStack;
}

View File

@@ -29,7 +29,7 @@ public class ItemStackPotionsTest extends ItemStackTest {
@Override
public ItemStack operate(ItemStack cleanStack) {
final PotionMeta meta = (PotionMeta) cleanStack.getItemMeta();
meta.addCustomEffect(PotionEffectType.CONFUSION.createEffect(1, 1), false);
meta.addCustomEffect(PotionEffectType.NAUSEA.createEffect(1, 1), false);
cleanStack.setItemMeta(meta);
return cleanStack;
}
@@ -47,7 +47,7 @@ public class ItemStackPotionsTest extends ItemStackTest {
@Override
public ItemStack operate(ItemStack cleanStack) {
final PotionMeta meta = (PotionMeta) cleanStack.getItemMeta();
meta.addCustomEffect(PotionEffectType.HARM.createEffect(2, 1), false);
meta.addCustomEffect(PotionEffectType.INSTANT_DAMAGE.createEffect(2, 1), false);
cleanStack.setItemMeta(meta);
return cleanStack;
}
@@ -67,7 +67,7 @@ public class ItemStackPotionsTest extends ItemStackTest {
@Override
public ItemStack operate(ItemStack cleanStack) {
final PotionMeta meta = (PotionMeta) cleanStack.getItemMeta();
meta.addCustomEffect(PotionEffectType.SLOW_DIGGING.createEffect(1, 1), false);
meta.addCustomEffect(PotionEffectType.MINING_FATIGUE.createEffect(1, 1), false);
cleanStack.setItemMeta(meta);
return cleanStack;
}
@@ -76,7 +76,7 @@ public class ItemStackPotionsTest extends ItemStackTest {
@Override
public ItemStack operate(ItemStack cleanStack) {
final PotionMeta meta = (PotionMeta) cleanStack.getItemMeta();
meta.addCustomEffect(PotionEffectType.FAST_DIGGING.createEffect(1, 1), false);
meta.addCustomEffect(PotionEffectType.HASTE.createEffect(1, 1), false);
cleanStack.setItemMeta(meta);
return cleanStack;
}
@@ -88,7 +88,7 @@ public class ItemStackPotionsTest extends ItemStackTest {
@Override
public ItemStack operate(ItemStack cleanStack) {
final PotionMeta meta = (PotionMeta) cleanStack.getItemMeta();
meta.addCustomEffect(PotionEffectType.JUMP.createEffect(1, 1), false);
meta.addCustomEffect(PotionEffectType.JUMP_BOOST.createEffect(1, 1), false);
cleanStack.setItemMeta(meta);
return cleanStack;
}
@@ -97,7 +97,7 @@ public class ItemStackPotionsTest extends ItemStackTest {
@Override
public ItemStack operate(ItemStack cleanStack) {
final PotionMeta meta = (PotionMeta) cleanStack.getItemMeta();
meta.addCustomEffect(PotionEffectType.JUMP.createEffect(1, 1), false);
meta.addCustomEffect(PotionEffectType.JUMP_BOOST.createEffect(1, 1), false);
meta.addCustomEffect(PotionEffectType.REGENERATION.createEffect(1, 1), false);
cleanStack.setItemMeta(meta);
return cleanStack;
@@ -131,7 +131,7 @@ public class ItemStackPotionsTest extends ItemStackTest {
@Override
public ItemStack operate(ItemStack cleanStack) {
final PotionMeta meta = (PotionMeta) cleanStack.getItemMeta();
meta.addCustomEffect(PotionEffectType.INCREASE_DAMAGE.createEffect(1, 1), false);
meta.addCustomEffect(PotionEffectType.STRENGTH.createEffect(1, 1), false);
cleanStack.setItemMeta(meta);
return cleanStack;
}
@@ -140,7 +140,7 @@ public class ItemStackPotionsTest extends ItemStackTest {
@Override
public ItemStack operate(ItemStack cleanStack) {
final PotionMeta meta = (PotionMeta) cleanStack.getItemMeta();
meta.addCustomEffect(PotionEffectType.INCREASE_DAMAGE.createEffect(1, 2), false);
meta.addCustomEffect(PotionEffectType.STRENGTH.createEffect(1, 2), false);
cleanStack.setItemMeta(meta);
return cleanStack;
}

View File

@@ -0,0 +1,158 @@
package org.bukkit.craftbukkit.util;
import static org.junit.jupiter.api.Assertions.*;
import java.util.stream.Stream;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
public class ApiVersionTest {
public static Stream<Arguments> parseData() {
return Stream.of(
Arguments.of(null, "none"),
Arguments.of("", "none"),
Arguments.of("none", "none"),
Arguments.of("1.12", "1.12.0"),
Arguments.of("1.13.3", "1.13.3"),
Arguments.of("1.+20.3", "1.20.3")
);
}
public static Stream<Arguments> compareData() {
return Stream.of(
Arguments.of("none", "none", CompareResult.SAME),
Arguments.of("none", "1.20", CompareResult.SMALLER),
Arguments.of("2.20.3", "1.30.4", CompareResult.BIGGER),
Arguments.of("1.13", "1.12", CompareResult.BIGGER),
Arguments.of("1.13.2", "1.13.3", CompareResult.SMALLER)
);
}
public static Stream<Arguments> newerData() {
return Stream.of(
Arguments.of("1.12", "1.12", false),
Arguments.of("1.12", "1.12.2", false),
Arguments.of("1.12.2", "1.12", true)
);
}
public static Stream<Arguments> olderData() {
return Stream.of(
Arguments.of("1.12", "1.12", false),
Arguments.of("1.12", "1.12.2", true),
Arguments.of("1.12.2", "1.12", false)
);
}
public static Stream<Arguments> newerOrSameData() {
return Stream.of(
Arguments.of("1.12", "1.12", true),
Arguments.of("1.12", "1.12.2", false),
Arguments.of("1.12.2", "1.12", true)
);
}
public static Stream<Arguments> olderOrSameData() {
return Stream.of(
Arguments.of("1.12", "1.12", true),
Arguments.of("1.12", "1.12.2", true),
Arguments.of("1.12.2", "1.12", false)
);
}
@ParameterizedTest
@MethodSource("parseData")
public void testParsing(String parse, String expected) {
ApiVersion apiVersion = ApiVersion.getOrCreateVersion(parse);
assertEquals(expected, apiVersion.getVersionString());
}
@Test
public void testSameInstance() {
ApiVersion one = ApiVersion.getOrCreateVersion("1.23.3");
ApiVersion second = ApiVersion.getOrCreateVersion("1.+23.3");
assertSame(one, second);
}
@ParameterizedTest
@MethodSource("compareData")
public void testCompareTo(String first, String second, CompareResult compareResult) {
ApiVersion firstApi = ApiVersion.getOrCreateVersion(first);
ApiVersion secondApi = ApiVersion.getOrCreateVersion(second);
int result = firstApi.compareTo(secondApi);
assertSame(compareResult, CompareResult.toCompareResult(result));
}
@ParameterizedTest
@MethodSource("newerData")
public void testNewerThan(String first, String second, boolean newer) {
ApiVersion firstApi = ApiVersion.getOrCreateVersion(first);
ApiVersion secondApi = ApiVersion.getOrCreateVersion(second);
boolean result = firstApi.isNewerThan(secondApi);
assertSame(newer, result);
}
@ParameterizedTest
@MethodSource("olderData")
public void testOlderThan(String first, String second, boolean older) {
ApiVersion firstApi = ApiVersion.getOrCreateVersion(first);
ApiVersion secondApi = ApiVersion.getOrCreateVersion(second);
boolean result = firstApi.isOlderThan(secondApi);
assertSame(older, result);
}
@ParameterizedTest
@MethodSource("newerOrSameData")
public void testNewerOrSame(String first, String second, boolean newerOrSame) {
ApiVersion firstApi = ApiVersion.getOrCreateVersion(first);
ApiVersion secondApi = ApiVersion.getOrCreateVersion(second);
boolean result = firstApi.isNewerThanOrSameAs(secondApi);
assertSame(newerOrSame, result);
}
@ParameterizedTest
@MethodSource("olderOrSameData")
public void testOlderOrSame(String first, String second, boolean olderOrSame) {
ApiVersion firstApi = ApiVersion.getOrCreateVersion(first);
ApiVersion secondApi = ApiVersion.getOrCreateVersion(second);
boolean result = firstApi.isOlderThanOrSameAs(secondApi);
assertSame(olderOrSame, result);
}
public enum CompareResult {
SMALLER,
BIGGER,
SAME;
public static CompareResult toCompareResult(int i) {
if (i == 0) {
return CompareResult.SAME;
}
if (i < 0) {
return CompareResult.SMALLER;
}
return CompareResult.BIGGER;
}
}
}

View File

@@ -9,6 +9,7 @@ import net.minecraft.resources.MinecraftKey;
import net.minecraft.world.effect.MobEffect;
import net.minecraft.world.effect.MobEffectList;
import net.minecraft.world.item.alchemy.PotionRegistry;
import org.bukkit.craftbukkit.legacy.FieldRename;
import org.bukkit.craftbukkit.potion.CraftPotionEffectType;
import org.bukkit.support.AbstractTestingBase;
import org.junit.jupiter.api.Test;
@@ -42,7 +43,7 @@ public class PotionTest extends AbstractTestingBase {
assertNotNull(bukkit, "No Bukkit type for " + key);
assertFalse(bukkit.getName().contains("UNKNOWN"), "No name for " + key);
PotionEffectType byName = PotionEffectType.getByName(bukkit.getName());
PotionEffectType byName = FieldRename.getByName_PotionEffectType(bukkit.getName());
assertEquals(bukkit, byName, "Same type not returned by name " + key);
}
}