SPIGOT-2892: Fix some clone implementations and add unit test

By: md_5 <git@md-5.net>
This commit is contained in:
CraftBukkit/Spigot
2017-12-16 10:18:34 +11:00
parent 1cf4dbb721
commit dfa7c9eedb
4 changed files with 41 additions and 0 deletions

View File

@@ -200,4 +200,11 @@ public class CraftMetaBanner extends CraftMetaItem implements BannerMeta {
boolean applicableTo(Material type) {
return type == Material.BANNER;
}
@Override
public CraftMetaBanner clone() {
CraftMetaBanner meta = (CraftMetaBanner) super.clone();
meta.patterns = new ArrayList<>(patterns);
return meta;
}
}

View File

@@ -213,6 +213,15 @@ public class CraftMetaBlockState extends CraftMetaItem implements BlockStateMeta
return false;
}
@Override
public CraftMetaBlockState clone() {
CraftMetaBlockState meta = (CraftMetaBlockState) super.clone();
if (blockEntityTag != null) {
meta.blockEntityTag = blockEntityTag.g();
}
return meta;
}
@Override
public boolean hasBlockState() {
return blockEntityTag != null;

View File

@@ -176,6 +176,9 @@ public class CraftMetaSpawnEgg extends CraftMetaItem implements SpawnEggMeta {
CraftMetaSpawnEgg clone = (CraftMetaSpawnEgg) super.clone();
clone.spawnedType = spawnedType;
if (entityTag != null) {
clone.entityTag = entityTag.g();
}
return clone;
}