ForgePatch/patches/minecraft/net/minecraft/item/crafting/RecipeSerializers.java.patch

70 lines
4.1 KiB
Diff

--- a/net/minecraft/item/crafting/RecipeSerializers.java
+++ b/net/minecraft/item/crafting/RecipeSerializers.java
@@ -10,7 +10,7 @@
import net.minecraft.util.ResourceLocation;
public class RecipeSerializers {
- private static final Map<String, IRecipeSerializer<?>> field_199590_p = Maps.<String, IRecipeSerializer<?>>newHashMap();
+ private static final Map<ResourceLocation, IRecipeSerializer<?>> field_199590_p = Maps.newHashMap();
public static final IRecipeSerializer<ShapedRecipe> field_199575_a = func_199573_a(new ShapedRecipe.Serializer());
public static final IRecipeSerializer<ShapelessRecipe> field_199576_b = func_199573_a(new ShapelessRecipe.Serializer());
public static final RecipeSerializers.SimpleSerializer<RecipesArmorDyes> field_199577_c = func_199573_a(new RecipeSerializers.SimpleSerializer<RecipesArmorDyes>("crafting_special_armordye", RecipesArmorDyes::new));
@@ -27,18 +27,19 @@
public static final RecipeSerializers.SimpleSerializer<ShieldRecipes> field_199588_n = func_199573_a(new RecipeSerializers.SimpleSerializer<ShieldRecipes>("crafting_special_shielddecoration", ShieldRecipes::new));
public static final RecipeSerializers.SimpleSerializer<ShulkerBoxColoringRecipe> field_199589_o = func_199573_a(new RecipeSerializers.SimpleSerializer<ShulkerBoxColoringRecipe>("crafting_special_shulkerboxcoloring", ShulkerBoxColoringRecipe::new));
public static final IRecipeSerializer<FurnaceRecipe> field_201839_p = func_199573_a(new FurnaceRecipe.Serializer());
+ private static final java.util.Set<ResourceLocation> VANILLA_TYPES = new java.util.HashSet<>(field_199590_p.keySet()); //Copy of vanilla so we can keep track for compatibility.
public static <S extends IRecipeSerializer<T>, T extends IRecipe> S func_199573_a(S p_199573_0_) {
- if (field_199590_p.containsKey(p_199573_0_.func_199567_a())) {
- throw new IllegalArgumentException("Duplicate recipe serializer " + p_199573_0_.func_199567_a());
+ if (field_199590_p.containsKey(p_199573_0_.getName())) {
+ throw new IllegalArgumentException("Duplicate recipe serializer " + p_199573_0_.getName());
} else {
- field_199590_p.put(p_199573_0_.func_199567_a(), p_199573_0_);
+ field_199590_p.put(p_199573_0_.getName(), p_199573_0_);
return p_199573_0_;
}
}
public static IRecipe func_199572_a(ResourceLocation p_199572_0_, JsonObject p_199572_1_) {
- String s = JsonUtils.func_151200_h(p_199572_1_, "type");
+ ResourceLocation s = new ResourceLocation(JsonUtils.func_151200_h(p_199572_1_, "type"));
IRecipeSerializer<?> irecipeserializer = field_199590_p.get(s);
if (irecipeserializer == null) {
throw new JsonSyntaxException("Invalid or unsupported recipe type '" + s + "'");
@@ -49,7 +50,7 @@
public static IRecipe func_199571_a(PacketBuffer p_199571_0_) {
ResourceLocation resourcelocation = p_199571_0_.func_192575_l();
- String s = p_199571_0_.func_150789_c(32767);
+ ResourceLocation s = new ResourceLocation(p_199571_0_.func_150789_c(32767));
IRecipeSerializer<?> irecipeserializer = field_199590_p.get(s);
if (irecipeserializer == null) {
throw new IllegalArgumentException("Unknown recipe serializer " + s);
@@ -68,10 +69,12 @@
public static final class SimpleSerializer<T extends IRecipe> implements IRecipeSerializer<T> {
private final String field_199569_a;
private final Function<ResourceLocation, T> field_199570_b;
+ private final ResourceLocation name;
public SimpleSerializer(String p_i48188_1_, Function<ResourceLocation, T> p_i48188_2_) {
this.field_199569_a = p_i48188_1_;
this.field_199570_b = p_i48188_2_;
+ this.name = new ResourceLocation(field_199569_a);
}
public T func_199425_a_(ResourceLocation p_199425_1_, JsonObject p_199425_2_) {
@@ -85,8 +88,9 @@
public void func_199427_a_(PacketBuffer p_199427_1_, T p_199427_2_) {
}
- public String func_199567_a() {
- return this.field_199569_a;
+ @Override
+ public ResourceLocation getName() {
+ return this.name;
}
}
}