Skip to content

Commit adcaf5a

Browse files
authored
Added IC2 and TE addons (#1)
1 parent 41ddc48 commit adcaf5a

File tree

6 files changed

+274
-1
lines changed

6 files changed

+274
-1
lines changed
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package mcp.mobius.waila.addons.ic2;
2+
3+
import mcp.mobius.waila.api.ITaggedList;
4+
import mcp.mobius.waila.api.IWailaConfigHandler;
5+
import mcp.mobius.waila.api.IWailaDataAccessor;
6+
import mcp.mobius.waila.api.IWailaDataProvider;
7+
import mcp.mobius.waila.cbcore.LangUtil;
8+
import net.minecraft.entity.player.EntityPlayerMP;
9+
import net.minecraft.item.ItemStack;
10+
import net.minecraft.nbt.NBTTagCompound;
11+
import net.minecraft.tileentity.TileEntity;
12+
import net.minecraft.util.math.BlockPos;
13+
import net.minecraft.world.World;
14+
15+
import javax.annotation.Nonnull;
16+
import java.util.List;
17+
18+
public class HUDHandlerTEGenerator implements IWailaDataProvider {
19+
20+
static final IWailaDataProvider INSTANCE = new HUDHandlerTEGenerator();
21+
22+
@Nonnull
23+
@Override
24+
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
25+
double storage = accessor.getNBTData().getDouble("storage");
26+
int production = accessor.getNBTData().getInteger("production");
27+
long maxStorage = accessor.getNBTData().getLong("maxStorage");
28+
29+
String storedStr = LangUtil.translateG("hud.ic2.msg.stored");
30+
String outputStr = LangUtil.translateG("hud.ic2.msg.output");
31+
32+
if (accessor.getTileEntity() == null) {
33+
return currenttip;
34+
}
35+
36+
/* EU Storage */
37+
if (config.getConfig("ic2.storage"))
38+
if (maxStorage > 0) {
39+
((ITaggedList<String, String>) currenttip)
40+
.add(String.format(
41+
"%s §f%d§r / §f%d§r EU",
42+
storedStr,
43+
Math.round(Math.min(storage, maxStorage)),
44+
maxStorage
45+
), "IEnergyStorage");
46+
}
47+
48+
if (config.getConfig("ic2.outputeu")) {
49+
currenttip.add(String.format("%s §f%d §r EU/t", outputStr, production));
50+
}
51+
52+
return currenttip;
53+
}
54+
55+
56+
@Nonnull
57+
@Override
58+
public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) {
59+
double storage = -1;
60+
int production = -1;
61+
long maxStorage = -1;
62+
63+
try {
64+
if (IC2Module.generator.isInstance(te)) {
65+
storage = IC2Module.generatorStorage.getDouble(te);
66+
production = IC2Module.generatorProduction.getInt(te);
67+
maxStorage = IC2Module.generatorMaxStorage.getLong(te);
68+
}
69+
} catch (java.lang.Exception e) {
70+
throw new RuntimeException(e);
71+
}
72+
tag.setDouble("storage", storage);
73+
tag.setInteger("production", production);
74+
tag.setLong("maxStorage", maxStorage);
75+
76+
return tag;
77+
}
78+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package mcp.mobius.waila.addons.ic2;
2+
3+
import mcp.mobius.waila.Waila;
4+
import mcp.mobius.waila.api.IWailaPlugin;
5+
import mcp.mobius.waila.api.IWailaRegistrar;
6+
import mcp.mobius.waila.api.WailaPlugin;
7+
import net.minecraftforge.fml.common.Loader;
8+
9+
import java.lang.reflect.Field;
10+
11+
@WailaPlugin
12+
public class IC2Module implements IWailaPlugin {
13+
14+
public static Class generator = null;
15+
public static Field generatorStorage = null;
16+
public static Field generatorMaxStorage = null;
17+
public static Field generatorProduction = null;
18+
19+
20+
@Override
21+
public void register(IWailaRegistrar registrar) {
22+
if (!Loader.isModLoaded("ic2")) return;
23+
try {
24+
generator = Class.forName("ic2.core.block.base.tile.TileEntityGeneratorBase");
25+
generatorStorage = generator.getDeclaredField("storage");
26+
generatorMaxStorage = generator.getDeclaredField("maxStorage");
27+
generatorProduction = generator.getDeclaredField("production");
28+
29+
30+
registrar.registerBodyProvider(HUDHandlerTEGenerator.INSTANCE, generator);
31+
registrar.registerNBTProvider(HUDHandlerTEGenerator.INSTANCE, generator);
32+
33+
registrar.addConfig("Industrial Craft 2", "ic2.storage", true);
34+
registrar.addConfig("Industrial Craft 2", "ic2.outputeu", true);
35+
36+
} catch (Exception e) {
37+
Waila.LOGGER.warn("[Industrial Craft 2] Error while loading generator hooks.", e);
38+
}
39+
}
40+
}
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
package mcp.mobius.waila.addons.thermalexpansion;
2+
3+
import mcp.mobius.waila.Waila;
4+
import mcp.mobius.waila.api.IWailaConfigHandler;
5+
import mcp.mobius.waila.api.IWailaDataAccessor;
6+
import mcp.mobius.waila.api.IWailaDataProvider;
7+
import mcp.mobius.waila.cbcore.LangUtil;
8+
import net.minecraft.entity.player.EntityPlayerMP;
9+
import net.minecraft.item.Item;
10+
import net.minecraft.item.ItemStack;
11+
import net.minecraft.nbt.NBTTagCompound;
12+
import net.minecraft.tileentity.TileEntity;
13+
import net.minecraft.util.math.BlockPos;
14+
import net.minecraft.world.World;
15+
16+
import java.lang.reflect.InvocationTargetException;
17+
import java.util.List;
18+
import javax.annotation.Nonnull;
19+
20+
public class HUDHandlerCache implements IWailaDataProvider {
21+
22+
static final IWailaDataProvider INSTANCE = new HUDHandlerCache();
23+
24+
@Nonnull
25+
@Override
26+
public List<String> getWailaHead(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
27+
28+
if (!config.getConfig("thermalexpansion.cache")) return currenttip;
29+
try {
30+
ItemStack storedItem = null;
31+
TileEntity te = accessor.getTileEntity();
32+
NBTTagCompound tag = accessor.getNBTData();
33+
if (accessor.getNBTData().hasKey("Item"))
34+
storedItem = (ItemStack) ThermalExpansionModule.readItemStackFromNBT.invoke(te, tag.getCompoundTag("Item"));
35+
36+
37+
String name = currenttip.get(0);
38+
String color = "";
39+
if (name.startsWith("§")) color = name.substring(0, 2);
40+
41+
if (storedItem != null) {
42+
name += String.format(color + " < %s >", storedItem.getDisplayName());
43+
} else name += " " + "EMPTY";
44+
45+
currenttip.set(0, name);
46+
} catch (Exception e) {
47+
throw new RuntimeException(e);
48+
}
49+
50+
return currenttip;
51+
}
52+
53+
@Nonnull
54+
@Override
55+
public List<String> getWailaBody(ItemStack itemStack, List<String> currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) {
56+
57+
if (!config.getConfig("thermalexpansion.cache")) return currenttip;
58+
59+
try {
60+
String storedStr = LangUtil.translateG("hud.te.msg.stored");
61+
String capacityStr = LangUtil.translateG("hud.te.msg.capacity");
62+
63+
TileEntity te = accessor.getTileEntity();
64+
NBTTagCompound tag = accessor.getNBTData();
65+
66+
ItemStack storedItem = null;
67+
if (tag.hasKey("Item")) {
68+
storedItem = (ItemStack) ThermalExpansionModule.readItemStackFromNBT.invoke(te, tag.getCompoundTag("Item"));
69+
}
70+
71+
int stored = 0;
72+
int maxStored = 0;
73+
if (tag.hasKey("Stored")) stored = tag.getInteger("Stored");
74+
if (tag.hasKey("MaxStored")) maxStored = tag.getInteger("MaxStored");
75+
76+
if (storedItem != null) {
77+
currenttip.add(storedStr + ": " + stored);
78+
// currenttip.add("Stored: " + stored + "/" + maxStored); //TODO: add maxStored value
79+
} else currenttip.add(capacityStr + ": " + maxStored);
80+
} catch (ReflectiveOperationException e) {
81+
e.printStackTrace();
82+
}
83+
84+
return currenttip;
85+
}
86+
87+
88+
@Nonnull
89+
@Override
90+
public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) {
91+
if (te != null) te.writeToNBT(tag);
92+
93+
try {
94+
tag.setInteger("MaxStored", 0); //TODO: add maxStored value
95+
tag.setInteger("Stored", (Integer) ThermalExpansionModule.tileCacheGetStored.invoke(te));
96+
} catch (ReflectiveOperationException e) {
97+
e.printStackTrace();
98+
}
99+
return tag;
100+
}
101+
102+
103+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package mcp.mobius.waila.addons.thermalexpansion;
2+
3+
import mcp.mobius.waila.Waila;
4+
import mcp.mobius.waila.api.IWailaPlugin;
5+
import mcp.mobius.waila.api.IWailaRegistrar;
6+
import mcp.mobius.waila.api.WailaPlugin;
7+
import net.minecraft.nbt.NBTTagCompound;
8+
import net.minecraftforge.fml.common.Loader;
9+
10+
import java.lang.reflect.Method;
11+
12+
@WailaPlugin
13+
public class ThermalExpansionModule implements IWailaPlugin {
14+
15+
public static Class cofhItemHelper = null;
16+
public static Method readItemStackFromNBT = null;
17+
18+
public static Class tileCache = null;
19+
public static Method tileCacheGetStored = null;
20+
21+
public void register(IWailaRegistrar registrar) {
22+
if (!Loader.isModLoaded("thermalexpansion") || !Loader.isModLoaded("cofhcore")) return;
23+
try {
24+
cofhItemHelper = Class.forName("cofh.core.util.helpers.ItemHelper");
25+
readItemStackFromNBT = cofhItemHelper.getMethod("readItemStackFromNBT", NBTTagCompound.class);
26+
27+
28+
tileCache = Class.forName("cofh.thermalexpansion.block.storage.TileCache");
29+
tileCacheGetStored = tileCache.getDeclaredMethod("getStoredCount");
30+
31+
registrar.registerHeadProvider(HUDHandlerCache.INSTANCE, tileCache);
32+
registrar.registerBodyProvider(HUDHandlerCache.INSTANCE, tileCache);
33+
registrar.registerNBTProvider(HUDHandlerCache.INSTANCE, tileCache);
34+
35+
registrar.addConfig("Thermal Expansion", "thermalexpansion.cache");
36+
} catch (Exception e) {
37+
Waila.LOGGER.warn("[Thermal Expansion] Error while loading store cache hooks.", e);
38+
}
39+
}
40+
}

src/main/resources/assets/waila/lang/en_US.lang

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,12 @@ hud.msg.offers=Offers
6565
hud.msg.demands=Demands
6666
hud.msg.career=Career: %s
6767

68+
hud.ic2.msg.stored=Stored
69+
hud.ic2.msg.output=Output
70+
71+
hud.te.msg.stored=Stored
72+
hud.te.msg.capacity=Capacity
73+
6874
hud.item.melonstem=Melon Stem
6975
hud.item.pumpkinstem=Pumpkin Stem
7076

@@ -87,4 +93,4 @@ option.general.registry=Show registry data
8793
option.capability.tankinfo=Show tank data
8894
option.capability.energyinfo=Show energy data
8995

90-
nei.options.keys.showenchant=Show enchanting values
96+
nei.options.keys.showenchant=Show enchanting values

src/main/resources/assets/waila/lang/ru_RU.lang

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,12 @@ hud.msg.offers=Предложения
6565
hud.msg.demands=Запросы
6666
hud.msg.career=Карьера: %s
6767

68+
hud.ic2.msg.stored=Хранится
69+
hud.ic2.msg.output=Вывод
70+
71+
hud.te.msg.stored=Хранится
72+
hud.te.msg.capacity=Объём
73+
6874
hud.item.melonstem=Стебель дыни
6975
hud.item.pumpkinstem=Стебель арбуза
7076

0 commit comments

Comments
 (0)