@@ -17,14 +17,14 @@ public class BiomeTest extends AbstractTestingBase {
|
||||
continue;
|
||||
}
|
||||
|
||||
Assert.assertNotNull("No NMS mapping for " + biome, CraftBlock.biomeToBiomeBase(RegistryGeneration.WORLDGEN_BIOME, biome));
|
||||
Assert.assertNotNull("No NMS mapping for " + biome, CraftBlock.biomeToBiomeBase(RegistryGeneration.BIOME, biome));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMinecraftToBukkit() {
|
||||
for (BiomeBase biomeBase : RegistryGeneration.WORLDGEN_BIOME) {
|
||||
Biome biome = CraftBlock.biomeBaseToBiome(RegistryGeneration.WORLDGEN_BIOME, biomeBase);
|
||||
for (BiomeBase biomeBase : RegistryGeneration.BIOME) {
|
||||
Biome biome = CraftBlock.biomeBaseToBiome(RegistryGeneration.BIOME, biomeBase);
|
||||
Assert.assertTrue("No Bukkit mapping for " + biomeBase, biome != null && biome != Biome.CUSTOM);
|
||||
}
|
||||
}
|
||||
|
||||
19
paper-server/src/test/java/org/bukkit/GameEventTest.java
Normal file
19
paper-server/src/test/java/org/bukkit/GameEventTest.java
Normal file
@@ -0,0 +1,19 @@
|
||||
package org.bukkit;
|
||||
|
||||
import net.minecraft.core.IRegistry;
|
||||
import org.bukkit.craftbukkit.util.CraftNamespacedKey;
|
||||
import org.bukkit.support.AbstractTestingBase;
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
public class GameEventTest extends AbstractTestingBase {
|
||||
|
||||
@Test
|
||||
public void toBukkit() {
|
||||
for (net.minecraft.world.level.gameevent.GameEvent nms : IRegistry.GAME_EVENT) {
|
||||
GameEvent bukkit = GameEvent.getByKey(CraftNamespacedKey.fromMinecraft(IRegistry.GAME_EVENT.getKey(nms)));
|
||||
|
||||
Assert.assertNotNull("Bukkit should not be null " + nms, bukkit);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -22,6 +22,10 @@ public class ParticleTest extends AbstractTestingBase {
|
||||
data = new MaterialData(Material.LEGACY_STONE);
|
||||
} else if (bukkit.getDataType() == Particle.DustOptions.class) {
|
||||
data = new Particle.DustOptions(Color.BLACK, 0);
|
||||
} else if (bukkit.getDataType() == Particle.DustTransition.class) {
|
||||
data = new Particle.DustTransition(Color.BLACK, Color.WHITE, 0);
|
||||
} else if (bukkit.getDataType() == Vibration.class) {
|
||||
data = new Vibration(new Location(null, 0, 0, 0), new Vibration.Destination.BlockDestination(new Location(null, 0, 0, 0)), 0);
|
||||
} else if (bukkit.getDataType() == BlockData.class) {
|
||||
data = CraftBlockData.newData(Material.STONE, "");
|
||||
}
|
||||
|
||||
@@ -27,7 +27,6 @@ import org.bukkit.enchantments.EnchantmentTarget;
|
||||
import org.bukkit.inventory.EquipmentSlot;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.support.AbstractTestingBase;
|
||||
import org.bukkit.support.Util;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -41,7 +40,7 @@ public class PerMaterialTest extends AbstractTestingBase {
|
||||
|
||||
@BeforeClass
|
||||
public static void getFireValues() {
|
||||
fireValues = Util.getInternalState(BlockFire.class, Blocks.FIRE, "flameChances");
|
||||
fireValues = ((BlockFire) Blocks.FIRE).flameOdds;
|
||||
}
|
||||
|
||||
@Parameters(name = "{index}: {0}")
|
||||
@@ -232,7 +231,7 @@ public class PerMaterialTest extends AbstractTestingBase {
|
||||
@Test
|
||||
public void testBlockHardness() {
|
||||
if (material.isBlock()) {
|
||||
assertThat(material.getHardness(), is(CraftMagicNumbers.getBlock(material).getBlockData().strength));
|
||||
assertThat(material.getHardness(), is(CraftMagicNumbers.getBlock(material).getBlockData().destroySpeed));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -263,7 +262,7 @@ public class PerMaterialTest extends AbstractTestingBase {
|
||||
@Test
|
||||
public void testEquipmentSlot() {
|
||||
if (material.isItem()) {
|
||||
EquipmentSlot expected = CraftEquipmentSlot.getSlot(EntityInsentient.j(CraftItemStack.asNMSCopy(new ItemStack(material)))); // PAIL rename getEquipmentSlotForItem
|
||||
EquipmentSlot expected = CraftEquipmentSlot.getSlot(EntityInsentient.getEquipmentSlotForItem(CraftItemStack.asNMSCopy(new ItemStack(material))));
|
||||
assertThat(material.getEquipmentSlot(), is(expected));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@ public class StatisticsAndAchievementsTest extends AbstractTestingBase {
|
||||
@SuppressWarnings("unchecked")
|
||||
public void verifyStatisticMapping() throws Throwable {
|
||||
HashMultiset<Statistic> statistics = HashMultiset.create();
|
||||
for (StatisticWrapper wrapper : IRegistry.STATS) {
|
||||
for (StatisticWrapper wrapper : IRegistry.STAT_TYPE) {
|
||||
for (Object child : wrapper.getRegistry()) {
|
||||
net.minecraft.stats.Statistic<?> statistic = wrapper.b(child);
|
||||
String message = String.format("org.bukkit.Statistic is missing: '%s'", statistic);
|
||||
|
||||
@@ -32,16 +32,23 @@ public class ChunkDataTest extends AbstractTestingBase {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMinHeight() {
|
||||
CraftChunkData data = new CraftChunkData(-128, 128);
|
||||
assertTrue("Could not set block below min height", testSetBlock(data, 0, -256, 0, RED_WOOL, AIR));
|
||||
assertTrue("Could set block above min height", testSetBlock(data, 0, -64, 0, RED_WOOL, RED_WOOL));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testMaxHeight() {
|
||||
CraftChunkData data = new CraftChunkData(128);
|
||||
CraftChunkData data = new CraftChunkData(0, 128);
|
||||
assertTrue("Could not set block above max height", testSetBlock(data, 0, 128, 0, RED_WOOL, AIR));
|
||||
assertTrue("Could set block below max height", testSetBlock(data, 0, 127, 0, RED_WOOL, RED_WOOL));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testBoundsCheckingSingle() {
|
||||
CraftChunkData data = new CraftChunkData(256);
|
||||
CraftChunkData data = new CraftChunkData(0, 256);
|
||||
assertTrue("Can set block inside chunk bounds", testSetBlock(data, 0, 0, 0, RED_WOOL, RED_WOOL));
|
||||
assertTrue("Can set block inside chunk bounds", testSetBlock(data, 15, 255, 15, RED_WOOL, RED_WOOL));
|
||||
assertTrue("Can no set block outside chunk bounds", testSetBlock(data, -1, 0, 0, RED_WOOL, AIR));
|
||||
@@ -54,7 +61,7 @@ public class ChunkDataTest extends AbstractTestingBase {
|
||||
|
||||
@Test
|
||||
public void testSetRegion() {
|
||||
CraftChunkData data = new CraftChunkData(256);
|
||||
CraftChunkData data = new CraftChunkData(0, 256);
|
||||
testSetRegion(data, -100, 0, -100, 0, 256, 0, RED_WOOL); // exclusively outside
|
||||
testSetRegion(data, 16, 256, 16, 0, 0, 0, RED_WOOL); // minimum >= maximum
|
||||
testSetRegion(data, 0, 0, 0, 0, 0, 0, RED_WOOL); // minimum == maximum
|
||||
|
||||
@@ -36,6 +36,7 @@ import org.bukkit.inventory.meta.BannerMeta;
|
||||
import org.bukkit.inventory.meta.BlockDataMeta;
|
||||
import org.bukkit.inventory.meta.BlockStateMeta;
|
||||
import org.bukkit.inventory.meta.BookMeta;
|
||||
import org.bukkit.inventory.meta.BundleMeta;
|
||||
import org.bukkit.inventory.meta.CrossbowMeta;
|
||||
import org.bukkit.inventory.meta.EnchantmentStorageMeta;
|
||||
import org.bukkit.inventory.meta.FireworkEffectMeta;
|
||||
@@ -341,6 +342,14 @@ public class ItemMetaTest extends AbstractTestingBase {
|
||||
cleanStack.setItemMeta(meta);
|
||||
return cleanStack;
|
||||
}
|
||||
},
|
||||
new StackProvider(Material.BUNDLE) {
|
||||
@Override ItemStack operate(ItemStack cleanStack) {
|
||||
final BundleMeta meta = (BundleMeta) cleanStack.getItemMeta();
|
||||
meta.addItem(new ItemStack(Material.STONE));
|
||||
cleanStack.setItemMeta(meta);
|
||||
return cleanStack;
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ public class NMSCraftItemStackTest extends AbstractTestingBase {
|
||||
@Test
|
||||
public void testCloneEnchantedItem() throws Exception {
|
||||
net.minecraft.world.item.ItemStack nmsItemStack = new net.minecraft.world.item.ItemStack(net.minecraft.world.item.Items.POTION);
|
||||
nmsItemStack.addEnchantment(Enchantments.DAMAGE_ALL, 1);
|
||||
nmsItemStack.addEnchantment(Enchantments.SHARPNESS, 1);
|
||||
ItemStack itemStack = CraftItemStack.asCraftMirror(nmsItemStack);
|
||||
ItemStack clone = itemStack.clone();
|
||||
assertThat(clone.getType(), is(itemStack.getType()));
|
||||
|
||||
@@ -64,6 +64,25 @@ public class LegacyTest extends AbstractTestingBase {
|
||||
Material.SOUL_CAMPFIRE, Material.STRIDER_SPAWN_EGG, Material.WARPED_FUNGUS_ON_A_STICK, Material.ZOGLIN_SPAWN_EGG, Material.CHAIN, Material.MUSIC_DISC_PIGSTEP,
|
||||
// 1.16.2
|
||||
Material.PIGLIN_BRUTE_SPAWN_EGG,
|
||||
// 1.17
|
||||
Material.AMETHYST_BLOCK, Material.AMETHYST_CLUSTER, Material.AMETHYST_SHARD, Material.AXOLOTL_BUCKET, Material.AXOLOTL_SPAWN_EGG, Material.AZALEA, Material.AZALEA_LEAVES, Material.FLOWERING_AZALEA_LEAVES, Material.BIG_DRIPLEAF,
|
||||
Material.BIG_DRIPLEAF_STEM, Material.BLACK_CANDLE, Material.BLACK_CANDLE_CAKE, Material.BLUE_CANDLE, Material.BLUE_CANDLE_CAKE, Material.BROWN_CANDLE, Material.BROWN_CANDLE_CAKE, Material.BUDDING_AMETHYST, Material.BUNDLE, Material.CALCITE,
|
||||
Material.CANDLE, Material.CANDLE_CAKE, Material.CAVE_VINES, Material.CAVE_VINES_PLANT, Material.CHISELED_DEEPSLATE, Material.COBBLED_DEEPSLATE, Material.COBBLED_DEEPSLATE_SLAB, Material.COBBLED_DEEPSLATE_STAIRS, Material.COBBLED_DEEPSLATE_WALL,
|
||||
Material.COPPER_BLOCK, Material.COPPER_INGOT, Material.COPPER_ORE, Material.CRACKED_DEEPSLATE_BRICKS, Material.CRACKED_DEEPSLATE_TILES, Material.CUT_COPPER, Material.CUT_COPPER_SLAB, Material.CUT_COPPER_STAIRS, Material.CYAN_CANDLE,
|
||||
Material.CYAN_CANDLE_CAKE, Material.DEEPSLATE, Material.DEEPSLATE_BRICKS, Material.DEEPSLATE_BRICK_SLAB, Material.DEEPSLATE_BRICK_STAIRS, Material.DEEPSLATE_BRICK_WALL, Material.DEEPSLATE_COAL_ORE, Material.DEEPSLATE_COPPER_ORE,
|
||||
Material.DEEPSLATE_DIAMOND_ORE, Material.DEEPSLATE_EMERALD_ORE, Material.DEEPSLATE_GOLD_ORE, Material.DEEPSLATE_IRON_ORE, Material.DEEPSLATE_LAPIS_ORE, Material.DEEPSLATE_REDSTONE_ORE, Material.DEEPSLATE_TILES, Material.DEEPSLATE_TILE_SLAB,
|
||||
Material.DEEPSLATE_TILE_STAIRS, Material.DEEPSLATE_TILE_WALL, Material.DRIPSTONE_BLOCK, Material.EXPOSED_COPPER, Material.EXPOSED_CUT_COPPER, Material.EXPOSED_CUT_COPPER_SLAB, Material.EXPOSED_CUT_COPPER_STAIRS, Material.FLOWERING_AZALEA,
|
||||
Material.GLOW_BERRIES, Material.GLOW_INK_SAC, Material.GLOW_ITEM_FRAME, Material.GLOW_LICHEN, Material.GLOW_SQUID_SPAWN_EGG, Material.GOAT_SPAWN_EGG, Material.GRAY_CANDLE, Material.GRAY_CANDLE_CAKE, Material.GREEN_CANDLE,
|
||||
Material.GREEN_CANDLE_CAKE, Material.HANGING_ROOTS, Material.INFESTED_DEEPSLATE, Material.LARGE_AMETHYST_BUD, Material.LAVA_CAULDRON, Material.LIGHT, Material.LIGHTNING_ROD, Material.LIGHT_BLUE_CANDLE, Material.LIGHT_BLUE_CANDLE_CAKE,
|
||||
Material.LIGHT_GRAY_CANDLE, Material.LIGHT_GRAY_CANDLE_CAKE, Material.LIME_CANDLE, Material.LIME_CANDLE_CAKE, Material.MAGENTA_CANDLE, Material.MAGENTA_CANDLE_CAKE, Material.MEDIUM_AMETHYST_BUD, Material.MOSS_BLOCK, Material.MOSS_CARPET,
|
||||
Material.ORANGE_CANDLE, Material.ORANGE_CANDLE_CAKE, Material.OXIDIZED_COPPER, Material.OXIDIZED_CUT_COPPER, Material.OXIDIZED_CUT_COPPER_SLAB, Material.OXIDIZED_CUT_COPPER_STAIRS, Material.PINK_CANDLE, Material.PINK_CANDLE_CAKE,
|
||||
Material.POINTED_DRIPSTONE, Material.POLISHED_DEEPSLATE, Material.POLISHED_DEEPSLATE_SLAB, Material.POLISHED_DEEPSLATE_STAIRS, Material.POLISHED_DEEPSLATE_WALL, Material.POWDER_SNOW, Material.POWDER_SNOW_BUCKET, Material.POWDER_SNOW_CAULDRON,
|
||||
Material.PURPLE_CANDLE, Material.PURPLE_CANDLE_CAKE, Material.RAW_COPPER, Material.RAW_COPPER_BLOCK, Material.RAW_GOLD, Material.RAW_GOLD_BLOCK, Material.RAW_IRON, Material.RAW_IRON_BLOCK, Material.RED_CANDLE, Material.RED_CANDLE_CAKE,
|
||||
Material.ROOTED_DIRT, Material.SCULK_SENSOR, Material.SMALL_AMETHYST_BUD, Material.SMALL_DRIPLEAF, Material.SMOOTH_BASALT, Material.SPORE_BLOSSOM, Material.SPYGLASS, Material.TINTED_GLASS, Material.TUFF, Material.WATER_CAULDRON,
|
||||
Material.WAXED_COPPER_BLOCK, Material.WAXED_CUT_COPPER, Material.WAXED_CUT_COPPER_SLAB, Material.WAXED_CUT_COPPER_STAIRS, Material.WAXED_EXPOSED_COPPER, Material.WAXED_EXPOSED_CUT_COPPER, Material.WAXED_EXPOSED_CUT_COPPER_SLAB,
|
||||
Material.WAXED_EXPOSED_CUT_COPPER_STAIRS, Material.WAXED_OXIDIZED_COPPER, Material.WAXED_OXIDIZED_CUT_COPPER, Material.WAXED_OXIDIZED_CUT_COPPER_SLAB, Material.WAXED_OXIDIZED_CUT_COPPER_STAIRS, Material.WAXED_WEATHERED_COPPER,
|
||||
Material.WAXED_WEATHERED_CUT_COPPER, Material.WAXED_WEATHERED_CUT_COPPER_SLAB, Material.WAXED_WEATHERED_CUT_COPPER_STAIRS, Material.WEATHERED_COPPER, Material.WEATHERED_CUT_COPPER, Material.WEATHERED_CUT_COPPER_SLAB,
|
||||
Material.WEATHERED_CUT_COPPER_STAIRS, Material.WHITE_CANDLE, Material.WHITE_CANDLE_CAKE, Material.YELLOW_CANDLE, Material.YELLOW_CANDLE_CAKE, Material.POTTED_AZALEA_BUSH, Material.POTTED_FLOWERING_AZALEA_BUSH,
|
||||
//
|
||||
Material.LEGACY_AIR, Material.LEGACY_DEAD_BUSH, Material.LEGACY_BURNING_FURNACE, Material.LEGACY_WALL_SIGN, Material.LEGACY_REDSTONE_TORCH_OFF, Material.LEGACY_SKULL, Material.LEGACY_REDSTONE_COMPARATOR_ON, Material.LEGACY_WALL_BANNER, Material.LEGACY_MONSTER_EGG));
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ public class EnderDragonPhaseTest {
|
||||
Assert.assertEquals("ROAR_BEFORE_ATTACK", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.ROAR_BEFORE_ATTACK), DragonControllerPhase.SITTING_ATTACKING);
|
||||
Assert.assertEquals("CHARGE_PLAYER", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.CHARGE_PLAYER), DragonControllerPhase.CHARGING_PLAYER);
|
||||
Assert.assertEquals("DYING", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.DYING), DragonControllerPhase.DYING);
|
||||
Assert.assertEquals("HOVER", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.HOVER), DragonControllerPhase.HOVER);
|
||||
Assert.assertEquals("HOVER", CraftEnderDragon.getMinecraftPhase(EnderDragon.Phase.HOVER), DragonControllerPhase.HOVERING);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -43,6 +43,6 @@ public class EnderDragonPhaseTest {
|
||||
Assert.assertEquals("ROAR_BEFORE_ATTACK", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.SITTING_ATTACKING), EnderDragon.Phase.ROAR_BEFORE_ATTACK);
|
||||
Assert.assertEquals("CHARGE_PLAYER", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.CHARGING_PLAYER), EnderDragon.Phase.CHARGE_PLAYER);
|
||||
Assert.assertEquals("DYING", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.DYING), EnderDragon.Phase.DYING);
|
||||
Assert.assertEquals("HOVER", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.HOVER), EnderDragon.Phase.HOVER);
|
||||
Assert.assertEquals("HOVER", CraftEnderDragon.getBukkitPhase(DragonControllerPhase.HOVERING), EnderDragon.Phase.HOVER);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -49,7 +49,7 @@ public class CraftMemoryKeyTest extends AbstractTestingBase {
|
||||
|
||||
@Test
|
||||
public void shouldReturnNullWhenBukkitRepresentationOfKeyisNotAvailable() {
|
||||
MemoryKey bukkitNoKey = CraftMemoryKey.toMemoryKey(MemoryModuleType.MOBS);
|
||||
MemoryKey bukkitNoKey = CraftMemoryKey.toMemoryKey(MemoryModuleType.NEAREST_LIVING_ENTITIES);
|
||||
Assert.assertNull("MemoryModuleType should be null", bukkitNoKey);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ public class MapTest {
|
||||
|
||||
@Test
|
||||
public void testColors() {
|
||||
MaterialMapColor[] nmsColors = MaterialMapColor.a;
|
||||
MaterialMapColor[] nmsColors = MaterialMapColor.MATERIAL_COLORS;
|
||||
Color[] bukkitColors = MapPalette.colors;
|
||||
|
||||
boolean fail = false;
|
||||
@@ -23,7 +23,7 @@ public class MapTest {
|
||||
if (nmsColors[i] == null) {
|
||||
break;
|
||||
}
|
||||
int rgb = nmsColors[i].rgb;
|
||||
int rgb = nmsColors[i].col;
|
||||
|
||||
int r = (rgb >> 16) & 0xFF;
|
||||
int g = (rgb >> 8) & 0xFF;
|
||||
|
||||
@@ -5,9 +5,12 @@ import com.google.common.util.concurrent.MoreExecutors;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import net.minecraft.SharedConstants;
|
||||
import net.minecraft.core.IRegistryCustom;
|
||||
import net.minecraft.server.DispenserRegistry;
|
||||
import net.minecraft.server.packs.EnumResourcePackType;
|
||||
import net.minecraft.server.packs.ResourcePackVanilla;
|
||||
import net.minecraft.server.packs.repository.ResourcePackSourceVanilla;
|
||||
import net.minecraft.server.packs.resources.ResourceManager;
|
||||
import net.minecraft.tags.TagRegistry;
|
||||
import net.minecraft.util.Unit;
|
||||
@@ -33,14 +36,15 @@ public abstract class AbstractTestingBase {
|
||||
public static final TagRegistry TAG_REGISTRY;
|
||||
|
||||
static {
|
||||
SharedConstants.a();
|
||||
DispenserRegistry.init();
|
||||
// Set up resource manager
|
||||
ResourceManager resourceManager = new ResourceManager(EnumResourcePackType.SERVER_DATA);
|
||||
// add tags and loot tables for unit tests
|
||||
resourceManager.a(TAG_REGISTRY = new TagRegistry());
|
||||
resourceManager.a(TAG_REGISTRY = new TagRegistry(IRegistryCustom.a()));
|
||||
resourceManager.a(LOOT_TABLE_REGISTRY = new LootTableRegistry(new LootPredicateManager()));
|
||||
// Register vanilla pack
|
||||
resourceManager.a(MoreExecutors.directExecutor(), MoreExecutors.directExecutor(), Collections.singletonList(new ResourcePackVanilla("minecraft")), CompletableFuture.completedFuture(Unit.INSTANCE)).join();
|
||||
resourceManager.a(MoreExecutors.directExecutor(), MoreExecutors.directExecutor(), Collections.singletonList(new ResourcePackVanilla(ResourcePackSourceVanilla.BUILT_IN_METADATA, "minecraft")), CompletableFuture.completedFuture(Unit.INSTANCE)).join();
|
||||
// Bind tags
|
||||
TAG_REGISTRY.a().bind();
|
||||
|
||||
@@ -54,6 +58,6 @@ public abstract class AbstractTestingBase {
|
||||
}
|
||||
}
|
||||
INVALIDATED_MATERIALS = builder.build();
|
||||
Assert.assertEquals("Expected 564 invalidated materials (got " + INVALIDATED_MATERIALS.size() + ")", 564, INVALIDATED_MATERIALS.size());
|
||||
Assert.assertEquals("Expected 590 invalidated materials (got " + INVALIDATED_MATERIALS.size() + ")", 590, INVALIDATED_MATERIALS.size());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import net.minecraft.world.item.enchantment.Enchantments;
|
||||
|
||||
public class DummyEnchantments {
|
||||
static {
|
||||
Enchantments.DAMAGE_ALL.getClass();
|
||||
Enchantments.SHARPNESS.getClass();
|
||||
org.bukkit.enchantments.Enchantment.stopAcceptingRegistrations();
|
||||
}
|
||||
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
package org.bukkit.support;
|
||||
|
||||
import java.lang.reflect.Field;
|
||||
|
||||
public class Util {
|
||||
/*
|
||||
public static <T> T getInternalState(Object object, String fieldName) {
|
||||
return getInternalState(object.getClass(), object, fieldName);
|
||||
}
|
||||
*/
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> T getInternalState(Class<?> clazz, Object object, String fieldName) {
|
||||
Field field;
|
||||
try {
|
||||
field = clazz.getDeclaredField(fieldName);
|
||||
} catch (SecurityException e) {
|
||||
throw new RuntimeException("Not allowed to access " + clazz, e);
|
||||
} catch (NoSuchFieldException e) {
|
||||
throw new RuntimeException("Unable to find field " + fieldName, e);
|
||||
}
|
||||
|
||||
field.setAccessible(true);
|
||||
try {
|
||||
return (T) field.get(object);
|
||||
} catch (IllegalArgumentException e) {
|
||||
} catch (IllegalAccessException e) {
|
||||
}
|
||||
throw new RuntimeException("Unable to get internal value");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user