Update to Minecraft 1.16.1

By: md_5 <git@md-5.net>
This commit is contained in:
CraftBukkit/Spigot
2020-06-25 10:00:00 +10:00
parent 3862d2811e
commit 50503fd516
424 changed files with 5960 additions and 5636 deletions

View File

@@ -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)));
}
}

View File

@@ -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));

View File

@@ -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())));
}
}
}

View File

@@ -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));
}
}

View File

@@ -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));

View File

@@ -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]);
}

View File

@@ -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);
}
}
}

View File

@@ -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());
}
}