From f30649df43fc6850e9cc616f52afc800accbf431 Mon Sep 17 00:00:00 2001 From: Brian Rivas Date: Thu, 13 Jun 2024 11:49:50 -0700 Subject: [PATCH] update to 1.21 --- build.gradle | 2 +- gradle.properties | 12 +- .../roguelike/editor/blocks/BookShelf.java | 2 +- .../monster/profiles/ProfileArcher.java | 2 +- .../monster/profiles/ProfileAshlea.java | 2 +- .../monster/profiles/ProfileBaby.java | 7 +- .../monster/profiles/ProfileFireArcher.java | 4 +- .../monster/profiles/ProfileHusk.java | 2 +- .../monster/profiles/ProfileJohnny.java | 2 +- .../monster/profiles/ProfileMagicArcher.java | 4 +- .../monster/profiles/ProfilePigman.java | 2 +- .../monster/profiles/ProfilePoisonArcher.java | 4 +- .../monster/profiles/ProfileRleahy.java | 2 +- .../monster/profiles/ProfileSwordsman.java | 2 +- .../monster/profiles/ProfileVillager.java | 2 +- .../monster/profiles/ProfileVindicator.java | 2 +- .../monster/profiles/ProfileWither.java | 2 +- .../monster/profiles/ProfileZombie.java | 2 +- .../roguelike/treasure/loot/Enchant.java | 50 ++-- .../roguelike/treasure/loot/Loot.java | 14 +- .../treasure/loot/provider/ItemArmour.java | 10 +- .../treasure/loot/provider/ItemFood.java | 14 +- .../treasure/loot/provider/ItemJunk.java | 10 +- .../treasure/loot/provider/ItemNovelty.java | 57 ++--- .../treasure/loot/provider/ItemSpecialty.java | 228 +++++++++--------- .../treasure/loot/provider/ItemTool.java | 19 +- .../treasure/loot/provider/ItemWeapon.java | 35 +-- .../loot/rules/RoguelikeLootRules.java | 2 +- .../treasure/loot/trim/TrimMaterial.java | 2 +- src/main/resources/fabric.mod.json | 4 +- 30 files changed, 268 insertions(+), 234 deletions(-) diff --git a/build.gradle b/build.gradle index f4bc331eb..56864b921 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ plugins { id 'maven-publish' } -version = "${project.mod_version}beta-${project.minecraft_version}-fabric" +version = "${project.mod_version}-${project.minecraft_version}-fabric" group = project.maven_group base { diff --git a/gradle.properties b/gradle.properties index 38fa7efa5..b8a2a1498 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,14 +4,14 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.20.6 -yarn_mappings=1.20.6+build.1 -loader_version=0.15.10 +minecraft_version=1.21 +yarn_mappings=1.21+build.1 +loader_version=0.15.11 -#Fabric api -fabric_version=0.97.8+1.20.6 +# Fabric API +fabric_version=0.100.1+1.21 # Mod Properties -mod_version=2.0.5 +mod_version=2.0.6 maven_group=com.greymerk archives_base_name=RoguelikeDungeons \ No newline at end of file diff --git a/src/main/java/com/greymerk/roguelike/editor/blocks/BookShelf.java b/src/main/java/com/greymerk/roguelike/editor/blocks/BookShelf.java index 1e7e1c6cd..c710f6383 100644 --- a/src/main/java/com/greymerk/roguelike/editor/blocks/BookShelf.java +++ b/src/main/java/com/greymerk/roguelike/editor/blocks/BookShelf.java @@ -34,7 +34,7 @@ public static void set(IWorldEditor editor, Random rand, Coord origin, Cardinal ChiseledBookshelfBlockEntity shelf = (ChiseledBookshelfBlockEntity)be; getSlots(rand).forEach(i -> { - shelf.setStack(i, Enchant.getBook(rand, Difficulty.fromY(origin.getY()))); + shelf.setStack(i, Enchant.getBook(editor.getRegistryManager(), rand, Difficulty.fromY(origin.getY()))); }); shelf.markDirty(); diff --git a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileArcher.java b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileArcher.java index 6419c6241..9686d2f63 100644 --- a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileArcher.java +++ b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileArcher.java @@ -22,7 +22,7 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) mob.setSlot(EquipmentSlot.OFFHAND, TippedArrow.getHarmful(rand, 1)); } - mob.setSlot(EquipmentSlot.MAINHAND, ItemWeapon.getBow(world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff))); + mob.setSlot(EquipmentSlot.MAINHAND, ItemWeapon.getBow(world.getRegistryManager(), world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff))); MonsterProfile.get(MonsterProfile.TALLMOB).addEquipment(world, rand, diff, mob); } diff --git a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileAshlea.java b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileAshlea.java index a974631fa..956b29c09 100644 --- a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileAshlea.java +++ b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileAshlea.java @@ -23,7 +23,7 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) MonsterProfile.get(MonsterProfile.VILLAGER).addEquipment(world, rand, diff, mob); - ItemStack weapon = ItemNovelty.getItem(ItemNovelty.ASHLEA); + ItemStack weapon = ItemNovelty.getItem(world.getRegistryManager(), ItemNovelty.ASHLEA); mob.setSlot(EquipmentSlot.MAINHAND, weapon); for(EquipmentSlot slot : new EquipmentSlot[]{ diff --git a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileBaby.java b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileBaby.java index 3486595dc..5876f3695 100644 --- a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileBaby.java +++ b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileBaby.java @@ -11,6 +11,7 @@ import net.minecraft.entity.EquipmentSlot; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.util.math.random.Random; import net.minecraft.world.World; @@ -24,12 +25,12 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) MonsterProfile.get(MonsterProfile.VILLAGER).addEquipment(world, rand, diff, mob); } - mob.setSlot(EquipmentSlot.MAINHAND, toy(rand)); + mob.setSlot(EquipmentSlot.MAINHAND, toy(world.getRegistryManager(), rand)); } - private ItemStack toy(Random rand) { + private ItemStack toy(DynamicRegistryManager reg, Random rand) { - if(rand.nextInt(100) == 0) return ItemNovelty.getItem(ItemNovelty.VECHS); + if(rand.nextInt(100) == 0) return ItemNovelty.getItem(reg, ItemNovelty.VECHS); WeightedRandomizer randomizer = new WeightedRandomizer(); diff --git a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileFireArcher.java b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileFireArcher.java index b210e58d7..bcf04c17d 100644 --- a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileFireArcher.java +++ b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileFireArcher.java @@ -30,7 +30,7 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) mob.setEffect(PotionEffect.getInstance(PotionEffect.FIRERESIST, 1, 60 * 60)); mob.setEffect(PotionEffect.getInstance(PotionEffect.SPEED, 1, 60 * 60)); - mob.setSlot(EquipmentSlot.MAINHAND, ItemNovelty.getItem(ItemNovelty.BURNING)); + mob.setSlot(EquipmentSlot.MAINHAND, ItemNovelty.getItem(world.getRegistryManager(), ItemNovelty.BURNING)); for(EquipmentSlot slot : new EquipmentSlot[]{ EquipmentSlot.HEAD, @@ -39,7 +39,7 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) EquipmentSlot.FEET }){ ItemStack item = ItemArmour.get(rand, Slot.getSlot(slot), Quality.WOOD); - Enchant.enchantItem(world.getEnabledFeatures(), rand, item, 20); + Enchant.enchantItem(world.getRegistryManager(), world.getEnabledFeatures(), rand, item, 20); ItemArmour.dyeArmor(item, 200, 50, 52); // dark red Trim.set(world.getRegistryManager(), item, TrimPattern.RIB, TrimMaterial.GOLD); mob.setSlot(slot, item); diff --git a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileHusk.java b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileHusk.java index dd58cfca4..bcc11d058 100644 --- a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileHusk.java +++ b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileHusk.java @@ -18,7 +18,7 @@ public class ProfileHusk implements IMonsterProfile { @Override public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) { mob.setMobClass(MobType.HUSK, false); - ItemStack weapon = ItemTool.getRandom(world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff)); + ItemStack weapon = ItemTool.getRandom(world.getRegistryManager(), world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff)); mob.setSlot(EquipmentSlot.MAINHAND, weapon); mob.setSlot(EquipmentSlot.OFFHAND, Shield.get(world.getRegistryManager(), rand)); MonsterProfile.get(MonsterProfile.TALLMOB).addEquipment(world, rand, diff, mob); diff --git a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileJohnny.java b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileJohnny.java index 664b927ed..72a9a3277 100644 --- a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileJohnny.java +++ b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileJohnny.java @@ -18,7 +18,7 @@ public class ProfileJohnny implements IMonsterProfile { @Override public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) { mob.setMobClass(MobType.VINDICATOR, false); - mob.setSlot(EquipmentSlot.MAINHAND, ItemSpecialty.getRandomItem(Equipment.AXE, rand, Difficulty.HARDEST)); + mob.setSlot(EquipmentSlot.MAINHAND, ItemSpecialty.getRandomItem(world.getRegistryManager(), Equipment.AXE, rand, Difficulty.HARDEST)); MonsterProfile.get(MonsterProfile.TALLMOB).addEquipment(world, rand, Difficulty.HARD, mob); mob.setName("Johnny"); } diff --git a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileMagicArcher.java b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileMagicArcher.java index f17067626..da379c4c0 100644 --- a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileMagicArcher.java +++ b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileMagicArcher.java @@ -28,7 +28,7 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) mob.setMobClass(MobType.STRAY, false); mob.setSlot(EquipmentSlot.OFFHAND, TippedArrow.get(PotionItem.HARM)); - mob.setSlot(EquipmentSlot.MAINHAND, ItemWeapon.getBow(world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff))); + mob.setSlot(EquipmentSlot.MAINHAND, ItemWeapon.getBow(world.getRegistryManager(), world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff))); for(EquipmentSlot slot : new EquipmentSlot[]{ EquipmentSlot.HEAD, @@ -37,7 +37,7 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) EquipmentSlot.FEET }){ ItemStack item = ItemArmour.get(rand, Slot.getSlot(slot), Quality.WOOD); - Enchant.enchantItem(world.getEnabledFeatures(), rand, item, 20); + Enchant.enchantItem(world.getRegistryManager(), world.getEnabledFeatures(), rand, item, 20); ItemArmour.dyeArmor(item, 51, 0, 102); // dark blue Trim.set(world.getRegistryManager(), item, TrimPattern.VEX, TrimMaterial.GOLD); mob.setSlot(slot, item); diff --git a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfilePigman.java b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfilePigman.java index 60e3b621c..dbd006b8a 100644 --- a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfilePigman.java +++ b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfilePigman.java @@ -18,7 +18,7 @@ public class ProfilePigman implements IMonsterProfile { @Override public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) { mob.setMobClass(MobType.PIGZOMBIE, true); - ItemStack weapon = ItemWeapon.getSword(world.getEnabledFeatures(), rand, diff, true); + ItemStack weapon = ItemWeapon.getSword(world.getRegistryManager(), world.getEnabledFeatures(), rand, diff, true); mob.setSlot(EquipmentSlot.MAINHAND, weapon); mob.setSlot(EquipmentSlot.OFFHAND, Shield.get(world.getRegistryManager(), rand)); MonsterProfile.get(MonsterProfile.TALLMOB).addEquipment(world, rand, diff, mob); diff --git a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfilePoisonArcher.java b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfilePoisonArcher.java index 9a2f5dc1f..5861e1904 100644 --- a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfilePoisonArcher.java +++ b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfilePoisonArcher.java @@ -28,7 +28,7 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) mob.setMobClass(MobType.STRAY, false); mob.setSlot(EquipmentSlot.OFFHAND, TippedArrow.get(Potions.STRONG_POISON)); - mob.setSlot(EquipmentSlot.MAINHAND, ItemWeapon.getBow(world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff))); + mob.setSlot(EquipmentSlot.MAINHAND, ItemWeapon.getBow(world.getRegistryManager(), world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff))); for(EquipmentSlot slot : new EquipmentSlot[]{ EquipmentSlot.HEAD, @@ -37,7 +37,7 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) EquipmentSlot.FEET }){ ItemStack item = ItemArmour.get(rand, Slot.getSlot(slot), Quality.WOOD); - Enchant.enchantItem(world.getEnabledFeatures(), rand, item, 20); + Enchant.enchantItem(world.getRegistryManager(), world.getEnabledFeatures(), rand, item, 20); ItemArmour.dyeArmor(item, 178, 255, 102); //bright lime green Trim.set(world.getRegistryManager(), item, TrimPattern.WILD, TrimMaterial.REDSTONE); mob.setSlot(slot, item); diff --git a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileRleahy.java b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileRleahy.java index 9c073f760..507a83731 100644 --- a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileRleahy.java +++ b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileRleahy.java @@ -18,7 +18,7 @@ public class ProfileRleahy implements IMonsterProfile { @Override public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) { - ItemStack weapon = ItemNovelty.getItem(ItemNovelty.RLEAHY); + ItemStack weapon = ItemNovelty.getItem(world.getRegistryManager(), ItemNovelty.RLEAHY); mob.setSlot(EquipmentSlot.MAINHAND, weapon); mob.setSlot(EquipmentSlot.OFFHAND, Shield.get(world.getRegistryManager(), rand)); diff --git a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileSwordsman.java b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileSwordsman.java index b94c2924a..b887a8f61 100644 --- a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileSwordsman.java +++ b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileSwordsman.java @@ -16,7 +16,7 @@ public class ProfileSwordsman implements IMonsterProfile { @Override public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) { - ItemStack weapon = ItemWeapon.getSword(world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff)); + ItemStack weapon = ItemWeapon.getSword(world.getRegistryManager(), world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff)); mob.setSlot(EquipmentSlot.MAINHAND, weapon); mob.setSlot(EquipmentSlot.OFFHAND, Shield.get(world.getRegistryManager(), rand)); diff --git a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileVillager.java b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileVillager.java index c69f07b48..de111b536 100644 --- a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileVillager.java +++ b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileVillager.java @@ -17,7 +17,7 @@ public class ProfileVillager implements IMonsterProfile { @Override public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) { mob.setMobClass(MobType.ZOMBIEVILLAGER, false); - ItemStack weapon = ItemTool.getRandom(world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff)); + ItemStack weapon = ItemTool.getRandom(world.getRegistryManager(), world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff)); mob.setSlot(EquipmentSlot.MAINHAND, weapon); MonsterProfile.get(MonsterProfile.TALLMOB).addEquipment(world, rand, diff, mob); } diff --git a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileVindicator.java b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileVindicator.java index 9fa7382cf..63c681533 100644 --- a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileVindicator.java +++ b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileVindicator.java @@ -16,7 +16,7 @@ public class ProfileVindicator implements IMonsterProfile { @Override public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) { mob.setMobClass(MobType.VINDICATOR, true); - mob.setSlot(EquipmentSlot.MAINHAND, ItemSpecialty.getRandomItem(Equipment.AXE, rand, diff)); + mob.setSlot(EquipmentSlot.MAINHAND, ItemSpecialty.getRandomItem(world.getRegistryManager(), Equipment.AXE, rand, diff)); } } diff --git a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileWither.java b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileWither.java index e514fcfd5..61386eb79 100644 --- a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileWither.java +++ b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileWither.java @@ -16,7 +16,7 @@ public class ProfileWither implements IMonsterProfile { @Override public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) { mob.setMobClass(MobType.WITHERSKELETON, false); - mob.setSlot(EquipmentSlot.MAINHAND, ItemWeapon.getSword(world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff))); + mob.setSlot(EquipmentSlot.MAINHAND, ItemWeapon.getSword(world.getRegistryManager(), world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff))); MonsterProfile.get(MonsterProfile.TALLMOB).addEquipment(world, rand, diff, mob); } diff --git a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileZombie.java b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileZombie.java index 8e8b1939e..fd7d0e971 100644 --- a/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileZombie.java +++ b/src/main/java/com/greymerk/roguelike/monster/profiles/ProfileZombie.java @@ -67,7 +67,7 @@ public void addEquipment(World world, Random rand, Difficulty diff, IEntity mob) return; } - ItemStack weapon = ItemTool.getRandom(world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff)); + ItemStack weapon = ItemTool.getRandom(world.getRegistryManager(), world.getEnabledFeatures(), rand, diff, mob.canEnchant(rand, diff)); mob.setSlot(EquipmentSlot.MAINHAND, weapon); MonsterProfile.get(MonsterProfile.TALLMOB).addEquipment(world, rand, diff, mob); } diff --git a/src/main/java/com/greymerk/roguelike/treasure/loot/Enchant.java b/src/main/java/com/greymerk/roguelike/treasure/loot/Enchant.java index 6a584bac6..40f10fdd3 100644 --- a/src/main/java/com/greymerk/roguelike/treasure/loot/Enchant.java +++ b/src/main/java/com/greymerk/roguelike/treasure/loot/Enchant.java @@ -1,6 +1,8 @@ package com.greymerk.roguelike.treasure.loot; +import java.util.ArrayList; import java.util.List; +import java.util.stream.Stream; import com.greymerk.roguelike.dungeon.Difficulty; @@ -9,7 +11,10 @@ import net.minecraft.enchantment.EnchantmentLevelEntry; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; -import net.minecraft.registry.Registries; +import net.minecraft.registry.DynamicRegistryManager; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.resource.featuretoggle.FeatureSet; import net.minecraft.util.Identifier; import net.minecraft.util.math.random.Random; @@ -41,11 +46,12 @@ public enum Enchant { public static final List cursed = List.of(CURSE_OF_VANISHING, CURSE_OF_BINDING); - public static Enchantment getEnchant(Enchant type){ + public static RegistryEntry getEnchant(DynamicRegistryManager reg, Enchant type){ + Registry enchantments = reg.get(RegistryKeys.ENCHANTMENT); String ns = "minecraft"; String path = getName(type); - Identifier id = new Identifier(ns, path); - return Registries.ENCHANTMENT.get(id); + Identifier id = Identifier.of(ns, path); + return enchantments.getEntry(id).get(); } public static String getName(Enchant type){ @@ -156,13 +162,13 @@ public static int getLevel(Random rand, Difficulty diff) { } } - public static ItemStack enchantItem(FeatureSet features, Random rand, ItemStack item, int enchantLevel) { - + public static ItemStack enchantItem(DynamicRegistryManager reg, FeatureSet features, Random rand, ItemStack item, int enchantLevel) { + if (item == null ) return null; List enchants = null; try{ - enchants = EnchantmentHelper.generateEnchantments(features, rand, item, enchantLevel, false); + enchants = EnchantmentHelper.generateEnchantments(rand, item, enchantLevel, streamEntries(reg)); } catch(NullPointerException e){ throw e; } @@ -181,35 +187,43 @@ public static ItemStack enchantItem(FeatureSet features, Random rand, ItemStack return item; } - public static ItemStack getBook(FeatureSet features, Random rand, Difficulty diff) { + public static Stream> streamEntries(DynamicRegistryManager reg){ + List> enchants = new ArrayList>(); + List.of(Enchant.values()).forEach(e -> { + enchants.add(Enchant.getEnchant(reg, e)); + }); + return enchants.stream(); + } + + public static ItemStack getBook(DynamicRegistryManager reg, FeatureSet features, Random rand, Difficulty diff) { ItemStack book = new ItemStack(Items.BOOK); int level = getLevel(rand, diff); - return enchantItem(features, rand, book, level); + return enchantItem(reg, features, rand, book, level); } - public static ItemStack getBook(Random rand, Enchant type, Difficulty diff) { + public static ItemStack getBook(DynamicRegistryManager reg, Random rand, Enchant type, Difficulty diff) { ItemStack book = new ItemStack(Items.ENCHANTED_BOOK); - book.addEnchantment(Enchant.getEnchant(type), Enchant.getRandomRank(rand, type, diff)); + book.addEnchantment(Enchant.getEnchant(reg, type), Enchant.getRandomRank(rand, type, diff)); return book; } - public static ItemStack getBook(Random rand, Difficulty diff) { + public static ItemStack getBook(DynamicRegistryManager reg, Random rand, Difficulty diff) { if(diff == Difficulty.HARDEST && rand.nextInt(4) == 0) { Enchant type = endgame.get(rand.nextInt(endgame.size())); - return Enchant.getBook(rand, type, diff); + return Enchant.getBook(reg, rand, type, diff); } - if(rand.nextInt(6) == 0) return Enchant.getBook(Enchant.MENDING); + if(rand.nextInt(6) == 0) return Enchant.getBook(reg, Enchant.MENDING); Enchant type = common.get(rand.nextInt(common.size())); - return Enchant.getBook(rand, type, diff); + return Enchant.getBook(reg, rand, type, diff); } - public static ItemStack getBook(Enchant type) { - Enchantment e = getEnchant(type); + public static ItemStack getBook(DynamicRegistryManager reg, Enchant type) { + RegistryEntry e = getEnchant(reg, type); ItemStack item = new ItemStack(Items.ENCHANTED_BOOK); - item.addEnchantment(e, e.getMaxLevel()); + item.addEnchantment(e, Enchant.getMaxRank(type)); return item; } } diff --git a/src/main/java/com/greymerk/roguelike/treasure/loot/Loot.java b/src/main/java/com/greymerk/roguelike/treasure/loot/Loot.java index 8ff0b25af..46a4b0374 100644 --- a/src/main/java/com/greymerk/roguelike/treasure/loot/Loot.java +++ b/src/main/java/com/greymerk/roguelike/treasure/loot/Loot.java @@ -63,19 +63,19 @@ public static IWeighted getProvider(Loot type, Difficulty diff, IWorl DynamicRegistryManager reg = editor.getRegistryManager(); switch(type){ - case WEAPON: return new ItemWeapon(features, 0, diff); + case WEAPON: return new ItemWeapon(reg, features, 0, diff); case ARMOUR: return new ItemArmour(0, diff, features, reg); case BLOCK: return new ItemBlock(0, diff); - case JUNK: return new ItemJunk(0, diff); + case JUNK: return new ItemJunk(reg, 0, diff); case ORE: return new ItemOre(0, diff); - case TOOL: return new ItemTool(features, 0, diff); + case TOOL: return new ItemTool(reg, features, 0, diff); case POTION: return new ItemPotion(0, diff); case BREWING: return new ItemBrewing(0, diff); - case FOOD: return new ItemFood(0, diff); + case FOOD: return new ItemFood(reg, 0, diff); case ENCHANTING: return new ItemEnchanting(0, diff); case SUPPLY: return new ItemSupply(0, diff); case MUSIC: return new ItemMusic(0, diff); - case SPECIAL: return new ItemSpecialty(0, diff); + case SPECIAL: return new ItemSpecialty(reg, 0, diff); case PRECIOUS: return new ItemPrecious(0, diff); } @@ -84,7 +84,7 @@ public static IWeighted getProvider(Loot type, Difficulty diff, IWorl public static ItemStack getEquipmentBySlot(FeatureSet features, DynamicRegistryManager reg, Random rand, EquipmentSlot slot, Difficulty diff, boolean enchant){ if(slot == EquipmentSlot.MAINHAND){ - return ItemWeapon.getRandom(features, rand, diff, enchant); + return ItemWeapon.getRandom(reg, features, rand, diff, enchant); } return ItemArmour.getRandom(features, reg, rand, diff, Slot.getSlot(slot), enchant); @@ -93,7 +93,7 @@ public static ItemStack getEquipmentBySlot(FeatureSet features, DynamicRegistryM public static ItemStack getEquipmentBySlot(FeatureSet features, DynamicRegistryManager reg, Random rand, Slot slot, Difficulty diff, boolean enchant){ if(slot == Slot.WEAPON){ - return ItemWeapon.getRandom(features, rand, diff, enchant); + return ItemWeapon.getRandom(reg, features, rand, diff, enchant); } return ItemArmour.getRandom(features, reg, rand, diff, slot, enchant); diff --git a/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemArmour.java b/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemArmour.java index 6a0d201cf..219901f71 100644 --- a/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemArmour.java +++ b/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemArmour.java @@ -41,16 +41,16 @@ public static ItemStack getRandom(FeatureSet features, DynamicRegistryManager re public static ItemStack getRandom(FeatureSet features, DynamicRegistryManager reg, Random rand, Difficulty diff, Slot slot, boolean enchant){ if(enchant && rand.nextInt(20 + (Difficulty.value(diff) * 10)) == 0){ switch(slot){ - case HEAD: return ItemSpecialty.getRandomItem(Equipment.HELMET, rand, diff); - case CHEST: return ItemSpecialty.getRandomItem(Equipment.CHEST, rand, diff); - case LEGS: return ItemSpecialty.getRandomItem(Equipment.LEGS, rand, diff); - case FEET: return ItemSpecialty.getRandomItem(Equipment.FEET, rand, diff); + case HEAD: return ItemSpecialty.getRandomItem(reg, Equipment.HELMET, rand, diff); + case CHEST: return ItemSpecialty.getRandomItem(reg, Equipment.CHEST, rand, diff); + case LEGS: return ItemSpecialty.getRandomItem(reg, Equipment.LEGS, rand, diff); + case FEET: return ItemSpecialty.getRandomItem(reg, Equipment.FEET, rand, diff); default: return new ItemStack(Items.STICK); } } ItemStack item = get(rand, slot, Quality.getArmourQuality(rand, diff)); - if(enchant) Enchant.enchantItem(features, rand, item, Enchant.getLevel(rand, diff)); + if(enchant) Enchant.enchantItem(reg, features, rand, item, Enchant.getLevel(rand, diff)); Trim.addRandom(reg, item, rand); return item; } diff --git a/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemFood.java b/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemFood.java index 6114670ec..18aac48f0 100644 --- a/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemFood.java +++ b/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemFood.java @@ -11,15 +11,19 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.util.math.random.Random; public class ItemFood extends ItemBase{ private Map> loot; + private DynamicRegistryManager reg; - public ItemFood(int weight, Difficulty diff) { + public ItemFood(DynamicRegistryManager reg, int weight, Difficulty diff) { super(weight, diff); + this.reg = reg; this.loot = new HashMap>(); + List.of(Difficulty.values()).forEach(d -> { WeightedRandomizer randomizer = new WeightedRandomizer(); @@ -71,10 +75,10 @@ public ItemFood(int weight, Difficulty diff) { @Override public ItemStack getLootItem(Random rand, Difficulty diff) { - if(rand.nextInt(2000) == 0) return ItemNovelty.getItem(ItemNovelty.GENERIKB); - if(rand.nextInt(2000) == 0) return ItemNovelty.getItem(ItemNovelty.AVIDYA); - if(rand.nextInt(1000) == 0) return ItemNovelty.getItem(ItemNovelty.RLEAHY); - if(rand.nextInt(1000) == 0) return ItemNovelty.getItem(ItemNovelty.FOURLES); + if(rand.nextInt(2000) == 0) return ItemNovelty.getItem(reg, ItemNovelty.GENERIKB); + if(rand.nextInt(2000) == 0) return ItemNovelty.getItem(reg, ItemNovelty.AVIDYA); + if(rand.nextInt(1000) == 0) return ItemNovelty.getItem(reg, ItemNovelty.RLEAHY); + if(rand.nextInt(1000) == 0) return ItemNovelty.getItem(reg, ItemNovelty.FOURLES); if(diff == Difficulty.EASIEST && rand.nextInt(20) == 0) return PotionMixture.getPotion(rand, PotionMixture.COFFEE); return this.loot.get(diff).get(rand); } diff --git a/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemJunk.java b/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemJunk.java index 9cdc8cd08..f7070ee3e 100644 --- a/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemJunk.java +++ b/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemJunk.java @@ -10,15 +10,17 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.util.math.random.Random; public class ItemJunk extends ItemBase{ private Map> loot; + private DynamicRegistryManager reg; - public ItemJunk(int weight, Difficulty diff) { + public ItemJunk(DynamicRegistryManager reg, int weight, Difficulty diff) { super(weight, diff ); - + this.reg = reg; this.loot = new HashMap>(); List.of(Difficulty.values()).forEach(d -> { @@ -59,8 +61,8 @@ public ItemJunk(int weight, Difficulty diff) { @Override public ItemStack getLootItem(Random rand, Difficulty diff){ - if(rand.nextInt(5000) == 0) return ItemNovelty.getItem(ItemNovelty.ZISTEAU); - if(rand.nextInt(5000) == 0) return ItemNovelty.getItem(ItemNovelty.VECHS); + if(rand.nextInt(5000) == 0) return ItemNovelty.getItem(reg, ItemNovelty.ZISTEAU); + if(rand.nextInt(5000) == 0) return ItemNovelty.getItem(reg, ItemNovelty.VECHS); return this.loot.get(diff).get(rand); } } diff --git a/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemNovelty.java b/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemNovelty.java index a662af522..384ec0f20 100644 --- a/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemNovelty.java +++ b/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemNovelty.java @@ -8,6 +8,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.util.Rarity; public enum ItemNovelty { @@ -16,11 +17,11 @@ public enum ItemNovelty { CLEO, WINDFORCE, RLEAHY, VECHS, GENERIKB, FOURLES, BURNING; - public static IWeighted get(ItemNovelty choice, int weight){ - return new WeightedChoice(getItem(choice), weight); + public static IWeighted get(DynamicRegistryManager reg, ItemNovelty choice, int weight){ + return new WeightedChoice(getItem(reg, choice), weight); } - public static ItemStack getItem(ItemNovelty choice){ + public static ItemStack getItem(DynamicRegistryManager reg, ItemNovelty choice){ ItemStack item; @@ -31,28 +32,28 @@ public static ItemStack getItem(ItemNovelty choice){ Loot.setItemName(item, "Greymerk's Hatchet"); Loot.setItemLore(item, "Pointlessly sharp", TextFormat.DARKGREEN); Loot.setRarity(item, Rarity.EPIC); - item.addEnchantment(Enchant.getEnchant(Enchant.SHARPNESS), 3); - item.addEnchantment(Enchant.getEnchant(Enchant.KNOCKBACK), 1); - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), 2); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.SHARPNESS), 3); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.KNOCKBACK), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), 2); return item; case NULL: item = new ItemStack(Items.NETHERITE_SWORD); Loot.setItemName(item, "Null Pointer"); Loot.setItemLore(item, "Exceptional", TextFormat.DARKGREEN); Loot.setRarity(item, Rarity.EPIC); - item.addEnchantment(Enchant.getEnchant(Enchant.SHARPNESS), 5); - item.addEnchantment(Enchant.getEnchant(Enchant.KNOCKBACK), 2); - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), 3); - item.addEnchantment(Enchant.getEnchant(Enchant.MENDING), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.SHARPNESS), 5); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.KNOCKBACK), 2); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), 3); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.MENDING), 1); return item; case ZISTEAU: item = new ItemStack(Items.OAK_SIGN); Loot.setItemName(item, "Battle Sign"); Loot.setItemLore(item, "\"That's what you get!\"", TextFormat.DARKGREEN); Loot.setRarity(item, Rarity.EPIC); - item.addEnchantment(Enchant.getEnchant(Enchant.SHARPNESS), 5); - item.addEnchantment(Enchant.getEnchant(Enchant.KNOCKBACK), 3); - item.addEnchantment(Enchant.getEnchant(Enchant.FIREASPECT), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.SHARPNESS), 5); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.KNOCKBACK), 3); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.FIREASPECT), 1); return item; case AVIDYA: item = new ItemStack(Items.MILK_BUCKET); @@ -71,9 +72,9 @@ public static ItemStack getItem(ItemNovelty choice){ Loot.setItemName(item, "Farland Travellers"); Loot.setItemLore(item, "Indeed!", TextFormat.DARKGREEN); Loot.setRarity(item, Rarity.EPIC); - item.addEnchantment(Enchant.getEnchant(Enchant.PROTECTION), 3); - item.addEnchantment(Enchant.getEnchant(Enchant.FEATHERFALLING), 2); - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), 3); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.PROTECTION), 3); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.FEATHERFALLING), 2); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), 3); ItemArmour.dyeArmor(item, 165, 42, 42); return item; case CLEO: @@ -81,41 +82,41 @@ public static ItemStack getItem(ItemNovelty choice){ Loot.setItemName(item, "Digging Feesh"); Loot.setItemLore(item, "Feesh are not efeeshent for digging", TextFormat.DARKGREEN); Loot.setRarity(item, Rarity.EPIC); - item.addEnchantment(Enchant.getEnchant(Enchant.EFFICIENCY), 10); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.EFFICIENCY), 10); return item; case RLEAHY: item = new ItemStack(Items.BREAD); Loot.setItemName(item, "Battle Sub"); Loot.setItemLore(item, "With extra pastrami", TextFormat.DARKGREEN); Loot.setRarity(item, Rarity.EPIC); - item.addEnchantment(Enchant.getEnchant(Enchant.SHARPNESS), 1); - item.addEnchantment(Enchant.getEnchant(Enchant.KNOCKBACK), 1); - item.addEnchantment(Enchant.getEnchant(Enchant.FIREASPECT), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.SHARPNESS), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.KNOCKBACK), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.FIREASPECT), 1); return item; case WINDFORCE: item = new ItemStack(Items.BOW); Loot.setItemName(item, "Windforce"); Loot.setItemLore(item, "Found on many battlefields", TextFormat.DARKGREEN); Loot.setRarity(item, Rarity.EPIC); - item.addEnchantment(Enchant.getEnchant(Enchant.POWER), 5); - item.addEnchantment(Enchant.getEnchant(Enchant.PUNCH), 2); - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), 3); - item.addEnchantment(Enchant.getEnchant(Enchant.INFINITY), 1); - item.addEnchantment(Enchant.getEnchant(Enchant.MENDING), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.POWER), 5); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.PUNCH), 2); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), 3); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.INFINITY), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.MENDING), 1); return item; case VECHS: item = new ItemStack(Items.STICK); Loot.setItemName(item, "Legendary Stick"); Loot.setItemLore(item, "\"Really?!\"", TextFormat.DARKGREEN); Loot.setRarity(item, Rarity.EPIC); - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), 1); return item; case GENERIKB: item = new ItemStack(Items.BAKED_POTATO); Loot.setItemName(item, "Hot Potato"); Loot.setItemLore(item, "All a hermit needs", TextFormat.DARKGREEN); Loot.setRarity(item, Rarity.EPIC); - item.addEnchantment(Enchant.getEnchant(Enchant.FIREASPECT), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.FIREASPECT), 1); return item; case FOURLES: item = new ItemStack(Items.COCOA_BEANS); @@ -127,7 +128,7 @@ public static ItemStack getItem(ItemNovelty choice){ item = new ItemStack(Items.BOW); Loot.setItemName(item, "Burning Bow"); Loot.setRarity(item, Rarity.EPIC); - item.addEnchantment(Enchant.getEnchant(Enchant.FLAME), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.FLAME), 1); return item; default: return new ItemStack(Items.STICK); diff --git a/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemSpecialty.java b/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemSpecialty.java index aac2da056..35504f79a 100644 --- a/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemSpecialty.java +++ b/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemSpecialty.java @@ -9,6 +9,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.util.Rarity; import net.minecraft.util.math.random.Random; @@ -17,154 +18,159 @@ public class ItemSpecialty extends ItemBase { private Equipment type; private Quality quality; - public ItemSpecialty(int weight, Difficulty diff){ + private DynamicRegistryManager reg; + + public ItemSpecialty(DynamicRegistryManager reg, int weight, Difficulty diff){ super(weight, diff); + this.reg = reg; } - public ItemSpecialty(int weight, Difficulty diff, Equipment type, Quality q){ + public ItemSpecialty(DynamicRegistryManager reg, int weight, Difficulty diff, Equipment type, Quality q){ super(weight, diff); this.type = type; this.quality = q; + this.reg = reg; } - public ItemSpecialty(int weight, Difficulty diff, Quality q){ + public ItemSpecialty(DynamicRegistryManager reg, int weight, Difficulty diff, Quality q){ super(weight, diff); this.quality = q; + this.reg = reg; } @Override public ItemStack get(Random rand){ Equipment t = this.type == null ? Equipment.values()[rand.nextInt(Equipment.values().length)] : this.type; Quality q = this.quality == null ? Quality.get(rand, diff, t) : this.quality; - return getRandomItem(t, rand, q); + return getRandomItem(reg, t, rand, q); } - public static ItemStack getRandomItem(Random rand, Difficulty diff){ - return getRandomItem(Equipment.values()[rand.nextInt(Equipment.values().length)], rand, diff); + public static ItemStack getRandomItem(DynamicRegistryManager reg, Random rand, Difficulty diff){ + return getRandomItem(reg, Equipment.values()[rand.nextInt(Equipment.values().length)], rand, diff); } - public static ItemStack getRandomItem(Equipment type, Random rand, Difficulty diff){ - return getRandomItem(type, rand, Quality.get(rand, diff, type)); + public static ItemStack getRandomItem(DynamicRegistryManager reg, Equipment type, Random rand, Difficulty diff){ + return getRandomItem(reg, type, rand, Quality.get(rand, diff, type)); } - public static ItemStack getRandomItem(Equipment type, Random rand, Quality quality){ + public static ItemStack getRandomItem(DynamicRegistryManager reg, Equipment type, Random rand, Quality quality){ ItemStack item; switch(type){ - case SWORD: item = getSword(rand, quality); break; - case BOW: item = getBow(rand, quality); break; - case HELMET: item = getHelmet(rand, quality); break; - case CHEST: item = getChest(rand, quality); break; - case LEGS: item = getLegs(rand, quality); break; - case FEET: item = getBoots(rand, quality); break; - case PICK: item = getPick(rand, quality); break; - case AXE: item = getAxe(rand, quality); break; - case SHOVEL: item = getShovel(rand, quality); break; - default: item = getSword(rand, quality); + case SWORD: item = getSword(reg, rand, quality); break; + case BOW: item = getBow(reg, rand, quality); break; + case HELMET: item = getHelmet(reg, rand, quality); break; + case CHEST: item = getChest(reg, rand, quality); break; + case LEGS: item = getLegs(reg, rand, quality); break; + case FEET: item = getBoots(reg, rand, quality); break; + case PICK: item = getPick(reg, rand, quality); break; + case AXE: item = getAxe(reg, rand, quality); break; + case SHOVEL: item = getShovel(reg, rand, quality); break; + default: item = getSword(reg, rand, quality); } Loot.setRarity(item, Rarity.RARE); return item; } - public static ItemStack getRandomArmour(Random rand, Quality quality){ + public static ItemStack getRandomArmour(DynamicRegistryManager reg, Random rand, Quality quality){ switch(rand.nextInt(4)){ - case 0: return getRandomItem(Equipment.HELMET, rand, quality); - case 1: return getRandomItem(Equipment.CHEST, rand, quality); - case 2: return getRandomItem(Equipment.LEGS, rand, quality); - case 3: return getRandomItem(Equipment.FEET, rand, quality); - default: return getRandomItem(Equipment.HELMET, rand, quality); + case 0: return getRandomItem(reg, Equipment.HELMET, rand, quality); + case 1: return getRandomItem(reg, Equipment.CHEST, rand, quality); + case 2: return getRandomItem(reg, Equipment.LEGS, rand, quality); + case 3: return getRandomItem(reg, Equipment.FEET, rand, quality); + default: return getRandomItem(reg, Equipment.HELMET, rand, quality); } } - public static ItemStack getRandomTool(Random rand, Quality quality){ + public static ItemStack getRandomTool(DynamicRegistryManager reg, Random rand, Quality quality){ switch(rand.nextInt(3)){ - case 0: return getRandomItem(Equipment.PICK, rand, quality); - case 1: return getRandomItem(Equipment.AXE, rand, quality); - case 2: return getRandomItem(Equipment.SHOVEL, rand, quality); - default: return getRandomItem(Equipment.PICK, rand, quality); + case 0: return getRandomItem(reg, Equipment.PICK, rand, quality); + case 1: return getRandomItem(reg, Equipment.AXE, rand, quality); + case 2: return getRandomItem(reg, Equipment.SHOVEL, rand, quality); + default: return getRandomItem(reg, Equipment.PICK, rand, quality); } } - private static ItemStack getShovel(Random rand, Quality quality){ + private static ItemStack getShovel(DynamicRegistryManager reg, Random rand, Quality quality){ ItemStack item; if(quality == Quality.DIAMOND){ item = new ItemStack(Items.DIAMOND_SHOVEL); - item.addEnchantment(Enchant.getEnchant(Enchant.EFFICIENCY), 3 + rand.nextInt(3)); - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.EFFICIENCY), 3 + rand.nextInt(3)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); Loot.setItemName(item, "Soul Spade"); return item; } else { item = new ItemStack(Items.IRON_SHOVEL); - item.addEnchantment(Enchant.getEnchant(Enchant.EFFICIENCY), 1 + rand.nextInt(2)); - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.EFFICIENCY), 1 + rand.nextInt(2)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); Loot.setItemName(item, "Grave Spade"); return item; } } - private static ItemStack getAxe(Random rand, Quality quality){ + private static ItemStack getAxe(DynamicRegistryManager reg, Random rand, Quality quality){ ItemStack item; if(quality == Quality.DIAMOND){ item = new ItemStack(Items.DIAMOND_AXE); - item.addEnchantment(Enchant.getEnchant(Enchant.EFFICIENCY), 3 + rand.nextInt(3)); - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.EFFICIENCY), 3 + rand.nextInt(3)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); Loot.setItemName(item, "Crystal Head Axe"); return item; } else { item = new ItemStack(Items.IRON_AXE); - item.addEnchantment(Enchant.getEnchant(Enchant.EFFICIENCY), 1 + rand.nextInt(2)); - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.EFFICIENCY), 1 + rand.nextInt(2)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); Loot.setItemName(item, "Woodland Hatchet"); return item; } } - private static ItemStack getPick(Random rand, Quality quality){ + private static ItemStack getPick(DynamicRegistryManager reg, Random rand, Quality quality){ ItemStack item; if(quality == Quality.DIAMOND){ item = new ItemStack(Items.DIAMOND_PICKAXE); - item.addEnchantment(Enchant.getEnchant(Enchant.EFFICIENCY), 3 + rand.nextInt(3)); - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.EFFICIENCY), 3 + rand.nextInt(3)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); if(rand.nextInt(10) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.SILKTOUCH), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.SILKTOUCH), 1); Loot.setItemName(item, "Crystal Pick of Precision"); return item; } if(rand.nextInt(10) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.FORTUNE), 2 + rand.nextInt(2)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.FORTUNE), 2 + rand.nextInt(2)); Loot.setItemName(item, "Crystal Pick of Prospecting"); return item; } if(rand.nextInt(5) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.MENDING), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.MENDING), 1); } Loot.setItemName(item, "Crystal Pick"); return item; } else { item = new ItemStack(Items.IRON_PICKAXE); - item.addEnchantment(Enchant.getEnchant(Enchant.EFFICIENCY), 1 + rand.nextInt(2)); - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.EFFICIENCY), 1 + rand.nextInt(2)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); if(rand.nextInt(10) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.SILKTOUCH), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.SILKTOUCH), 1); Loot.setItemName(item, "Case Hardened Pick of Precision"); return item; } if(rand.nextInt(10) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.FORTUNE), 1 + rand.nextInt(3)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.FORTUNE), 1 + rand.nextInt(3)); Loot.setItemName(item, "Case Hardened Pick of Prospecting"); return item; } if(rand.nextInt(5) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.MENDING), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.MENDING), 1); } Loot.setItemName(item, "Case Hardened Pick"); @@ -174,38 +180,38 @@ private static ItemStack getPick(Random rand, Quality quality){ } - private static ItemStack getSword(Random rand, Quality quality){ + private static ItemStack getSword(DynamicRegistryManager reg, Random rand, Quality quality){ ItemStack item; if (quality == Quality.DIAMOND){ item = new ItemStack(Items.DIAMOND_SWORD); - item.addEnchantment(Enchant.getEnchant(Enchant.SHARPNESS), 3 + rand.nextInt(3)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.SHARPNESS), 3 + rand.nextInt(3)); if(rand.nextInt(10) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.LOOTING), 2 + rand.nextInt(2)); - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.LOOTING), 2 + rand.nextInt(2)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); Loot.setItemName(item, "Eldritch Blade of Plundering"); Loot.setItemLore(item, "The loot taker", TextFormat.DARKGREEN); return item; } if(rand.nextInt(10) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.FIREASPECT), 2 + rand.nextInt(2)); - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.FIREASPECT), 2 + rand.nextInt(2)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); Loot.setItemName(item, "Eldritch Blade of the Inferno"); Loot.setItemLore(item, "From the fiery depths", TextFormat.DARKGREEN); return item; } - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), quality == Quality.DIAMOND ? 3 : 1 + rand.nextInt(2)); - item.addEnchantment(Enchant.getEnchant(Enchant.MENDING), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), quality == Quality.DIAMOND ? 3 : 1 + rand.nextInt(2)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.MENDING), 1); Loot.setItemName(item, "Eldritch Blade"); Loot.setItemLore(item, "Rune Etched", TextFormat.DARKGREEN); return item; } else { item = new ItemStack(Items.IRON_SWORD); if(rand.nextBoolean()){ - item.addEnchantment(Enchant.getEnchant(Enchant.SHARPNESS), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.SHARPNESS), 1); } - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), 3); - item.addEnchantment(Enchant.getEnchant(Enchant.MENDING), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), 3); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.MENDING), 1); Loot.setItemName(item, "Tempered Blade"); Loot.setItemLore(item, "Highly Durable", TextFormat.DARKGREEN); return item; @@ -213,48 +219,48 @@ private static ItemStack getSword(Random rand, Quality quality){ } - private static ItemStack getBow(Random rand, Quality quality){ + private static ItemStack getBow(DynamicRegistryManager reg, Random rand, Quality quality){ ItemStack item = new ItemStack(Items.BOW); switch(quality){ case WOOD: case STONE: - item.addEnchantment(Enchant.getEnchant(Enchant.POWER), 1 + rand.nextInt(3)); - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.POWER), 1 + rand.nextInt(3)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), 1); Loot.setItemName(item, "Yew Longbow"); Loot.setItemLore(item, "Superior craftsmanship", TextFormat.DARKGREEN); return item; case IRON: - item.addEnchantment(Enchant.getEnchant(Enchant.POWER), 1 + rand.nextInt(3)); - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), 1 + rand.nextInt(3)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.POWER), 1 + rand.nextInt(3)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), 1 + rand.nextInt(3)); Loot.setItemName(item, "Laminated Bow"); Loot.setItemLore(item, "Highly polished", TextFormat.DARKGREEN); return item; case GOLD: - item.addEnchantment(Enchant.getEnchant(Enchant.POWER), 3 + rand.nextInt(3)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.POWER), 3 + rand.nextInt(3)); if(rand.nextBoolean()){ - item.addEnchantment(Enchant.getEnchant(Enchant.INFINITY), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.INFINITY), 1); } - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), 1 + rand.nextInt(3)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), 1 + rand.nextInt(3)); Loot.setItemName(item, "Recurve Bow"); Loot.setItemLore(item, "Beautifully crafted", TextFormat.DARKGREEN); return item; case DIAMOND: - item.addEnchantment(Enchant.getEnchant(Enchant.POWER), 3 + rand.nextInt(3)); - item.addEnchantment(Enchant.getEnchant(Enchant.FLAME), 1); - item.addEnchantment(Enchant.getEnchant(Enchant.INFINITY), 1); - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); - item.addEnchantment(Enchant.getEnchant(Enchant.MENDING), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.POWER), 3 + rand.nextInt(3)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.FLAME), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.INFINITY), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.MENDING), 1); Loot.setItemName(item, "Eldritch Bow"); Loot.setItemLore(item, "Warm to the touch", TextFormat.DARKGREEN); return item; case NETHERITE: - item.addEnchantment(Enchant.getEnchant(Enchant.POWER), 3 + rand.nextInt(3)); - item.addEnchantment(Enchant.getEnchant(Enchant.FLAME), 1); - item.addEnchantment(Enchant.getEnchant(Enchant.INFINITY), 1); - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); - item.addEnchantment(Enchant.getEnchant(Enchant.MENDING), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.POWER), 3 + rand.nextInt(3)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.FLAME), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.INFINITY), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.MENDING), 1); Loot.setItemName(item, "Eldritch Bow"); Loot.setItemLore(item, "Warm to the touch", TextFormat.DARKGREEN); return item; @@ -263,7 +269,7 @@ private static ItemStack getBow(Random rand, Quality quality){ } } - private static ItemStack getHelmet(Random rand, Quality quality){ + private static ItemStack getHelmet(DynamicRegistryManager reg, Random rand, Quality quality){ ItemStack item; String canonical = ""; @@ -299,22 +305,22 @@ private static ItemStack getHelmet(Random rand, Quality quality){ String suffix = ""; if(rand.nextInt(20) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.PROTECTION), getProtectionLevel(quality, rand)); - item.addEnchantment(Enchant.getEnchant(Enchant.RESPIRATION), 3); - item.addEnchantment(Enchant.getEnchant(Enchant.AQUAAFFINITY), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.PROTECTION), getProtectionLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.RESPIRATION), 3); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.AQUAAFFINITY), 1); suffix = "of Diving"; } else if(rand.nextInt(3) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.PROJECTILEPROTECTION), getProtectionLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.PROJECTILEPROTECTION), getProtectionLevel(quality, rand)); suffix = "of Deflection"; } else { - item.addEnchantment(Enchant.getEnchant(Enchant.PROTECTION), getProtectionLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.PROTECTION), getProtectionLevel(quality, rand)); suffix = "of Defense"; } - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); if(rand.nextInt(10) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.MENDING), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.MENDING), 1); } String name = getArmourPrefix(quality) + " " + canonical + " " + suffix; @@ -323,7 +329,7 @@ private static ItemStack getHelmet(Random rand, Quality quality){ } - private static ItemStack getBoots(Random rand, Quality quality){ + private static ItemStack getBoots(DynamicRegistryManager reg, Random rand, Quality quality){ ItemStack item; String canonical = ""; @@ -359,24 +365,24 @@ private static ItemStack getBoots(Random rand, Quality quality){ String suffix = ""; if(rand.nextInt(10) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.BLASTPROTECTION), getProtectionLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.BLASTPROTECTION), getProtectionLevel(quality, rand)); suffix = "of Warding"; } else if(rand.nextInt(5) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.PROTECTION), getProtectionLevel(quality, rand)); - item.addEnchantment(Enchant.getEnchant(Enchant.FEATHERFALLING), quality == Quality.DIAMOND ? 4 : 1 + rand.nextInt(3)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.PROTECTION), getProtectionLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.FEATHERFALLING), quality == Quality.DIAMOND ? 4 : 1 + rand.nextInt(3)); suffix = "of Lightness"; } else if(rand.nextInt(3) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.PROJECTILEPROTECTION), getProtectionLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.PROJECTILEPROTECTION), getProtectionLevel(quality, rand)); suffix = "of Deflection"; } else { - item.addEnchantment(Enchant.getEnchant(Enchant.PROTECTION), getProtectionLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.PROTECTION), getProtectionLevel(quality, rand)); suffix = "of Defense"; } - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); if(rand.nextInt(10) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.MENDING), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.MENDING), 1); } String name = getArmourPrefix(quality) + " " + canonical + " " + suffix; @@ -385,7 +391,7 @@ private static ItemStack getBoots(Random rand, Quality quality){ } - private static ItemStack getLegs(Random rand, Quality quality){ + private static ItemStack getLegs(DynamicRegistryManager reg, Random rand, Quality quality){ ItemStack item; String canonical = ""; @@ -420,23 +426,23 @@ private static ItemStack getLegs(Random rand, Quality quality){ String suffix = ""; if(rand.nextInt(10) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.FIREPROTECTION), getProtectionLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.FIREPROTECTION), getProtectionLevel(quality, rand)); suffix = "of Warding"; } else if(rand.nextInt(10) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.BLASTPROTECTION), getProtectionLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.BLASTPROTECTION), getProtectionLevel(quality, rand)); suffix = "of Integrity"; } else if(rand.nextInt(3) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.PROJECTILEPROTECTION), getProtectionLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.PROJECTILEPROTECTION), getProtectionLevel(quality, rand)); suffix = "of Deflection"; } else { - item.addEnchantment(Enchant.getEnchant(Enchant.PROTECTION), getProtectionLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.PROTECTION), getProtectionLevel(quality, rand)); suffix = "of Defense"; } - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); if(rand.nextInt(10) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.MENDING), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.MENDING), 1); } String name = getArmourPrefix(quality) + " " + canonical + " " + suffix; @@ -444,7 +450,7 @@ private static ItemStack getLegs(Random rand, Quality quality){ return item; } - private static ItemStack getChest(Random rand, Quality quality){ + private static ItemStack getChest(DynamicRegistryManager reg, Random rand, Quality quality){ ItemStack item; String canonical = ""; @@ -480,23 +486,23 @@ private static ItemStack getChest(Random rand, Quality quality){ String suffix = ""; if(rand.nextInt(10) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.FIREPROTECTION), getProtectionLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.FIREPROTECTION), getProtectionLevel(quality, rand)); suffix = "of Flamewarding"; } else if(rand.nextInt(10) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.BLASTPROTECTION), getProtectionLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.BLASTPROTECTION), getProtectionLevel(quality, rand)); suffix = "of Integrity"; } else if(rand.nextInt(3) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.PROJECTILEPROTECTION), getProtectionLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.PROJECTILEPROTECTION), getProtectionLevel(quality, rand)); suffix = "of Deflection"; } else { - item.addEnchantment(Enchant.getEnchant(Enchant.PROTECTION), getProtectionLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.PROTECTION), getProtectionLevel(quality, rand)); suffix = "of Defense"; } - item.addEnchantment(Enchant.getEnchant(Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.UNBREAKING), getUnbreakingLevel(quality, rand)); if(rand.nextInt(10) == 0){ - item.addEnchantment(Enchant.getEnchant(Enchant.MENDING), 1); + item.addEnchantment(Enchant.getEnchant(reg, Enchant.MENDING), 1); } String name = getArmourPrefix(quality) + " " + canonical + " " + suffix; @@ -551,6 +557,6 @@ private static String getArmourPrefix(Quality quality){ @Override public ItemStack getLootItem(Random rand, Difficulty diff) { - return getRandomItem(Equipment.values()[rand.nextInt(Equipment.values().length)], rand, Quality.get(diff)); + return getRandomItem(reg, Equipment.values()[rand.nextInt(Equipment.values().length)], rand, Quality.get(diff)); } } diff --git a/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemTool.java b/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemTool.java index ab4066fd7..f215877f5 100644 --- a/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemTool.java +++ b/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemTool.java @@ -7,37 +7,40 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.resource.featuretoggle.FeatureSet; import net.minecraft.util.math.random.Random; public class ItemTool extends ItemBase { + DynamicRegistryManager reg; FeatureSet features; - public ItemTool(FeatureSet features, int weight, Difficulty diff) { + public ItemTool(DynamicRegistryManager reg, FeatureSet features, int weight, Difficulty diff) { super(weight, diff); this.features = features; + this.reg = reg; } @Override public ItemStack getLootItem(Random rand, Difficulty diff) { - if(rand.nextInt(2000) == 0) return ItemNovelty.getItem(ItemNovelty.CLEO); - return getRandom(features, rand, diff, true); + if(rand.nextInt(2000) == 0) return ItemNovelty.getItem(reg, ItemNovelty.CLEO); + return getRandom(reg, features, rand, diff, true); } - public static ItemStack getTool(FeatureSet features, Random rand, Difficulty diff, Quality quality, Equipment type, boolean enchant){ + public static ItemStack getTool(DynamicRegistryManager reg, FeatureSet features, Random rand, Difficulty diff, Quality quality, Equipment type, boolean enchant){ ItemStack tool = Equipment.get(type, quality == null ? Quality.get(diff) : quality); - return enchant ? Enchant.enchantItem(features, rand, tool, Enchant.getLevel(rand, diff)) : tool; + return enchant ? Enchant.enchantItem(reg, features, rand, tool, Enchant.getLevel(rand, diff)) : tool; } - public static ItemStack getRandom(FeatureSet features, Random rand, Difficulty diff, boolean enchant){ + public static ItemStack getRandom(DynamicRegistryManager reg, FeatureSet features, Random rand, Difficulty diff, boolean enchant){ if(enchant && rand.nextInt(30) == 0){ - return ItemSpecialty.getRandomTool(rand, Quality.get(diff)); + return ItemSpecialty.getRandomTool(reg, rand, Quality.get(diff)); } ItemStack tool = pickTool(rand, diff); - if(enchant) Enchant.enchantItem(features, rand, tool, Enchant.getLevel(rand, diff)); + if(enchant) Enchant.enchantItem(reg, features, rand, tool, Enchant.getLevel(rand, diff)); return tool; } diff --git a/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemWeapon.java b/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemWeapon.java index 426776ef2..8d8dba5c2 100644 --- a/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemWeapon.java +++ b/src/main/java/com/greymerk/roguelike/treasure/loot/provider/ItemWeapon.java @@ -7,63 +7,66 @@ import net.minecraft.item.ItemStack; import net.minecraft.item.Items; +import net.minecraft.registry.DynamicRegistryManager; import net.minecraft.resource.featuretoggle.FeatureSet; import net.minecraft.util.math.random.Random; public class ItemWeapon extends ItemBase{ + DynamicRegistryManager reg; FeatureSet features; - public ItemWeapon(FeatureSet features, int weight, Difficulty diff) { + public ItemWeapon(DynamicRegistryManager reg, FeatureSet features, int weight, Difficulty diff) { super(weight, diff); this.features = features; + this.reg = reg; } @Override public ItemStack getLootItem(Random rand, Difficulty diff) { - if(rand.nextInt(1000) == 0) return ItemNovelty.getItem(ItemNovelty.GREYMERK); - return getRandom(this.features, rand, diff, true); + if(rand.nextInt(1000) == 0) return ItemNovelty.getItem(reg, ItemNovelty.GREYMERK); + return getRandom(this.reg, this.features, rand, diff, true); } - public static ItemStack getRandom(FeatureSet features, Random rand, Difficulty diff, boolean enchant){ + public static ItemStack getRandom(DynamicRegistryManager reg, FeatureSet features, Random rand, Difficulty diff, boolean enchant){ if(rand.nextInt(10) == 0){ - return ItemWeapon.getBow(features, rand, diff, enchant); + return ItemWeapon.getBow(reg, features, rand, diff, enchant); } else { - return ItemWeapon.getSword(features, rand, diff, enchant); + return ItemWeapon.getSword(reg, features, rand, diff, enchant); } } - public static ItemStack getBow(FeatureSet features, Random rand, Difficulty diff, boolean enchant){ + public static ItemStack getBow(DynamicRegistryManager reg, FeatureSet features, Random rand, Difficulty diff, boolean enchant){ - if(enchant && rand.nextInt(1000) == 0) return ItemNovelty.getItem(ItemNovelty.WINDFORCE); + if(enchant && rand.nextInt(1000) == 0) return ItemNovelty.getItem(reg, ItemNovelty.WINDFORCE); if(enchant && rand.nextInt(30) == 0){ - return ItemSpecialty.getRandomItem(Equipment.BOW, rand, diff); + return ItemSpecialty.getRandomItem(reg, Equipment.BOW, rand, diff); } ItemStack bow = new ItemStack(Items.BOW); - if(enchant)Enchant.enchantItem(features, rand, bow, Enchant.getLevel(rand, diff)); + if(enchant)Enchant.enchantItem(reg, features, rand, bow, Enchant.getLevel(rand, diff)); return bow; } - public static ItemStack getSword(FeatureSet features, Random rand, Difficulty diff, boolean enchant){ + public static ItemStack getSword(DynamicRegistryManager reg, FeatureSet features, Random rand, Difficulty diff, boolean enchant){ - if(enchant && rand.nextInt(1000) == 0) return ItemNovelty.getItem(ItemNovelty.NULL); + if(enchant && rand.nextInt(1000) == 0) return ItemNovelty.getItem(reg, ItemNovelty.NULL); if(enchant && rand.nextInt(30) == 0){ - return ItemSpecialty.getRandomItem(Equipment.SWORD, rand, diff); + return ItemSpecialty.getRandomItem(reg, Equipment.SWORD, rand, diff); } ItemStack sword = pickSword(rand, diff); - if(enchant) Enchant.enchantItem(features, rand, sword, Enchant.getLevel(rand, diff)); + if(enchant) Enchant.enchantItem(reg, features, rand, sword, Enchant.getLevel(rand, diff)); return sword; } - public static ItemStack getSword(FeatureSet features, Random rand, Difficulty diff, boolean enchant, Quality quality){ + public static ItemStack getSword(DynamicRegistryManager reg, FeatureSet features, Random rand, Difficulty diff, boolean enchant, Quality quality){ ItemStack sword = quality != null ? getSwordByQuality(quality) : pickSword(rand, diff); - return enchant ? Enchant.enchantItem(features, rand, sword, Enchant.getLevel(rand, diff)) : sword; + return enchant ? Enchant.enchantItem(reg, features, rand, sword, Enchant.getLevel(rand, diff)) : sword; } private static ItemStack pickSword(Random rand, Difficulty diff){ diff --git a/src/main/java/com/greymerk/roguelike/treasure/loot/rules/RoguelikeLootRules.java b/src/main/java/com/greymerk/roguelike/treasure/loot/rules/RoguelikeLootRules.java index f85181b24..ce19384a9 100644 --- a/src/main/java/com/greymerk/roguelike/treasure/loot/rules/RoguelikeLootRules.java +++ b/src/main/java/com/greymerk/roguelike/treasure/loot/rules/RoguelikeLootRules.java @@ -21,7 +21,7 @@ public static LootRuleManager getLoot(IWorldEditor editor) { lootRules.add(Treasure.STARTER, loot.get(Loot.FOOD, Difficulty.EASIEST), Difficulty.EASIEST, 2); lootRules.add(Treasure.STARTER, loot.get(Loot.TOOL, Difficulty.EASIEST), Difficulty.EASIEST, 2); lootRules.add(Treasure.STARTER, loot.get(Loot.SUPPLY, Difficulty.EASIEST), Difficulty.EASIEST, 2); - lootRules.add(Treasure.STARTER, new ItemSpecialty(0, Difficulty.EASIEST, Equipment.LEGS, Quality.WOOD), Difficulty.EASIEST, 2); + lootRules.add(Treasure.STARTER, new ItemSpecialty(editor.getRegistryManager(), 0, Difficulty.EASIEST, Equipment.LEGS, Quality.WOOD), Difficulty.EASIEST, 2); List.of(Difficulty.values()).forEach(difficulty -> { lootRules.add(Treasure.ARMOUR, loot.get(Loot.POTION, difficulty), difficulty, 1); lootRules.add(Treasure.ARMOUR, loot.get(Loot.ARMOUR, difficulty), difficulty, 1); diff --git a/src/main/java/com/greymerk/roguelike/treasure/loot/trim/TrimMaterial.java b/src/main/java/com/greymerk/roguelike/treasure/loot/trim/TrimMaterial.java index 8d6700d33..f197158ae 100644 --- a/src/main/java/com/greymerk/roguelike/treasure/loot/trim/TrimMaterial.java +++ b/src/main/java/com/greymerk/roguelike/treasure/loot/trim/TrimMaterial.java @@ -24,7 +24,7 @@ public enum TrimMaterial { public static NbtString getNbt(TrimMaterial material) { String path = getId(material); - Identifier id = new Identifier("minecraft", path); + Identifier id = Identifier.of("minecraft", path); return NbtString.of(id.toString()); } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index f241e3110..0ef3c2e0c 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -27,8 +27,8 @@ ], "depends": { "fabricloader": ">=0.14.22", - "minecraft": "~1.20.2", - "java": ">=17", + "minecraft": "~1.21", + "java": ">=21", "fabric-api": "*" }, "suggests": {