207 lines
8.6 KiB
Java
207 lines
8.6 KiB
Java
/*
|
|
* 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;
|
|
});
|
|
}
|
|
}
|
|
|