mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-28 23:38:25 +01:00
Option to prevent data components copy in smithing recipes
This commit is contained in:
parent
ec4a7e5d87
commit
c8e36cb205
3 changed files with 71 additions and 0 deletions
|
@ -14,6 +14,7 @@ public class SmithingRecipe implements Recipe, Keyed {
|
||||||
private final ItemStack result;
|
private final ItemStack result;
|
||||||
private final RecipeChoice base;
|
private final RecipeChoice base;
|
||||||
private final RecipeChoice addition;
|
private final RecipeChoice addition;
|
||||||
|
private final boolean copyDataComponents; // Paper
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a smithing recipe to produce the specified result ItemStack.
|
* Create a smithing recipe to produce the specified result ItemStack.
|
||||||
|
@ -29,6 +30,23 @@ public class SmithingRecipe implements Recipe, Keyed {
|
||||||
*/
|
*/
|
||||||
@Deprecated(since = "1.20.1")
|
@Deprecated(since = "1.20.1")
|
||||||
public SmithingRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result, @Nullable RecipeChoice base, @Nullable RecipeChoice addition) {
|
public SmithingRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result, @Nullable RecipeChoice base, @Nullable RecipeChoice addition) {
|
||||||
|
// Paper start
|
||||||
|
this(key, result, base, addition, true);
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Create a smithing recipe to produce the specified result ItemStack.
|
||||||
|
*
|
||||||
|
* @param key The unique recipe key
|
||||||
|
* @param result The item you want the recipe to create.
|
||||||
|
* @param base The base ingredient
|
||||||
|
* @param addition The addition ingredient
|
||||||
|
* @param copyDataComponents whether to copy the data components from the input base item to the output
|
||||||
|
* @deprecated use {@link SmithingTrimRecipe} or {@link SmithingTransformRecipe}
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public SmithingRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result, @Nullable RecipeChoice base, @Nullable RecipeChoice addition, boolean copyDataComponents) {
|
||||||
|
this.copyDataComponents = copyDataComponents;
|
||||||
|
// Paper end
|
||||||
this.key = key;
|
this.key = key;
|
||||||
this.result = result;
|
this.result = result;
|
||||||
this.base = base;
|
this.base = base;
|
||||||
|
@ -66,4 +84,26 @@ public class SmithingRecipe implements Recipe, Keyed {
|
||||||
public NamespacedKey getKey() {
|
public NamespacedKey getKey() {
|
||||||
return this.key;
|
return this.key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Paper start
|
||||||
|
/**
|
||||||
|
* Whether to copy the NBT of the input base item to the output.
|
||||||
|
*
|
||||||
|
* @return true to copy the NBT (default for vanilla smithing recipes)
|
||||||
|
* @apiNote use {@link #willCopyDataComponents()}
|
||||||
|
*/
|
||||||
|
@org.jetbrains.annotations.ApiStatus.Obsolete(since = "1.20.5")
|
||||||
|
public boolean willCopyNbt() {
|
||||||
|
return this.willCopyDataComponents();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether to copy the data components of the input base item to the output.
|
||||||
|
*
|
||||||
|
* @return true to copy the data components (default for vanilla smithing recipes)
|
||||||
|
*/
|
||||||
|
public boolean willCopyDataComponents() {
|
||||||
|
return this.copyDataComponents;
|
||||||
|
}
|
||||||
|
// Paper end
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,22 @@ public class SmithingTransformRecipe extends SmithingRecipe {
|
||||||
super(key, result, base, addition);
|
super(key, result, base, addition);
|
||||||
this.template = template;
|
this.template = template;
|
||||||
}
|
}
|
||||||
|
// Paper start
|
||||||
|
/**
|
||||||
|
* Create a smithing recipe to produce the specified result ItemStack.
|
||||||
|
*
|
||||||
|
* @param key The unique recipe key
|
||||||
|
* @param result The item you want the recipe to create.
|
||||||
|
* @param template The template item.
|
||||||
|
* @param base The base ingredient
|
||||||
|
* @param addition The addition ingredient
|
||||||
|
* @param copyDataComponents whether to copy the data components from the input base item to the output
|
||||||
|
*/
|
||||||
|
public SmithingTransformRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result, @Nullable RecipeChoice template, @Nullable RecipeChoice base, @Nullable RecipeChoice addition, boolean copyDataComponents) {
|
||||||
|
super(key, result, base, addition, copyDataComponents);
|
||||||
|
this.template = template;
|
||||||
|
}
|
||||||
|
// Paper end
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the template recipe item.
|
* Get the template recipe item.
|
||||||
|
|
|
@ -24,6 +24,21 @@ public class SmithingTrimRecipe extends SmithingRecipe implements ComplexRecipe
|
||||||
super(key, new ItemStack(Material.AIR), base, addition);
|
super(key, new ItemStack(Material.AIR), base, addition);
|
||||||
this.template = template;
|
this.template = template;
|
||||||
}
|
}
|
||||||
|
// Paper start
|
||||||
|
/**
|
||||||
|
* Create a smithing recipe to produce the specified result ItemStack.
|
||||||
|
*
|
||||||
|
* @param key The unique recipe key
|
||||||
|
* @param template The template item.
|
||||||
|
* @param base The base ingredient
|
||||||
|
* @param addition The addition ingredient
|
||||||
|
* @param copyDataComponents whether to copy the data components from the input base item to the output
|
||||||
|
*/
|
||||||
|
public SmithingTrimRecipe(@NotNull NamespacedKey key, @NotNull RecipeChoice template, @NotNull RecipeChoice base, @NotNull RecipeChoice addition, boolean copyDataComponents) {
|
||||||
|
super(key, new ItemStack(Material.AIR), base, addition, copyDataComponents);
|
||||||
|
this.template = template;
|
||||||
|
}
|
||||||
|
// Paper end
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the template recipe item.
|
* Get the template recipe item.
|
||||||
|
|
Loading…
Reference in a new issue