forked from iguanaman/HungerOverhaul
/
ItemTweaks.java
113 lines (101 loc) · 4.6 KB
/
ItemTweaks.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package iguanaman.hungeroverhaul.util;
import com.pam.harvestcraft.BlockPamSapling;
import com.pam.harvestcraft.ItemPamSeedFood;
import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.registry.VillagerRegistry;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemFood;
import net.minecraft.item.ItemStack;
import net.minecraft.util.WeightedRandomChestContent;
import net.minecraftforge.common.ChestGenHooks;
import iguanaman.hungeroverhaul.config.IguanaConfig;
import squeek.applecore.api.food.FoodValues;
public class ItemTweaks
{
public static enum VillagerType
{
FARMER,
LIBRARIAN,
PRIEST,
SMITH,
BUTCHER
}
public static void init()
{
boolean worthLooping = IguanaConfig.modifyFoodStackSize
|| IguanaConfig.addTradesButcher
|| IguanaConfig.addHarvestCraftChestLoot
|| IguanaConfig.addTradesFarmer
|| IguanaConfig.addSaplingTradesFarmer;
if (worthLooping)
{
for (Object obj : Item.itemRegistry)
{
Item item = (Item) obj;
if (item instanceof ItemFood)
{
ItemStack stack = new ItemStack(item);
FoodValues values = FoodValues.get(stack);
if (IguanaConfig.modifyFoodStackSize)
modifyStackSize(item, stack, values);
if (values.hunger > 9)
{
if (IguanaConfig.addTradesButcher)
addButcherTrade(item, stack, values);
if (IguanaConfig.addHarvestCraftChestLoot)
addChestLoot(item, stack, values);
}
if (Loader.isModLoaded("harvestcraft") && IguanaConfig.addTradesFarmer && item instanceof ItemPamSeedFood)
{
addCropTrade(item);
}
}
else if (Loader.isModLoaded("harvestcraft") && IguanaConfig.addSaplingTradesFarmer && item instanceof ItemBlock)
{
Block block = Block.getBlockFromItem(item);
if (block instanceof BlockPamSapling)
addSaplingTrade(block);
}
}
}
}
public static void modifyStackSize(Item item, ItemStack stack, FoodValues values)
{
int curStackSize = item.getItemStackLimit(stack);
int newStackSize = curStackSize;
if (values.hunger <= 2)
newStackSize = 16 * IguanaConfig.foodStackSizeMultiplier;
else if (values.hunger <= 5)
newStackSize = 8 * IguanaConfig.foodStackSizeMultiplier;
else if (values.hunger <= 8)
newStackSize = 4 * IguanaConfig.foodStackSizeMultiplier;
else if (values.hunger <= 11)
newStackSize = 2 * IguanaConfig.foodStackSizeMultiplier;
else
newStackSize = IguanaConfig.foodStackSizeMultiplier;
if (curStackSize > newStackSize)
item.setMaxStackSize(newStackSize);
}
public static void addButcherTrade(Item item, ItemStack stack, FoodValues values)
{
VillagerRegistry.instance().registerVillageTradeHandler(VillagerType.BUTCHER.ordinal(), new TradeHandlerFood(item, item.getItemStackLimit(stack)));
}
public static void addSaplingTrade(Block block)
{
VillagerRegistry.instance().registerVillageTradeHandler(VillagerType.FARMER.ordinal(), new TradeHandlerSapling(block));
}
public static void addCropTrade(Item item)
{
VillagerRegistry.instance().registerVillageTradeHandler(VillagerType.FARMER.ordinal(), new TradeHandlerCrop(item));
}
public static void addChestLoot(Item item, ItemStack stack, FoodValues values)
{
int maxStackSize = Math.min(IguanaConfig.chestLootMaxStackSize, item.getItemStackLimit(stack));
ChestGenHooks.getInfo(ChestGenHooks.DUNGEON_CHEST).addItem(new WeightedRandomChestContent(stack, 0, maxStackSize, IguanaConfig.chestLootChance));
ChestGenHooks.getInfo(ChestGenHooks.MINESHAFT_CORRIDOR).addItem(new WeightedRandomChestContent(stack, 0, maxStackSize, IguanaConfig.chestLootChance));
ChestGenHooks.getInfo(ChestGenHooks.PYRAMID_DESERT_CHEST).addItem(new WeightedRandomChestContent(stack, 0, maxStackSize, IguanaConfig.chestLootChance));
ChestGenHooks.getInfo(ChestGenHooks.PYRAMID_JUNGLE_CHEST).addItem(new WeightedRandomChestContent(stack, 0, maxStackSize, IguanaConfig.chestLootChance));
}
}