From c66742e3d3a0d5f07a80a252d7f5b4320f26be6e Mon Sep 17 00:00:00 2001 From: jglrxavpok Date: Mon, 29 Jun 2020 19:15:27 +0200 Subject: [PATCH] Hardcoded useful methods for Material (missing isFood impl) --- .../server/instance/item/TmpMaterial.java | 38 ++++++++++++++++++- .../codegen/items/ItemEnumGenerator.java | 21 +++++++++- 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/src/autogenerated/java/net/minestom/server/instance/item/TmpMaterial.java b/src/autogenerated/java/net/minestom/server/instance/item/TmpMaterial.java index f3ad70a1e..7f22c118b 100644 --- a/src/autogenerated/java/net/minestom/server/instance/item/TmpMaterial.java +++ b/src/autogenerated/java/net/minestom/server/instance/item/TmpMaterial.java @@ -915,7 +915,7 @@ public enum TmpMaterial { } public boolean isBlock() { - return correspondingBlock != null; + return correspondingBlock != null && this != AIR; } public Block getBlock() { @@ -925,4 +925,40 @@ public enum TmpMaterial { public static TmpMaterial fromId(short blockId) { return TmpMaterialMap.map.getOrDefault(blockId, AIR); } + + public boolean isHelmet() { + return toString().endsWith("HELMET"); + } + + public boolean isChestplate() { + return toString().endsWith("CHESTPLATE"); + } + + public boolean isLeggings() { + return toString().endsWith("LEGGINGS"); + } + + public boolean isBoots() { + return toString().endsWith("BOOTS"); + } + + public boolean isArmor() { + return isChestplate() || isHelmet() || isLeggings() || isBoots(); + } + + public boolean isFood() { + return false; // TODO + } + + public boolean hasState() { + switch (this) { + case BOW: + case TRIDENT: + case CROSSBOW: + case SHIELD: + return true; + } + + return isFood(); + } } diff --git a/src/generators/java/net/minestom/codegen/items/ItemEnumGenerator.java b/src/generators/java/net/minestom/codegen/items/ItemEnumGenerator.java index 6c46b2439..e7d30b319 100644 --- a/src/generators/java/net/minestom/codegen/items/ItemEnumGenerator.java +++ b/src/generators/java/net/minestom/codegen/items/ItemEnumGenerator.java @@ -135,9 +135,28 @@ public class ItemEnumGenerator extends MinestomEnumGenerator { generator.addMethod("getId", "()", "short", "return (short)ordinal();"); generator.addMethod("getName", "()", "String", "return namespaceID;"); generator.addMethod("getMaxDefaultStackSize", "()", "int", "return maxDefaultStackSize;"); - generator.addMethod("isBlock", "()", "boolean", "return correspondingBlock != null;"); + generator.addMethod("isBlock", "()", "boolean", "return correspondingBlock != null && this != AIR;"); generator.addMethod("getBlock", "()", "Block", "return correspondingBlock;"); + generator.addMethod("fromId", "(short blockId)", "static "+className, "return "+getClassName()+"Map.map.getOrDefault(blockId, AIR);"); + + // hard coded methods + generator.addMethod("isHelmet", "()", "boolean", "return toString().endsWith(\"HELMET\");"); + generator.addMethod("isChestplate", "()", "boolean", "return toString().endsWith(\"CHESTPLATE\");"); + generator.addMethod("isLeggings", "()", "boolean", "return toString().endsWith(\"LEGGINGS\");"); + generator.addMethod("isBoots", "()", "boolean", "return toString().endsWith(\"BOOTS\");"); + generator.addMethod("isArmor", "()", "boolean", "return isChestplate() || isHelmet() || isLeggings() || isBoots();"); + generator.addMethod("isFood", "()", "boolean", "return false; // TODO"); + generator.addMethod("hasState", "()", "boolean", "switch (this) {\n" + + " case BOW:\n" + + " case TRIDENT:\n" + + " case CROSSBOW:\n" + + " case SHIELD:\n" + + " return true;\n" + + " }\n" + + "\n" + + " return isFood();"); + generator.appendToConstructor(getClassName()+"Map.map.put((short)ordinal(), this);"); }