diff --git a/plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/ItemHelper.java b/plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/ItemHelper.java index ded59f607d..bdb9747a36 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/ItemHelper.java +++ b/plugin/src/main/java/com/denizenscript/denizen/nms/interfaces/ItemHelper.java @@ -17,6 +17,8 @@ public abstract class ItemHelper { + public abstract Integer burnTime(Material material); + public abstract Recipe getRecipeById(NamespacedKey key); public abstract void removeRecipe(NamespacedKey key); diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/MaterialTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/MaterialTag.java index 3e786a5a4f..47cf8982e3 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/MaterialTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/MaterialTag.java @@ -9,6 +9,7 @@ import com.denizenscript.denizen.utilities.blocks.ModernBlockData; import com.denizenscript.denizen.nms.interfaces.BlockData; import com.denizenscript.denizen.tags.BukkitTagContext; +import com.denizenscript.denizencore.objects.core.DurationTag; import com.denizenscript.denizencore.objects.core.ElementTag; import com.denizenscript.denizencore.objects.properties.PropertyParser; import com.denizenscript.denizencore.tags.Attribute; @@ -741,6 +742,29 @@ public static void registerTags() { return new ElementTag(object.material.isFlammable()); }); + // <--[tag] + // @attribute + // @returns ElementTag(Boolean) + // @description + // Returns whether the material is a block that can be burned in a furnace as fuel. + // --> + registerTag("is_fuel", (attribute, object) -> { + return new ElementTag(object.material.isFuel()); + }); + + // <--[tag] + // @attribute + // @returns DurationTag + // @description + // Returns the duration that a burnable fuel block will burn in a furnace for. + // --> + registerTag("fuel_burn_time", (attribute, object) -> { + Integer ticks = NMSHandler.getItemHelper().burnTime(object.getMaterial()); + if (ticks != null) { + return new DurationTag(ticks.longValue()); + } + }); + // <--[tag] // @attribute // @returns ElementTag(Boolean) diff --git a/v1_12/src/main/java/com/denizenscript/denizen/nms/v1_12/helpers/ItemHelperImpl.java b/v1_12/src/main/java/com/denizenscript/denizen/nms/v1_12/helpers/ItemHelperImpl.java index ffeb508a75..da95467c48 100644 --- a/v1_12/src/main/java/com/denizenscript/denizen/nms/v1_12/helpers/ItemHelperImpl.java +++ b/v1_12/src/main/java/com/denizenscript/denizen/nms/v1_12/helpers/ItemHelperImpl.java @@ -25,6 +25,11 @@ public class ItemHelperImpl extends ItemHelper { + @Override + public Integer burnTime(Material material) { + throw new UnsupportedOperationException(); + } + @Override public Recipe getRecipeById(NamespacedKey key) { throw new UnsupportedOperationException(); diff --git a/v1_13/src/main/java/com/denizenscript/denizen/nms/v1_13/helpers/ItemHelperImpl.java b/v1_13/src/main/java/com/denizenscript/denizen/nms/v1_13/helpers/ItemHelperImpl.java index fb657cfea4..29b4ea3fa3 100644 --- a/v1_13/src/main/java/com/denizenscript/denizen/nms/v1_13/helpers/ItemHelperImpl.java +++ b/v1_13/src/main/java/com/denizenscript/denizen/nms/v1_13/helpers/ItemHelperImpl.java @@ -17,6 +17,7 @@ import org.bukkit.craftbukkit.libs.it.unimi.dsi.fastutil.objects.Object2ObjectLinkedOpenHashMap; import org.bukkit.craftbukkit.v1_13_R2.CraftServer; import org.bukkit.craftbukkit.v1_13_R2.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_13_R2.util.CraftMagicNumbers; import org.bukkit.craftbukkit.v1_13_R2.util.CraftNamespacedKey; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.Recipe; @@ -38,6 +39,11 @@ public static IRecipe getNMSRecipe(NamespacedKey key) { return recipeMap.get(nmsKey); } + @Override + public Integer burnTime(Material material) { + return TileEntityFurnace.p().get(CraftMagicNumbers.getItem(material)); + } + @Override public Recipe getRecipeById(NamespacedKey key) { IRecipe recipe = getNMSRecipe(key); diff --git a/v1_14/src/main/java/com/denizenscript/denizen/nms/v1_14/helpers/ItemHelperImpl.java b/v1_14/src/main/java/com/denizenscript/denizen/nms/v1_14/helpers/ItemHelperImpl.java index 04bde3bef9..56d2590374 100644 --- a/v1_14/src/main/java/com/denizenscript/denizen/nms/v1_14/helpers/ItemHelperImpl.java +++ b/v1_14/src/main/java/com/denizenscript/denizen/nms/v1_14/helpers/ItemHelperImpl.java @@ -18,6 +18,7 @@ import org.bukkit.craftbukkit.v1_14_R1.CraftServer; import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftInventoryPlayer; import org.bukkit.craftbukkit.v1_14_R1.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_14_R1.util.CraftMagicNumbers; import org.bukkit.craftbukkit.v1_14_R1.util.CraftNamespacedKey; import org.bukkit.inventory.RecipeChoice; import org.bukkit.inventory.ShapedRecipe; @@ -42,6 +43,11 @@ public static IRecipe getNMSRecipe(NamespacedKey key) { return null; } + @Override + public Integer burnTime(Material material) { + return TileEntityFurnace.f().get(CraftMagicNumbers.getItem(material)); + } + @Override public Recipe getRecipeById(NamespacedKey key) { IRecipe recipe = getNMSRecipe(key); diff --git a/v1_15/src/main/java/com/denizenscript/denizen/nms/v1_15/helpers/ItemHelperImpl.java b/v1_15/src/main/java/com/denizenscript/denizen/nms/v1_15/helpers/ItemHelperImpl.java index e6a89a2a8f..2b59330dc6 100644 --- a/v1_15/src/main/java/com/denizenscript/denizen/nms/v1_15/helpers/ItemHelperImpl.java +++ b/v1_15/src/main/java/com/denizenscript/denizen/nms/v1_15/helpers/ItemHelperImpl.java @@ -18,6 +18,7 @@ import org.bukkit.craftbukkit.v1_15_R1.CraftServer; import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftInventoryPlayer; import org.bukkit.craftbukkit.v1_15_R1.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_15_R1.util.CraftMagicNumbers; import org.bukkit.craftbukkit.v1_15_R1.util.CraftNamespacedKey; import org.bukkit.inventory.RecipeChoice; import org.bukkit.inventory.ShapedRecipe; @@ -42,6 +43,11 @@ public static IRecipe getNMSRecipe(NamespacedKey key) { return null; } + @Override + public Integer burnTime(Material material) { + return TileEntityFurnace.f().get(CraftMagicNumbers.getItem(material)); + } + @Override public Recipe getRecipeById(NamespacedKey key) { IRecipe recipe = getNMSRecipe(key);