Skip to content

Commit

Permalink
Update to 1.21.4
Browse files Browse the repository at this point in the history
Update rarities, costs, and method/field names
Match internals' declaration order
  • Loading branch information
Jikoo committed Jan 2, 2025
1 parent 16240b1 commit 7dc2f2b
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@ public class EnchantData implements WeightedRandom.Choice {
add(Enchantment.AQUA_AFFINITY, Tag.ITEMS_ENCHANTABLE_HEAD_ARMOR, 2, 4, flat(1), flat(41));
add(Enchantment.THORNS, Tag.ITEMS_ENCHANTABLE_CHEST_ARMOR, 1, 8, perLvl(10, 20), perLvl(60, 20));
add(Enchantment.DEPTH_STRIDER, Tag.ITEMS_ENCHANTABLE_FOOT_ARMOR, 2, 4, perLvl(10, 10), perLvl(25, 10));
add(Enchantment.FROST_WALKER, Tag.ITEMS_ENCHANTABLE_FOOT_ARMOR, 2, 4, perLvl(10, 10), perLvl(25, 10));
add(Enchantment.BINDING_CURSE, Tag.ITEMS_ENCHANTABLE_EQUIPPABLE, 1, 8, flat(25), flat(50));
add(Enchantment.SOUL_SPEED, Tag.ITEMS_ENCHANTABLE_FOOT_ARMOR, 1, 8, perLvl(10, 10), perLvl(25, 10));
add(Enchantment.SWIFT_SNEAK, Tag.ITEMS_ENCHANTABLE_LEG_ARMOR, 1, 8, perLvl(25, 25), perLvl(75, 25));
add(Enchantment.FROST_WALKER, ItemUtil.TAG_EMPTY, Tag.ITEMS_ENCHANTABLE_FOOT_ARMOR, 2, 4, perLvl(10, 10), perLvl(25, 10));
add(Enchantment.BINDING_CURSE, ItemUtil.TAG_EMPTY, Tag.ITEMS_ENCHANTABLE_EQUIPPABLE, 1, 8, flat(25), flat(50));
add(Enchantment.SOUL_SPEED, ItemUtil.TAG_EMPTY, Tag.ITEMS_ENCHANTABLE_FOOT_ARMOR, 1, 8, perLvl(10, 10), perLvl(25, 10));
add(Enchantment.SWIFT_SNEAK, ItemUtil.TAG_EMPTY, Tag.ITEMS_ENCHANTABLE_LEG_ARMOR, 1, 8, perLvl(25, 25), perLvl(75, 25));
// Melee weapon
add(Enchantment.SHARPNESS, Tag.ITEMS_ENCHANTABLE_SHARP_WEAPON, Tag.ITEMS_ENCHANTABLE_SWORD, 10, 1, perLvl(1, 11), perLvl(21, 11));
add(Enchantment.SMITE, Tag.ITEMS_ENCHANTABLE_WEAPON, Tag.ITEMS_ENCHANTABLE_SWORD, 5, 2, perLvl(5, 8), perLvl(25, 8));
Expand Down Expand Up @@ -62,16 +62,13 @@ public class EnchantData implements WeightedRandom.Choice {
add(Enchantment.MULTISHOT, Tag.ITEMS_ENCHANTABLE_CROSSBOW, 2, 4, flat(20), flat(50));
add(Enchantment.QUICK_CHARGE, Tag.ITEMS_ENCHANTABLE_CROSSBOW, 5, 2, perLvl(12, 20), flat(50));
add(Enchantment.PIERCING, Tag.ITEMS_ENCHANTABLE_CROSSBOW, 10, 1, perLvl(1, 10), flat(50));
// General
add(Enchantment.MENDING, Tag.ITEMS_ENCHANTABLE_DURABILITY, 2, 4, perLvl(25, 25), perLvl(75, 25));
add(Enchantment.VANISHING_CURSE, Tag.ITEMS_ENCHANTABLE_VANISHING, 1, 8, flat(25), flat(50));
// Mace
// NMSREF net.minecraft.world.item.enchantment.BreachEnchantment
add(Enchantment.DENSITY, Tag.ITEMS_ENCHANTABLE_MACE, 5, 2, perLvl(5, 8), perLvl(25, 8));
add(Enchantment.BREACH, Tag.ITEMS_ENCHANTABLE_MACE, 2, 4, perLvl(15, 9), perLvl(65, 9));
// NMSREF net.minecraft.world.item.enchantment.DensityEnchantment
add(Enchantment.DENSITY, Tag.ITEMS_ENCHANTABLE_MACE, 10, 1, perLvl(1, 11), perLvl(21, 11));
// NMSREF net.minecraft.world.item.enchantment.WindBurstEnchantment
add(Enchantment.WIND_BURST, Tag.ITEMS_ENCHANTABLE_MACE, 2, 4, perLvl(15, 9), perLvl(65, 9));
add(Enchantment.WIND_BURST, ItemUtil.TAG_EMPTY, Tag.ITEMS_ENCHANTABLE_MACE, 2, 4, perLvl(15, 9), perLvl(65, 9));
// General
add(Enchantment.MENDING, ItemUtil.TAG_EMPTY, Tag.ITEMS_ENCHANTABLE_DURABILITY, 2, 4, perLvl(25, 25), perLvl(75, 25));
add(Enchantment.VANISHING_CURSE, ItemUtil.TAG_EMPTY, Tag.ITEMS_ENCHANTABLE_VANISHING, 1, 8, flat(25), flat(50));
}

private static void add(
Expand All @@ -92,7 +89,7 @@ private static void add(
int anvilCost,
@NotNull IntUnaryOperator minEnchantQuality,
@NotNull IntUnaryOperator maxEnchantQuality) {
ENCHANT_DATA.put(enchant, new EnchantData(enchant, enchant.isTreasure() ? ItemUtil.TAG_EMPTY : null, items, weight, anvilCost, minEnchantQuality, maxEnchantQuality));
ENCHANT_DATA.put(enchant, new EnchantData(enchant, null, items, weight, anvilCost, minEnchantQuality, maxEnchantQuality));
}

private static @NotNull IntUnaryOperator perLvl(int base, int perLevel) {
Expand Down Expand Up @@ -123,7 +120,7 @@ public static EnchantData of(@NotNull Enchantment enchantment) {
private EnchantData(@NotNull Enchantment enchantment) {
this(enchantment,
null, // TODO
Tag.WALL_SIGNS, // TODO
ItemUtil.TAG_EMPTY, // TODO
EnchantDataReflection.getWeight(enchantment),
EnchantDataReflection.getAnvilCost(enchantment),
EnchantDataReflection.getMinCost(enchantment),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public final class EnchantDataReflection {
*/
public static int getWeight(@NotNull Enchantment enchantment) {
// NMSREF net.minecraft.world.item.enchantment.Enchantment#getWeight
return nmsHandler(enchantment, nmsEnchant -> (int) nmsEnchant.getClass().getMethod("d").invoke(nmsEnchant), 0);
return nmsHandler(enchantment, nmsEnchant -> (int) nmsEnchant.getClass().getMethod("b").invoke(nmsEnchant), 0);
}

/**
Expand All @@ -32,7 +32,7 @@ public static int getWeight(@NotNull Enchantment enchantment) {
*/
public static int getAnvilCost(@NotNull Enchantment enchantment) {
// NMSREF net.minecraft.world.item.enchantment.Enchantment#getAnvilCost
return nmsHandler(enchantment, nmsEnchant -> (int) nmsEnchant.getClass().getMethod("e").invoke(nmsEnchant), 40);
return nmsHandler(enchantment, nmsEnchant -> (int) nmsEnchant.getClass().getMethod("c").invoke(nmsEnchant), 40);
}

/**
Expand All @@ -43,7 +43,7 @@ public static int getAnvilCost(@NotNull Enchantment enchantment) {
*/
public static IntUnaryOperator getMinCost(Enchantment enchantment) {
// NMSREF net.minecraft.world.item.enchantment.Enchantment#getMinCost(int)
return nmsIntUnaryOperator(enchantment, "c", EnchantDataReflection::defaultMinEnchantQuality);
return nmsIntUnaryOperator(enchantment, "b", EnchantDataReflection::defaultMinEnchantQuality);
}

/**
Expand All @@ -64,7 +64,7 @@ private static int defaultMinEnchantQuality(int level) {
*/
public static IntUnaryOperator getMaxCost(Enchantment enchantment) {
// NMSREF net.minecraft.world.item.enchantment.Enchantment#getMaxCost(int)
return nmsIntUnaryOperator(enchantment, "d", EnchantDataReflection::defaultMaxEnchantQuality);
return nmsIntUnaryOperator(enchantment, "c", EnchantDataReflection::defaultMaxEnchantQuality);
}


Expand Down
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
package net.minecraft.world.item.enchantment;

import org.bukkit.NamespacedKey;
import java.util.function.IntUnaryOperator;
import org.bukkit.NamespacedKey;

public record Enchantment(
NamespacedKey key,
IntUnaryOperator minCost,
IntUnaryOperator maxCost,
// NMSREF \nnet\.minecraft\.world\.item\.enchantment\.Enchantment(.|\n)*?int getWeight\(\)
int d,
int b,
// NMSREF \nnet\.minecraft\.world\.item\.enchantment\.Enchantment(.|\n)*?int getAnvilCost\(\)
int e) {
int c) {

// NMSREF \nnet\.minecraft\.world\.item\.enchantment\.Enchantment(.|\n)*?int getMinCost\(int\)
public int c(int level) {
public int b(int level) {
return minCost().applyAsInt(level);
}

// NMSREF \nnet\.minecraft\.world\.item\.enchantment\.Enchantment(.|\n)*?int getMaxCost\(int\)
public int d(int level) {
public int c(int level) {
return maxCost().applyAsInt(level);
}

Expand Down

0 comments on commit 7dc2f2b

Please sign in to comment.