From 72eab097c81b17d532743f25487fe8570729eea6 Mon Sep 17 00:00:00 2001 From: jaredlll08 Date: Fri, 24 Apr 2015 23:36:03 +0200 Subject: [PATCH] Thaumcraft loot Bags! --- .../mods/thaumcraft/Thaumcraft.java | 18 +++-- .../mods/thaumcraft/handlers/Loot.java | 75 +++++++++++++++++++ 2 files changed, 85 insertions(+), 8 deletions(-) create mode 100644 src/main/java/modtweaker2/mods/thaumcraft/handlers/Loot.java diff --git a/src/main/java/modtweaker2/mods/thaumcraft/Thaumcraft.java b/src/main/java/modtweaker2/mods/thaumcraft/Thaumcraft.java index b5d014d..4d9954f 100644 --- a/src/main/java/modtweaker2/mods/thaumcraft/Thaumcraft.java +++ b/src/main/java/modtweaker2/mods/thaumcraft/Thaumcraft.java @@ -7,15 +7,17 @@ import modtweaker2.mods.thaumcraft.handlers.Crucible; import modtweaker2.mods.thaumcraft.handlers.Infusion; import modtweaker2.mods.thaumcraft.handlers.Research; import modtweaker2.mods.thaumcraft.handlers.Warp; +import modtweaker2.mods.thaumcraft.handlers.Loot; public class Thaumcraft { - public Thaumcraft() { - MineTweakerAPI.registerClass(Arcane.class); - MineTweakerAPI.registerClass(Aspects.class); - MineTweakerAPI.registerClass(Crucible.class); - MineTweakerAPI.registerClass(Infusion.class); - MineTweakerAPI.registerClass(Research.class); - MineTweakerAPI.registerClass(Warp.class); + public Thaumcraft() { + MineTweakerAPI.registerClass(Arcane.class); + MineTweakerAPI.registerClass(Aspects.class); + MineTweakerAPI.registerClass(Crucible.class); + MineTweakerAPI.registerClass(Infusion.class); + MineTweakerAPI.registerClass(Research.class); + MineTweakerAPI.registerClass(Warp.class); + MineTweakerAPI.registerClass(Loot.class); - } + } } diff --git a/src/main/java/modtweaker2/mods/thaumcraft/handlers/Loot.java b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Loot.java new file mode 100644 index 0000000..b0b8edb --- /dev/null +++ b/src/main/java/modtweaker2/mods/thaumcraft/handlers/Loot.java @@ -0,0 +1,75 @@ +package modtweaker2.mods.thaumcraft.handlers; + +import java.util.List; + +import net.minecraft.item.ItemStack; +import minetweaker.MineTweakerAPI; +import minetweaker.api.item.IItemStack; +import modtweaker2.helpers.InputHelper; +import modtweaker2.utils.BaseListAddition; +import modtweaker2.utils.BaseListRemoval; +import stanhebben.zenscript.annotations.ZenClass; +import stanhebben.zenscript.annotations.ZenMethod; +import thaumcraft.api.ThaumcraftApi; +import thaumcraft.api.internal.WeightedRandomLoot; + +@ZenClass("mods.thaumcraft.Loot") +public class Loot { + + @ZenMethod + public static void addCommonLoot(IItemStack stack, int weight) { + MineTweakerAPI.apply(new Add(WeightedRandomLoot.lootBagCommon, new WeightedRandomLoot(InputHelper.toStack(stack), weight))); + } + + @ZenMethod + public static void addUncommonLoot(IItemStack stack, int weight) { + MineTweakerAPI.apply(new Add(WeightedRandomLoot.lootBagUncommon, new WeightedRandomLoot(InputHelper.toStack(stack), weight))); + } + + @ZenMethod + public static void addRareLoot(IItemStack stack, int weight) { + MineTweakerAPI.apply(new Add(WeightedRandomLoot.lootBagRare, new WeightedRandomLoot(InputHelper.toStack(stack), weight))); + } + + public static class Add extends BaseListAddition { + public Add(List list, WeightedRandomLoot recipe) { + super(list, recipe); + } + } + + @ZenMethod + public static void removeCommonLoot(IItemStack stack) { + MineTweakerAPI.apply(new Remove(WeightedRandomLoot.lootBagCommon, InputHelper.toStack(stack))); + } + + @ZenMethod + public static void removeUncommonLoot(IItemStack stack) { + MineTweakerAPI.apply(new Remove(WeightedRandomLoot.lootBagUncommon, InputHelper.toStack(stack))); + } + + @ZenMethod + public static void removeRareLoot(IItemStack stack) { + MineTweakerAPI.apply(new Remove(WeightedRandomLoot.lootBagRare, InputHelper.toStack(stack))); + } + + public static class Remove extends BaseListRemoval { + + public Remove(List list, ItemStack stack) { + super(list, stack); + } + + @Override + public void apply() { + List loot = (List) list; + WeightedRandomLoot remove = null; + for (WeightedRandomLoot stack : loot) { + if (stack.item.isItemEqual(this.stack)) { + remove = stack; + break; + } + } + loot.remove(remove); + } + + } +}