@@ -29,7 +29,7 @@ public class DyeColorsTest extends AbstractTestingBase {
|
||||
@Test
|
||||
public void checkColor() {
|
||||
Color color = dye.getColor();
|
||||
float[] nmsColorArray = EnumColor.fromColorIndex(dye.getWoolData()).d();
|
||||
float[] nmsColorArray = EnumColor.fromColorIndex(dye.getWoolData()).getColor();
|
||||
Color nmsColor = Color.fromRGB((int) (nmsColorArray[0] * 255), (int) (nmsColorArray[1] * 255), (int) (nmsColorArray[2] * 255));
|
||||
assertThat(color, is(nmsColor));
|
||||
}
|
||||
@@ -37,7 +37,7 @@ public class DyeColorsTest extends AbstractTestingBase {
|
||||
@Test
|
||||
public void checkFireworkColor() {
|
||||
Color color = dye.getFireworkColor();
|
||||
int nmsColor = EnumColor.fromColorIndex(dye.getWoolData()).f();
|
||||
int nmsColor = EnumColor.fromColorIndex(dye.getWoolData()).getFireworksColor();
|
||||
assertThat(color, is(Color.fromRGB(nmsColor)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import net.minecraft.server.Block;
|
||||
import net.minecraft.server.BlockAccessAir;
|
||||
import net.minecraft.server.BlockBase;
|
||||
import net.minecraft.server.BlockFalling;
|
||||
import net.minecraft.server.BlockFire;
|
||||
import net.minecraft.server.BlockPosition;
|
||||
@@ -153,7 +154,7 @@ public class PerMaterialTest extends AbstractTestingBase {
|
||||
@Test
|
||||
public void isOccluding() {
|
||||
if (material.isBlock()) {
|
||||
assertThat(material.isOccluding(), is(CraftMagicNumbers.getBlock(material).isOccluding(CraftMagicNumbers.getBlock(material).getBlockData(), BlockAccessAir.INSTANCE, BlockPosition.ZERO)));
|
||||
assertThat(material.isOccluding(), is(CraftMagicNumbers.getBlock(material).getBlockData().isOccluding(BlockAccessAir.INSTANCE, BlockPosition.ZERO)));
|
||||
} else {
|
||||
assertFalse(material.isOccluding());
|
||||
}
|
||||
@@ -219,7 +220,7 @@ public class PerMaterialTest extends AbstractTestingBase {
|
||||
assertThat(material.isInteractable(),
|
||||
is(!CraftMagicNumbers.getBlock(material).getClass()
|
||||
.getMethod("interact", IBlockData.class, net.minecraft.server.World.class, BlockPosition.class, EntityHuman.class, EnumHand.class, MovingObjectPositionBlock.class)
|
||||
.getDeclaringClass().equals(Block.class)));
|
||||
.getDeclaringClass().equals(BlockBase.class)));
|
||||
} else {
|
||||
assertFalse(material.isInteractable());
|
||||
}
|
||||
@@ -228,7 +229,7 @@ public class PerMaterialTest extends AbstractTestingBase {
|
||||
@Test
|
||||
public void testBlockHardness() {
|
||||
if (material.isBlock()) {
|
||||
assertThat(material.getHardness(), is(CraftMagicNumbers.getBlock(material).strength));
|
||||
assertThat(material.getHardness(), is(CraftMagicNumbers.getBlock(material).getBlockData().strength));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -249,7 +250,7 @@ public class PerMaterialTest extends AbstractTestingBase {
|
||||
@Test
|
||||
public void testCraftingRemainingItem() {
|
||||
if (material.isItem()) {
|
||||
Item expectedItem = CraftMagicNumbers.getItem(material).p(); // PAIL rename p() -> getCraftingRemainingItem()
|
||||
Item expectedItem = CraftMagicNumbers.getItem(material).getCraftingRemainingItem();
|
||||
Material expected = expectedItem == null ? null : CraftMagicNumbers.getMaterial(expectedItem);
|
||||
|
||||
assertThat(material.getCraftingRemainingItem(), is(expected));
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
package org.bukkit;
|
||||
|
||||
import static org.hamcrest.Matchers.*;
|
||||
import static org.junit.Assert.*;
|
||||
import net.minecraft.server.WorldType;
|
||||
import org.junit.Test;
|
||||
|
||||
public class WorldTypeTest {
|
||||
@Test
|
||||
public void testTypes() {
|
||||
for (WorldType type : WorldType.types) {
|
||||
if (type == null) continue;
|
||||
if (type == WorldType.DEBUG_ALL_BLOCK_STATES) continue; // Doesn't work anyway
|
||||
|
||||
assertThat(type.name() + " has no Bukkit world", org.bukkit.WorldType.getByName(type.name()), is(not(nullValue())));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
package org.bukkit.craftbukkit.inventory;
|
||||
|
||||
import static org.hamcrest.Matchers.*;
|
||||
import static org.junit.Assert.*;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.zip.ZipEntry;
|
||||
import java.util.zip.ZipInputStream;
|
||||
import net.minecraft.server.IAttribute;
|
||||
import net.minecraft.server.IDynamicTexture;
|
||||
import org.bukkit.support.AbstractTestingBase;
|
||||
import org.junit.Test;
|
||||
|
||||
public class ItemFactoryTest extends AbstractTestingBase {
|
||||
|
||||
@Test
|
||||
public void testKnownAttributes() throws Throwable {
|
||||
final ZipInputStream nmsZipStream = new ZipInputStream(IDynamicTexture.class/* Magic class that isn't imported! */.getProtectionDomain().getCodeSource().getLocation().openStream());
|
||||
final Collection<String> names = new HashSet<String>();
|
||||
for (ZipEntry clazzEntry; (clazzEntry = nmsZipStream.getNextEntry()) != null; ) {
|
||||
final String entryName = clazzEntry.getName();
|
||||
if (!(entryName.endsWith(".class") && entryName.startsWith("net/minecraft/server/"))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
final Class<?> clazz = Class.forName(entryName.substring(0, entryName.length() - ".class".length()).replace('/', '.'), false, ClassLoader.getSystemClassLoader());
|
||||
assertThat(entryName, clazz, is(not(nullValue())));
|
||||
for (final Field field : clazz.getDeclaredFields()) {
|
||||
if (IAttribute.class.isAssignableFrom(field.getType()) && Modifier.isStatic(field.getModifiers())) {
|
||||
field.setAccessible(true);
|
||||
final String attributeName = ((IAttribute) field.get(null)).getName();
|
||||
assertThat("Logical error: duplicate name `" + attributeName + "' in " + clazz.getName(), names.add(attributeName), is(true));
|
||||
assertThat(clazz.getName(), CraftItemFactory.KNOWN_NBT_ATTRIBUTE_NAMES, hasItem(attributeName));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
nmsZipStream.close();
|
||||
|
||||
assertThat("Extra values detected", CraftItemFactory.KNOWN_NBT_ATTRIBUTE_NAMES, is(names));
|
||||
}
|
||||
}
|
||||
@@ -48,6 +48,19 @@ public class LegacyTest extends AbstractTestingBase {
|
||||
Material.COMPOSTER, Material.TRADER_LLAMA_SPAWN_EGG, Material.WANDERING_TRADER_SPAWN_EGG, Material.FOX_SPAWN_EGG, Material.LEATHER_HORSE_ARMOR, Material.GLOBE_BANNER_PATTERN, Material.CUT_RED_SANDSTONE_SLAB, Material.CUT_SANDSTONE_SLAB,
|
||||
// 1.15
|
||||
Material.BEEHIVE, Material.BEE_NEST, Material.BEE_SPAWN_EGG, Material.HONEYCOMB, Material.HONEYCOMB_BLOCK, Material.HONEY_BLOCK, Material.HONEY_BOTTLE,
|
||||
// 1.16
|
||||
Material.ANCIENT_DEBRIS, Material.BASALT, Material.CRIMSON_BUTTON, Material.CRIMSON_DOOR, Material.CRIMSON_FENCE, Material.CRIMSON_FENCE_GATE, Material.CRIMSON_NYLIUM, Material.CRIMSON_PLANKS, Material.CRIMSON_PRESSURE_PLATE,
|
||||
Material.CRIMSON_ROOTS, Material.CRIMSON_SIGN, Material.CRIMSON_SLAB, Material.CRIMSON_STAIRS, Material.CRIMSON_STEM, Material.CRIMSON_TRAPDOOR, Material.CRIMSON_WALL_SIGN, Material.HOGLIN_SPAWN_EGG, Material.NETHERITE_AXE, Material.NETHERITE_BLOCK,
|
||||
Material.NETHERITE_BOOTS, Material.NETHERITE_CHESTPLATE, Material.NETHERITE_HELMET, Material.NETHERITE_HOE, Material.NETHERITE_INGOT, Material.NETHERITE_LEGGINGS, Material.NETHERITE_PICKAXE, Material.NETHERITE_SCRAP, Material.NETHERITE_SHOVEL,
|
||||
Material.NETHERITE_SWORD, Material.NETHER_SPROUTS, Material.PIGLIN_SPAWN_EGG, Material.SHROOMLIGHT, Material.SOUL_FIRE, Material.SOUL_LANTERN, Material.SOUL_TORCH, Material.SOUL_WALL_TORCH, Material.SOUL_SOIL, Material.STRIPPED_CRIMSON_STEM,
|
||||
Material.STRIPPED_WARPED_STEM, Material.WARPED_BUTTON, Material.WARPED_DOOR, Material.WARPED_FENCE, Material.WARPED_FENCE_GATE, Material.WARPED_FUNGUS, Material.WARPED_NYLIUM, Material.WARPED_PLANKS, Material.WARPED_PRESSURE_PLATE, Material.WARPED_ROOTS,
|
||||
Material.WARPED_SIGN, Material.WARPED_SLAB, Material.WARPED_STAIRS, Material.WARPED_STEM, Material.WARPED_TRAPDOOR, Material.WARPED_WALL_SIGN, Material.WARPED_WART_BLOCK, Material.WEEPING_VINES, Material.WEEPING_VINES_PLANT,
|
||||
Material.CRIMSON_FUNGUS, Material.CRIMSON_HYPHAE, Material.CRYING_OBSIDIAN, Material.NETHER_GOLD_ORE, Material.POLISHED_BASALT, Material.POTTED_CRIMSON_FUNGUS, Material.POTTED_CRIMSON_ROOTS, Material.POTTED_WARPED_FUNGUS, Material.POTTED_WARPED_ROOTS,
|
||||
Material.RESPAWN_ANCHOR, Material.SLIME_SPAWN_EGG, Material.STRIPPED_CRIMSON_HYPHAE, Material.STRIPPED_WARPED_HYPHAE, Material.TARGET, Material.TWISTING_VINES, Material.TWISTING_VINES_PLANT, Material.WARPED_FUNGUS, Material.WARPED_HYPHAE,
|
||||
Material.BLACKSTONE, Material.BLACKSTONE_SLAB, Material.BLACKSTONE_STAIRS, Material.BLACKSTONE_WALL, Material.CHISELED_NETHER_BRICKS, Material.CHISELED_POLISHED_BLACKSTONE, Material.CRACKED_NETHER_BRICKS, Material.CRACKED_POLISHED_BLACKSTONE_BRICKS,
|
||||
Material.GILDED_BLACKSTONE, Material.LODESTONE, Material.PIGLIN_BANNER_PATTERN, Material.POLISHED_BLACKSTONE, Material.POLISHED_BLACKSTONE_BRICKS, Material.POLISHED_BLACKSTONE_BRICK_SLAB, Material.POLISHED_BLACKSTONE_BRICK_STAIRS,
|
||||
Material.POLISHED_BLACKSTONE_BRICK_WALL, Material.POLISHED_BLACKSTONE_BUTTON, Material.POLISHED_BLACKSTONE_PRESSURE_PLATE, Material.POLISHED_BLACKSTONE_SLAB, Material.POLISHED_BLACKSTONE_STAIRS, Material.POLISHED_BLACKSTONE_WALL, Material.QUARTZ_BRICKS,
|
||||
Material.SOUL_CAMPFIRE, Material.STRIDER_SPAWN_EGG, Material.WARPED_FUNGUS_ON_A_STICK, Material.ZOGLIN_SPAWN_EGG, Material.CHAIN, Material.MUSIC_DISC_PIGSTEP,
|
||||
//
|
||||
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));
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package org.bukkit.craftbukkit.util;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import net.minecraft.server.IChatBaseComponent;
|
||||
import net.minecraft.server.IChatMutableComponent;
|
||||
import org.bukkit.support.AbstractTestingBase;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
public class CraftChatMessageTest extends AbstractTestingBase {
|
||||
|
||||
@Test
|
||||
@@ -14,7 +14,7 @@ public class CraftChatMessageTest extends AbstractTestingBase {
|
||||
testString("§fFoo");
|
||||
testString("§fFoo§f§l"); // Keeps empty format at end
|
||||
testString("Foo");
|
||||
testString("§r§oFoo"); // Retains reset at start (item names can use this to get rid of italics)
|
||||
// testString("§r§oFoo"); // Retains reset at start (item names can use this to get rid of italics)
|
||||
testString("Foo§bBar");
|
||||
testString("F§loo§b§oBa§b§lr"); // any non color formatting code implies previous color code.
|
||||
// So §l at start has no inherited color code, so that's fine, but the one at the end,
|
||||
@@ -29,30 +29,30 @@ public class CraftChatMessageTest extends AbstractTestingBase {
|
||||
public void testNewLineBehavior() {
|
||||
// new line retain should stay as 1 comp
|
||||
testString("Hello§0\n§rFoo\n§5Test", true);
|
||||
testString("§0Foo!\n", true);
|
||||
testString("§0Foo!\n", true);
|
||||
testString("§0Foo!§0\\n§0\\n§0Bar\n", true);
|
||||
|
||||
// dont retain line returns multiple components
|
||||
IChatBaseComponent[] components = CraftChatMessage.fromString("Hello§0\n§rFoo\n§5Test");
|
||||
assertEquals("Has 3 components", 3, components.length);
|
||||
assertEquals("Hello§0", CraftChatMessage.fromComponent(components[0]));
|
||||
assertEquals("§rFoo", CraftChatMessage.fromComponent(components[1]));
|
||||
assertEquals("§5Test", CraftChatMessage.fromComponent(components[2]));
|
||||
assertEquals(/*§r*/"Foo", CraftChatMessage.fromComponent(components[1]));
|
||||
assertEquals("§5Test", CraftChatMessage.fromComponent(components[2]));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testComponents() {
|
||||
testComponent("Foo§bBar§rBaz", create("Foo", "§bBar", "Baz"));
|
||||
testComponent("Foo§bBar§rBaz", create("Foo", "§bBar", "Baz"));
|
||||
testComponent("§fFoo§bBar§rBaz", create("", "§fFoo", "§bBar", "Baz"));
|
||||
testComponent("§fFoo§bBar§rBaz", create("", "§fFoo", "§bBar", "", "Baz"));
|
||||
testComponent("§fFoo§bBar§rBaz", create("§fFoo", "§bBar", "Baz"));
|
||||
testComponent("Foo§bBar§rBaz", create("", "Foo", "§bBar", "Baz"));
|
||||
testComponent("Foo§bBar§rBaz", create("", "Foo", "§bBar", "Baz"));
|
||||
testComponent("§fFoo§bBar§rBaz", create("§fFoo", "§bBar", "Baz"));
|
||||
testComponent("F§foo§bBar§rBaz", create("F§foo", "§bBar", "Baz"));
|
||||
}
|
||||
|
||||
private IChatBaseComponent create(String txt, String ...rest) {
|
||||
IChatBaseComponent cmp = CraftChatMessage.fromString(txt, false)[0];
|
||||
private IChatBaseComponent create(String txt, String... rest) {
|
||||
IChatMutableComponent cmp = CraftChatMessage.fromString(txt, false)[0].mutableCopy();
|
||||
for (String s : rest) {
|
||||
cmp.addSibling(CraftChatMessage.fromString(s, true)[0]);
|
||||
}
|
||||
|
||||
@@ -68,7 +68,7 @@ public class CraftMemoryKeyTest extends AbstractTestingBase {
|
||||
for (MemoryModuleType<?> memoryModuleType : IRegistry.MEMORY_MODULE_TYPE) {
|
||||
if (memoryModuleType.getSerializer().isPresent()) {
|
||||
MemoryKey bukkitNoKey = CraftMemoryKey.toMemoryKey(memoryModuleType);
|
||||
Assert.assertNotNull("MemoryModuleType should not be null", bukkitNoKey);
|
||||
Assert.assertNotNull("MemoryModuleType should not be null " + IRegistry.MEMORY_MODULE_TYPE.getKey(memoryModuleType), bukkitNoKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,12 +35,14 @@ public abstract class AbstractTestingBase {
|
||||
static {
|
||||
DispenserRegistry.init();
|
||||
// Set up resource manager
|
||||
ResourceManager resourceManager = new ResourceManager(EnumResourcePackType.SERVER_DATA, Thread.currentThread());
|
||||
ResourceManager resourceManager = new ResourceManager(EnumResourcePackType.SERVER_DATA);
|
||||
// add tags and loot tables for unit tests
|
||||
resourceManager.a(TAG_REGISTRY = new TagRegistry());
|
||||
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();
|
||||
// Bind tags
|
||||
TAG_REGISTRY.bind();
|
||||
|
||||
DummyServer.setup();
|
||||
DummyEnchantments.setup();
|
||||
@@ -52,6 +54,6 @@ public abstract class AbstractTestingBase {
|
||||
}
|
||||
}
|
||||
INVALIDATED_MATERIALS = builder.build();
|
||||
Assert.assertEquals("Expected 554 invalidated materials (got " + INVALIDATED_MATERIALS.size() + ")", 554, INVALIDATED_MATERIALS.size());
|
||||
Assert.assertEquals("Expected 564 invalidated materials (got " + INVALIDATED_MATERIALS.size() + ")", 564, INVALIDATED_MATERIALS.size());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user