diff --git a/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java b/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java index 52d3b0bc1c..f185dfdbfa 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java +++ b/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java @@ -4,6 +4,7 @@ import com.denizenscript.denizen.objects.properties.entity.EntityHealth; import com.denizenscript.denizen.scripts.commands.player.SidebarCommand; import com.denizenscript.denizen.utilities.DenizenAPI; +import com.denizenscript.denizen.utilities.Utilities; import com.denizenscript.denizen.utilities.debugging.Debug; import com.denizenscript.denizen.utilities.depends.Depends; import com.denizenscript.denizen.utilities.entity.BossBarHelper; @@ -3433,6 +3434,28 @@ else if (split.length > 1) { EquipmentSlot.OFF_HAND, getPlayerEntity().getEquipment().getItemInOffHand()); } + // <--[mechanism] + // @object PlayerTag + // @name discover_recipe + // @input Element + // @description + // Causes the player to discover a recipe. Input is in the Namespace:Key format, for example "minecraft:gold_nugget". + // --> + if (mechanism.matches("discover_recipe")) { + getPlayerEntity().discoverRecipe(Utilities.parseNamespacedKey(mechanism.getValue().asString())); + } + + // <--[mechanism] + // @object PlayerTag + // @name forget_recipe + // @input Element + // @description + // Causes the player to forget ('undiscover') a recipe. Input is in the Namespace:Key format, for example "minecraft:gold_nugget". + // --> + if (mechanism.matches("forget_recipe")) { + getPlayerEntity().undiscoverRecipe(Utilities.parseNamespacedKey(mechanism.getValue().asString())); + } + // <--[mechanism] // @object PlayerTag // @name edit_sign diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/ItemScriptContainer.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/ItemScriptContainer.java index 55b21e265a..de95454794 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/ItemScriptContainer.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/ItemScriptContainer.java @@ -71,6 +71,7 @@ public class ItemScriptContainer extends ScriptContainer { // // # You can specify the items required to craft your item. For an empty slot, use "air". // # You are allowed to have non-3x3 shapes (can be any value 1-3 x 1-3, so for example 1x3, 2x1, and 2x2 are fine). + // # Recipe internal IDs will be of the form "denizen:shaped_recipe__" where ID is the recipe list index (starting at 1, counting up). // recipes: // 1: // - ItemTag|ItemTag|ItemTag @@ -89,6 +90,7 @@ public class ItemScriptContainer extends ScriptContainer { // // # You can specify a list of materials that make up a shapeless recipe. // # Note: This can overwrite existing shapeless recipes. + // # Recipe internal IDs will be of the form "denizen:shapeless_recipe__" where ID is the recipe list index (starting at 1, counting up). // shapeless_recipes: // 1: ItemTag|... // # Add more shapeless recipes if you want. @@ -96,6 +98,7 @@ public class ItemScriptContainer extends ScriptContainer { // // # You can specify a material that can be smelted into your item. // # Note: This can overwrite existing furnace recipes. + // # Recipe internal IDs will be of the form "denizen:furnace_recipe__" where ID is the recipe list index (starting at 1, counting up). // furnace_recipes: // 1: // # The input item diff --git a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/ItemScriptHelper.java b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/ItemScriptHelper.java index babc23475b..0822ba3d35 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/ItemScriptHelper.java +++ b/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/ItemScriptHelper.java @@ -80,7 +80,7 @@ public void registerShapedRecipe(ItemScriptContainer container, List rec } } if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_13)) { - NamespacedKey key = new NamespacedKey("denizen", "item_" + CoreUtilities.toLowerCase(container.getName()) + "_shaped_recipe_" + id); + NamespacedKey key = new NamespacedKey("denizen", "shaped_recipe_" + CoreUtilities.toLowerCase(container.getName()) + "_" + id); ShapedRecipe recipe = new ShapedRecipe(key, container.getCleanReference().getItemStack()); String shape1 = "ABC".substring(0, width); String shape2 = "DEF".substring(0, width);