geforkt von Mirrors/Paper
SPIGOT-2892: Fix some clone implementations and add unit test
Dieser Commit ist enthalten in:
Ursprung
2ee49b4955
Commit
fb4564cc37
@ -200,4 +200,11 @@ public class CraftMetaBanner extends CraftMetaItem implements BannerMeta {
|
|||||||
boolean applicableTo(Material type) {
|
boolean applicableTo(Material type) {
|
||||||
return type == Material.BANNER;
|
return type == Material.BANNER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CraftMetaBanner clone() {
|
||||||
|
CraftMetaBanner meta = (CraftMetaBanner) super.clone();
|
||||||
|
meta.patterns = new ArrayList<>(patterns);
|
||||||
|
return meta;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -213,6 +213,15 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CraftMetaBlockState clone() {
|
||||||
|
CraftMetaBlockState meta = (CraftMetaBlockState) super.clone();
|
||||||
|
if (blockEntityTag != null) {
|
||||||
|
meta.blockEntityTag = blockEntityTag.g();
|
||||||
|
}
|
||||||
|
return meta;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasBlockState() {
|
public boolean hasBlockState() {
|
||||||
return blockEntityTag != null;
|
return blockEntityTag != null;
|
||||||
|
@ -176,6 +176,9 @@ public class CraftMetaSpawnEgg extends CraftMetaItem implements SpawnEggMeta {
|
|||||||
CraftMetaSpawnEgg clone = (CraftMetaSpawnEgg) super.clone();
|
CraftMetaSpawnEgg clone = (CraftMetaSpawnEgg) super.clone();
|
||||||
|
|
||||||
clone.spawnedType = spawnedType;
|
clone.spawnedType = spawnedType;
|
||||||
|
if (entityTag != null) {
|
||||||
|
clone.entityTag = entityTag.g();
|
||||||
|
}
|
||||||
|
|
||||||
return clone;
|
return clone;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,22 @@
|
|||||||
|
package org.bukkit.craftbukkit.inventory;
|
||||||
|
|
||||||
|
import java.lang.reflect.Method;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.*;
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
public class ItemMetaCloneTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testClone() throws Throwable {
|
||||||
|
for (Material material : ItemStackTest.COMPOUND_MATERIALS) {
|
||||||
|
Class<?> clazz = CraftItemFactory.instance().getItemMeta(material).getClass();
|
||||||
|
|
||||||
|
Method clone = clazz.getDeclaredMethod("clone");
|
||||||
|
assertNotNull("Class " + clazz + " does not override clone()", clone);
|
||||||
|
assertThat("Class " + clazz + " clone return type does not match", clone.getReturnType(), is(equalTo(clazz)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren