SPIGOT-4214: Catch attempts to create BlockData for items
Dieser Commit ist enthalten in:
Ursprung
272426acd7
Commit
80c43fc1de
@ -417,6 +417,8 @@ public class CraftBlockData implements BlockData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static CraftBlockData newData(Material material, String data) {
|
public static CraftBlockData newData(Material material, String data) {
|
||||||
|
Preconditions.checkArgument(material == null || material.isBlock(), "Cannot get data for not block %s", material);
|
||||||
|
|
||||||
IBlockData blockData;
|
IBlockData blockData;
|
||||||
Block block = CraftMagicNumbers.getBlock(material);
|
Block block = CraftMagicNumbers.getBlock(material);
|
||||||
|
|
||||||
|
@ -84,6 +84,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
|||||||
|
|
||||||
for (Material material : Material.values()) {
|
for (Material material : Material.values()) {
|
||||||
MinecraftKey key = key(material);
|
MinecraftKey key = key(material);
|
||||||
|
// TODO: only register if block/item?
|
||||||
MATERIAL_ITEM.put(material, Item.REGISTRY.get(key));
|
MATERIAL_ITEM.put(material, Item.REGISTRY.get(key));
|
||||||
MATERIAL_BLOCK.put(material, Block.REGISTRY.get(key));
|
MATERIAL_BLOCK.put(material, Block.REGISTRY.get(key));
|
||||||
}
|
}
|
||||||
|
@ -51,6 +51,16 @@ public class BlockDataTest extends AbstractTestingBase {
|
|||||||
CraftBlockData.newData(Material.CAKE, cakeTest.toString());
|
CraftBlockData.newData(Material.CAKE, cakeTest.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(expected = IllegalArgumentException.class)
|
||||||
|
public void testItem() {
|
||||||
|
CraftBlockData.newData(Material.DIAMOND_AXE, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = IllegalArgumentException.class)
|
||||||
|
public void testItemParse() {
|
||||||
|
CraftBlockData.newData(null, "minecraft:diamond_axe");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testClone() {
|
public void testClone() {
|
||||||
Cake cakeTest = (Cake) CraftBlockData.fromData(Blocks.CAKE.getBlockData().set(BlockCake.BITES, 3));
|
Cake cakeTest = (Cake) CraftBlockData.fromData(Blocks.CAKE.getBlockData().set(BlockCake.BITES, 3));
|
||||||
|
In neuem Issue referenzieren
Einen Benutzer sperren