/* * Decompiled with CFR 0.152. * * Could not load the following classes: * com.mojang.datafixers.DSL * com.mojang.datafixers.DataFix * com.mojang.datafixers.DataFixUtils * com.mojang.datafixers.OpticFinder * com.mojang.datafixers.TypeRewriteRule * com.mojang.datafixers.Typed * com.mojang.datafixers.schemas.Schema * com.mojang.datafixers.types.Type * com.mojang.datafixers.util.Pair * com.mojang.serialization.Dynamic * org.jspecify.annotations.Nullable */ package net.minecraft.util.datafix.fixes; import com.mojang.datafixers.DSL; import com.mojang.datafixers.DataFix; import com.mojang.datafixers.DataFixUtils; import com.mojang.datafixers.OpticFinder; import com.mojang.datafixers.TypeRewriteRule; import com.mojang.datafixers.Typed; import com.mojang.datafixers.schemas.Schema; import com.mojang.datafixers.types.Type; import com.mojang.datafixers.util.Pair; import com.mojang.serialization.Dynamic; import java.util.Objects; import java.util.Optional; import net.minecraft.util.datafix.fixes.References; import net.minecraft.util.datafix.schemas.NamespacedSchema; import org.jspecify.annotations.Nullable; public class ItemPotionFix extends DataFix { private static final int SPLASH = 16384; private static final @Nullable String[] POTIONS = (String[])DataFixUtils.make((Object)new String[128], map -> { map[0] = DEFAULT; map[1] = "minecraft:regeneration"; map[2] = "minecraft:swiftness"; map[3] = "minecraft:fire_resistance"; map[4] = "minecraft:poison"; map[5] = "minecraft:healing"; map[6] = "minecraft:night_vision"; map[7] = null; map[8] = "minecraft:weakness"; map[9] = "minecraft:strength"; map[10] = "minecraft:slowness"; map[11] = "minecraft:leaping"; map[12] = "minecraft:harming"; map[13] = "minecraft:water_breathing"; map[14] = "minecraft:invisibility"; map[15] = null; map[16] = "minecraft:awkward"; map[17] = "minecraft:regeneration"; map[18] = "minecraft:swiftness"; map[19] = "minecraft:fire_resistance"; map[20] = "minecraft:poison"; map[21] = "minecraft:healing"; map[22] = "minecraft:night_vision"; map[23] = null; map[24] = "minecraft:weakness"; map[25] = "minecraft:strength"; map[26] = "minecraft:slowness"; map[27] = "minecraft:leaping"; map[28] = "minecraft:harming"; map[29] = "minecraft:water_breathing"; map[30] = "minecraft:invisibility"; map[31] = null; map[32] = "minecraft:thick"; map[33] = "minecraft:strong_regeneration"; map[34] = "minecraft:strong_swiftness"; map[35] = "minecraft:fire_resistance"; map[36] = "minecraft:strong_poison"; map[37] = "minecraft:strong_healing"; map[38] = "minecraft:night_vision"; map[39] = null; map[40] = "minecraft:weakness"; map[41] = "minecraft:strong_strength"; map[42] = "minecraft:slowness"; map[43] = "minecraft:strong_leaping"; map[44] = "minecraft:strong_harming"; map[45] = "minecraft:water_breathing"; map[46] = "minecraft:invisibility"; map[47] = null; map[48] = null; map[49] = "minecraft:strong_regeneration"; map[50] = "minecraft:strong_swiftness"; map[51] = "minecraft:fire_resistance"; map[52] = "minecraft:strong_poison"; map[53] = "minecraft:strong_healing"; map[54] = "minecraft:night_vision"; map[55] = null; map[56] = "minecraft:weakness"; map[57] = "minecraft:strong_strength"; map[58] = "minecraft:slowness"; map[59] = "minecraft:strong_leaping"; map[60] = "minecraft:strong_harming"; map[61] = "minecraft:water_breathing"; map[62] = "minecraft:invisibility"; map[63] = null; map[64] = "minecraft:mundane"; map[65] = "minecraft:long_regeneration"; map[66] = "minecraft:long_swiftness"; map[67] = "minecraft:long_fire_resistance"; map[68] = "minecraft:long_poison"; map[69] = "minecraft:healing"; map[70] = "minecraft:long_night_vision"; map[71] = null; map[72] = "minecraft:long_weakness"; map[73] = "minecraft:long_strength"; map[74] = "minecraft:long_slowness"; map[75] = "minecraft:long_leaping"; map[76] = "minecraft:harming"; map[77] = "minecraft:long_water_breathing"; map[78] = "minecraft:long_invisibility"; map[79] = null; map[80] = "minecraft:awkward"; map[81] = "minecraft:long_regeneration"; map[82] = "minecraft:long_swiftness"; map[83] = "minecraft:long_fire_resistance"; map[84] = "minecraft:long_poison"; map[85] = "minecraft:healing"; map[86] = "minecraft:long_night_vision"; map[87] = null; map[88] = "minecraft:long_weakness"; map[89] = "minecraft:long_strength"; map[90] = "minecraft:long_slowness"; map[91] = "minecraft:long_leaping"; map[92] = "minecraft:harming"; map[93] = "minecraft:long_water_breathing"; map[94] = "minecraft:long_invisibility"; map[95] = null; map[96] = "minecraft:thick"; map[97] = "minecraft:regeneration"; map[98] = "minecraft:swiftness"; map[99] = "minecraft:long_fire_resistance"; map[100] = "minecraft:poison"; map[101] = "minecraft:strong_healing"; map[102] = "minecraft:long_night_vision"; map[103] = null; map[104] = "minecraft:long_weakness"; map[105] = "minecraft:strength"; map[106] = "minecraft:long_slowness"; map[107] = "minecraft:leaping"; map[108] = "minecraft:strong_harming"; map[109] = "minecraft:long_water_breathing"; map[110] = "minecraft:long_invisibility"; map[111] = null; map[112] = null; map[113] = "minecraft:regeneration"; map[114] = "minecraft:swiftness"; map[115] = "minecraft:long_fire_resistance"; map[116] = "minecraft:poison"; map[117] = "minecraft:strong_healing"; map[118] = "minecraft:long_night_vision"; map[119] = null; map[120] = "minecraft:long_weakness"; map[121] = "minecraft:strength"; map[122] = "minecraft:long_slowness"; map[123] = "minecraft:leaping"; map[124] = "minecraft:strong_harming"; map[125] = "minecraft:long_water_breathing"; map[126] = "minecraft:long_invisibility"; map[127] = null; }); public static final String DEFAULT = "minecraft:water"; public ItemPotionFix(Schema outputSchema, boolean changesType) { super(outputSchema, changesType); } public TypeRewriteRule makeRule() { Type itemStackType = this.getInputSchema().getType(References.ITEM_STACK); OpticFinder idFinder = DSL.fieldFinder((String)"id", (Type)DSL.named((String)References.ITEM_NAME.typeName(), NamespacedSchema.namespacedString())); OpticFinder tagFinder = itemStackType.findField("tag"); return this.fixTypeEverywhereTyped("ItemPotionFix", itemStackType, input -> { Optional id = input.getOptional(idFinder); if (id.isPresent() && Objects.equals(((Pair)id.get()).getSecond(), "minecraft:potion")) { Dynamic rest = (Dynamic)input.get(DSL.remainderFinder()); Optional tag = input.getOptionalTyped(tagFinder); short damage = rest.get("Damage").asShort((short)0); if (tag.isPresent()) { Typed output = input; Dynamic tagRest = (Dynamic)((Typed)tag.get()).get(DSL.remainderFinder()); Optional potion = tagRest.get("Potion").asString().result(); if (potion.isEmpty()) { String potionName = POTIONS[damage & 0x7F]; Typed newTag = ((Typed)tag.get()).set(DSL.remainderFinder(), (Object)tagRest.set("Potion", tagRest.createString(potionName == null ? DEFAULT : potionName))); output = output.set(tagFinder, newTag); if ((damage & 0x4000) == 16384) { output = output.set(idFinder, (Object)Pair.of((Object)References.ITEM_NAME.typeName(), (Object)"minecraft:splash_potion")); } } if (damage != 0) { rest = rest.set("Damage", rest.createShort((short)0)); } return output.set(DSL.remainderFinder(), (Object)rest); } } return input; }); } }