From e2ccb685461adbe2787e5034c586fdd44dfadf0a Mon Sep 17 00:00:00 2001 From: Ognev Anton Date: Mon, 17 Feb 2025 20:08:13 +0700 Subject: [PATCH 01/16] added ic2 and te addons --- .../addons/ic2/HUDHandlerTEGenerator.java | 75 ++++++++++++++ .../mobius/waila/addons/ic2/IC2Module.java | 43 ++++++++ .../thermalexpansion/HUDHandlerCache.java | 98 +++++++++++++++++++ .../ThermalExpansionModule.java | 46 +++++++++ 4 files changed, 262 insertions(+) create mode 100644 src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java create mode 100644 src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java create mode 100644 src/main/java/mcp/mobius/waila/addons/thermalexpansion/HUDHandlerCache.java create mode 100644 src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java new file mode 100644 index 00000000..007d8b21 --- /dev/null +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java @@ -0,0 +1,75 @@ +package mcp.mobius.waila.addons.ic2; + +import mcp.mobius.waila.api.ITaggedList; +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; +import mcp.mobius.waila.api.IWailaDataProvider; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; +import java.util.List; + +public class HUDHandlerTEGenerator implements IWailaDataProvider { + + static final IWailaDataProvider INSTANCE = new HUDHandlerTEGenerator(); + + @Nonnull + @Override + public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { + double storage = accessor.getNBTData().getDouble("storage"); + int production = accessor.getNBTData().getInteger("production"); + long maxStorage = accessor.getNBTData().getLong("maxStorage"); + + if (accessor.getTileEntity() == null) { + return currenttip; + } + + /* EU Storage */ + if (config.getConfig("ic2.storage")) + if (maxStorage > 0) { + ((ITaggedList) currenttip) + .add(String.format( + "%s \u00a7f%d\u00a7r / \u00a7f%d\u00a7r EU", + "STORED", + Math.round(Math.min(storage, maxStorage)), + maxStorage + ), "IEnergyStorage"); + } + + if (config.getConfig("ic2.outputeu")) { + currenttip.add(String.format("%s §f%d §r EU/t", "OUTPUT", production)); + } + + return currenttip; + } + + + @Nonnull + @Override + public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { + double storage = -1; + int production = -1; + long maxStorage = -1; + try { + if (IC2Module.TileBaseGenerator.isInstance(te)) { + storage = IC2Module.TileBaseGenerator_storage.getDouble(te); + production = IC2Module.TileBaseGenerator_production.getInt(te); + maxStorage = IC2Module.TileBaseGenerator_maxStorage.getLong(te); + } + + } catch (java.lang.Exception e) { + throw new RuntimeException(e); + } + + tag.setDouble("storage", storage); + tag.setInteger("production", production); + tag.setLong("maxStorage", maxStorage); + + return tag; + } +} diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java new file mode 100644 index 00000000..4e86431f --- /dev/null +++ b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java @@ -0,0 +1,43 @@ +package mcp.mobius.waila.addons.ic2; + +import mcp.mobius.waila.Waila; +import mcp.mobius.waila.api.IWailaPlugin; +import mcp.mobius.waila.api.IWailaRegistrar; +import mcp.mobius.waila.api.WailaPlugin; + +import java.lang.reflect.Field; + +@WailaPlugin +public class IC2Module implements IWailaPlugin{ + + public static Class TileBaseGenerator = null; + public static Field TileBaseGenerator_storage = null; + public static Field TileBaseGenerator_maxStorage = null; + public static Field TileBaseGenerator_production = null; + + + @Override + public void register(IWailaRegistrar registrar) { + + try { + TileBaseGenerator = Class.forName("ic2.core.block.base.tile.TileEntityGeneratorBase"); + TileBaseGenerator_storage = TileBaseGenerator.getDeclaredField("storage"); + TileBaseGenerator_maxStorage = TileBaseGenerator.getDeclaredField("maxStorage"); + TileBaseGenerator_production = TileBaseGenerator.getDeclaredField("production"); + + + registrar.registerBodyProvider(HUDHandlerTEGenerator.INSTANCE, TileBaseGenerator); + registrar.registerNBTProvider(HUDHandlerTEGenerator.INSTANCE, TileBaseGenerator); + + registrar.addConfig("Industrial Craft 2", "ic2.storage", true); + registrar.addConfig("Industrial Craft 2", "ic2.outputeu", true); + + } catch (Exception e) { + if (e instanceof ClassNotFoundException || e instanceof NoSuchFieldException) { + Waila.LOGGER.info("[Industrial Craft 2] IndustrialCraft 2 mod not found."); + } else { + Waila.LOGGER.warn("[Industrial Craft 2] Error while loading generator hooks." + e); + } + } + } +} diff --git a/src/main/java/mcp/mobius/waila/addons/thermalexpansion/HUDHandlerCache.java b/src/main/java/mcp/mobius/waila/addons/thermalexpansion/HUDHandlerCache.java new file mode 100644 index 00000000..00f72565 --- /dev/null +++ b/src/main/java/mcp/mobius/waila/addons/thermalexpansion/HUDHandlerCache.java @@ -0,0 +1,98 @@ +package mcp.mobius.waila.addons.thermalexpansion; + +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; +import mcp.mobius.waila.api.IWailaDataProvider; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.math.BlockPos; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +import java.lang.reflect.InvocationTargetException; +import java.util.List; +import javax.annotation.Nonnull; + +public class HUDHandlerCache implements IWailaDataProvider { + static final IWailaDataProvider INSTANCE = new HUDHandlerCache(); + + @Nonnull + @Override + public List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, + IWailaConfigHandler config) { + + if (!config.getConfig("thermalexpansion.cache")) return currenttip; + try { + ItemStack storedItem = null; + if (accessor.getNBTData().hasKey("Item")) + storedItem = readItemStack(accessor.getNBTData().getCompoundTag("Item")); + + + String name = currenttip.get(0); + String color = ""; + if (name.startsWith("\u00a7")) color = name.substring(0, 2); + + if (storedItem != null) {; + name += String.format(color + " < %s >", storedItem.getDisplayName()); + } else name += " " + "EMPTY"; + + currenttip.set(0, name); + } catch (Exception e) { + throw new RuntimeException(e); + } + + return currenttip; + } + + @Nonnull + @Override + public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { + if (!config.getConfig("thermalexpansion.cache")) return currenttip; + + NBTTagCompound tag = accessor.getNBTData(); + ItemStack storedItem = null; + if (tag.hasKey("Item")) storedItem = readItemStack(tag.getCompoundTag("Item")); + + int stored = 0; + int maxStored = 0; + if (tag.hasKey("Stored")) stored = tag.getInteger("Stored"); + if (tag.hasKey("MaxStored")) maxStored = tag.getInteger("MaxStored"); + + if (storedItem != null) { + currenttip.add("Stored: " + stored); +// currenttip.add("Stored: " + stored + "/" + maxStored); //TODO: maxStored + } else currenttip.add("Capacity: " + maxStored); + + return currenttip; + } + + + @Nonnull + @Override + public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { + TileEntity tile = world.getTileEntity(pos); + + if (te != null) te.writeToNBT(tag); + try { + tag.setInteger("MaxStored", 0); //TODO: maxStored + tag.setInteger("Stored", (Integer) ThermalExpansionModule.TileCache_getStored.invoke(te)); + } catch (InvocationTargetException | IllegalAccessException e) { + e.printStackTrace(); + } + return tag; + } + + public ItemStack readItemStack(NBTTagCompound tag) { + ItemStack is = new ItemStack(Item.getByNameOrId(tag.getString("id"))); + // TODO: WIP +// is.splitStack(tag.getInteger("Count")); +// is.setItemDamage(Math.max(0, tag.getShort("Damage"))); +// if (tag.hasKey("tag", 10)) { +// is.setTagCompound(tag.getCompoundTag("tag")); +// } + return is; + } + +} diff --git a/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java b/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java new file mode 100644 index 00000000..4123d61b --- /dev/null +++ b/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java @@ -0,0 +1,46 @@ +package mcp.mobius.waila.addons.thermalexpansion; + +import mcp.mobius.waila.Waila; +import mcp.mobius.waila.api.IWailaPlugin; +import mcp.mobius.waila.api.IWailaRegistrar; +import mcp.mobius.waila.api.WailaPlugin; + +import java.lang.reflect.Method; + +@WailaPlugin +public class ThermalExpansionModule implements IWailaPlugin { + + public static Class TileCache = null; + public static Method TileCache_getStored = null; + + public static Method IBlockInfo_getBlockInfo = null; + + public void register(IWailaRegistrar registrar) { + boolean printedThermalExpansionNotFound = false; + + try { + TileCache = Class.forName("cofh.thermalexpansion.block.storage.TileCache"); + TileCache_getStored = TileCache.getDeclaredMethod("getStoredCount"); + + registrar.registerHeadProvider(HUDHandlerCache.INSTANCE, TileCache); + registrar.registerBodyProvider(HUDHandlerCache.INSTANCE, TileCache); + registrar.registerNBTProvider(HUDHandlerCache.INSTANCE, TileCache); + + registrar.addConfig("Thermal Expansion", "thermalexpansion.cache"); + + } catch (Exception e) { + if (e instanceof ClassNotFoundException) { + if (!printedThermalExpansionNotFound) { + printedThermalExpansionNotFound = true; + Waila.LOGGER.info("[Thermal Expansion] Thermal Expansion mod not found."); + } + } else { + Waila.LOGGER.warn("[Thermal Expansion] Error while loading store cache hooks. {}", e); + } + } + if (!printedThermalExpansionNotFound) { + Waila.LOGGER.info("Thermal Expansion mod found."); + } + } + +} From 71b13b8f51f5f25cae522555b47398863a7abd5a Mon Sep 17 00:00:00 2001 From: Ognev Anton Date: Tue, 18 Feb 2025 00:04:28 +0700 Subject: [PATCH 02/16] [refactor/fix] addons files, lang files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Удалены лишние языковые файлы - Доработка модуля ic2: - Удален лишний код - Переименованны переменные - Доработка модуля te: - Удален лишний код - Переименованы переменные - Изменен способ получения данных о предмете --- .../addons/ic2/HUDHandlerTEGenerator.java | 19 +- .../mobius/waila/addons/ic2/IC2Module.java | 27 ++- .../thermalexpansion/HUDHandlerCache.java | 68 +++---- .../ThermalExpansionModule.java | 37 ++-- .../resources/assets/waila/lang/cs_CZ.lang | 146 --------------- .../resources/assets/waila/lang/de_DE.lang | 90 ---------- .../resources/assets/waila/lang/en_US.lang | 8 +- .../resources/assets/waila/lang/es_ES.lang | 167 ------------------ src/main/resources/assets/waila/lang/et_EE | 142 --------------- .../resources/assets/waila/lang/et_EE.lang | 142 --------------- .../resources/assets/waila/lang/fr_FR.lang | 124 ------------- .../resources/assets/waila/lang/it_IT.lang | 143 --------------- .../resources/assets/waila/lang/nl_NL.lang | 110 ------------ .../resources/assets/waila/lang/ru_RU.lang | 6 + .../resources/assets/waila/lang/zh_CN.lang | 89 ---------- 15 files changed, 93 insertions(+), 1225 deletions(-) delete mode 100644 src/main/resources/assets/waila/lang/cs_CZ.lang delete mode 100644 src/main/resources/assets/waila/lang/de_DE.lang delete mode 100644 src/main/resources/assets/waila/lang/es_ES.lang delete mode 100644 src/main/resources/assets/waila/lang/et_EE delete mode 100644 src/main/resources/assets/waila/lang/et_EE.lang delete mode 100644 src/main/resources/assets/waila/lang/fr_FR.lang delete mode 100644 src/main/resources/assets/waila/lang/it_IT.lang delete mode 100644 src/main/resources/assets/waila/lang/nl_NL.lang delete mode 100644 src/main/resources/assets/waila/lang/zh_CN.lang diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java index 007d8b21..53208f87 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java @@ -4,6 +4,7 @@ import mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; import mcp.mobius.waila.api.IWailaDataProvider; +import mcp.mobius.waila.cbcore.LangUtil; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; @@ -25,6 +26,9 @@ public List getWailaBody(ItemStack itemStack, List currenttip, I int production = accessor.getNBTData().getInteger("production"); long maxStorage = accessor.getNBTData().getLong("maxStorage"); + String storedStr = LangUtil.translateG("hud.ic2.msg.stored"); + String outputStr = LangUtil.translateG("hud.ic2.msg.output"); + if (accessor.getTileEntity() == null) { return currenttip; } @@ -35,14 +39,14 @@ public List getWailaBody(ItemStack itemStack, List currenttip, I ((ITaggedList) currenttip) .add(String.format( "%s \u00a7f%d\u00a7r / \u00a7f%d\u00a7r EU", - "STORED", + storedStr, Math.round(Math.min(storage, maxStorage)), maxStorage ), "IEnergyStorage"); } if (config.getConfig("ic2.outputeu")) { - currenttip.add(String.format("%s §f%d §r EU/t", "OUTPUT", production)); + currenttip.add(String.format("%s \u00a7f%d \u00a7r EU/t", outputStr, production)); } return currenttip; @@ -55,17 +59,16 @@ public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCom double storage = -1; int production = -1; long maxStorage = -1; + try { - if (IC2Module.TileBaseGenerator.isInstance(te)) { - storage = IC2Module.TileBaseGenerator_storage.getDouble(te); - production = IC2Module.TileBaseGenerator_production.getInt(te); - maxStorage = IC2Module.TileBaseGenerator_maxStorage.getLong(te); + if (IC2Module.generator.isInstance(te)) { + storage = IC2Module.generatorStorage.getDouble(te); + production = IC2Module.generatorProduction.getInt(te); + maxStorage = IC2Module.generatorMaxStorage.getLong(te); } - } catch (java.lang.Exception e) { throw new RuntimeException(e); } - tag.setDouble("storage", storage); tag.setInteger("production", production); tag.setLong("maxStorage", maxStorage); diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java index 4e86431f..d0b67064 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java @@ -8,35 +8,34 @@ import java.lang.reflect.Field; @WailaPlugin -public class IC2Module implements IWailaPlugin{ +public class IC2Module implements IWailaPlugin { - public static Class TileBaseGenerator = null; - public static Field TileBaseGenerator_storage = null; - public static Field TileBaseGenerator_maxStorage = null; - public static Field TileBaseGenerator_production = null; + public static Class generator = null; + public static Field generatorStorage = null; + public static Field generatorMaxStorage = null; + public static Field generatorProduction = null; @Override public void register(IWailaRegistrar registrar) { - try { - TileBaseGenerator = Class.forName("ic2.core.block.base.tile.TileEntityGeneratorBase"); - TileBaseGenerator_storage = TileBaseGenerator.getDeclaredField("storage"); - TileBaseGenerator_maxStorage = TileBaseGenerator.getDeclaredField("maxStorage"); - TileBaseGenerator_production = TileBaseGenerator.getDeclaredField("production"); + generator = Class.forName("ic2.core.block.base.tile.TileEntityGeneratorBase"); + generatorStorage = generator.getDeclaredField("storage"); + generatorMaxStorage = generator.getDeclaredField("maxStorage"); + generatorProduction = generator.getDeclaredField("production"); - registrar.registerBodyProvider(HUDHandlerTEGenerator.INSTANCE, TileBaseGenerator); - registrar.registerNBTProvider(HUDHandlerTEGenerator.INSTANCE, TileBaseGenerator); + registrar.registerBodyProvider(HUDHandlerTEGenerator.INSTANCE, generator); + registrar.registerNBTProvider(HUDHandlerTEGenerator.INSTANCE, generator); registrar.addConfig("Industrial Craft 2", "ic2.storage", true); registrar.addConfig("Industrial Craft 2", "ic2.outputeu", true); } catch (Exception e) { - if (e instanceof ClassNotFoundException || e instanceof NoSuchFieldException) { + if (e instanceof ClassNotFoundException) { Waila.LOGGER.info("[Industrial Craft 2] IndustrialCraft 2 mod not found."); } else { - Waila.LOGGER.warn("[Industrial Craft 2] Error while loading generator hooks." + e); + Waila.LOGGER.warn("[Industrial Craft 2] Error while loading generator hooks. {}", e); } } } diff --git a/src/main/java/mcp/mobius/waila/addons/thermalexpansion/HUDHandlerCache.java b/src/main/java/mcp/mobius/waila/addons/thermalexpansion/HUDHandlerCache.java index 00f72565..9638e614 100644 --- a/src/main/java/mcp/mobius/waila/addons/thermalexpansion/HUDHandlerCache.java +++ b/src/main/java/mcp/mobius/waila/addons/thermalexpansion/HUDHandlerCache.java @@ -1,14 +1,16 @@ package mcp.mobius.waila.addons.thermalexpansion; +import mcp.mobius.waila.Waila; import mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; import mcp.mobius.waila.api.IWailaDataProvider; +import mcp.mobius.waila.cbcore.LangUtil; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.math.BlockPos; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import java.lang.reflect.InvocationTargetException; @@ -16,25 +18,28 @@ import javax.annotation.Nonnull; public class HUDHandlerCache implements IWailaDataProvider { + static final IWailaDataProvider INSTANCE = new HUDHandlerCache(); @Nonnull @Override - public List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, - IWailaConfigHandler config) { + public List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { if (!config.getConfig("thermalexpansion.cache")) return currenttip; try { ItemStack storedItem = null; + TileEntity te = accessor.getTileEntity(); + NBTTagCompound tag = accessor.getNBTData(); if (accessor.getNBTData().hasKey("Item")) - storedItem = readItemStack(accessor.getNBTData().getCompoundTag("Item")); + storedItem = (ItemStack) ThermalExpansionModule.readItemStackFromNBT.invoke(te, tag.getCompoundTag("Item")); String name = currenttip.get(0); String color = ""; if (name.startsWith("\u00a7")) color = name.substring(0, 2); - if (storedItem != null) {; + if (storedItem != null) { + ; name += String.format(color + " < %s >", storedItem.getDisplayName()); } else name += " " + "EMPTY"; @@ -49,21 +54,33 @@ public List getWailaHead(ItemStack itemStack, List currenttip, I @Nonnull @Override public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { + if (!config.getConfig("thermalexpansion.cache")) return currenttip; - NBTTagCompound tag = accessor.getNBTData(); - ItemStack storedItem = null; - if (tag.hasKey("Item")) storedItem = readItemStack(tag.getCompoundTag("Item")); + try { + String storedStr = LangUtil.translateG("hud.te.msg.stored"); + String capacityStr = LangUtil.translateG("hud.te.msg.capacity"); - int stored = 0; - int maxStored = 0; - if (tag.hasKey("Stored")) stored = tag.getInteger("Stored"); - if (tag.hasKey("MaxStored")) maxStored = tag.getInteger("MaxStored"); + TileEntity te = accessor.getTileEntity(); + NBTTagCompound tag = accessor.getNBTData(); - if (storedItem != null) { - currenttip.add("Stored: " + stored); -// currenttip.add("Stored: " + stored + "/" + maxStored); //TODO: maxStored - } else currenttip.add("Capacity: " + maxStored); + ItemStack storedItem = null; + if (tag.hasKey("Item")) { + storedItem = (ItemStack) ThermalExpansionModule.readItemStackFromNBT.invoke(te, tag.getCompoundTag("Item")); + } + + int stored = 0; + int maxStored = 0; + if (tag.hasKey("Stored")) stored = tag.getInteger("Stored"); + if (tag.hasKey("MaxStored")) maxStored = tag.getInteger("MaxStored"); + + if (storedItem != null) { + currenttip.add(storedStr + ": " + stored); +// currenttip.add("Stored: " + stored + "/" + maxStored); //TODO: add maxStored value + } else currenttip.add(capacityStr + ": " + maxStored); + } catch (ReflectiveOperationException e) { + e.printStackTrace(); + } return currenttip; } @@ -72,27 +89,16 @@ public List getWailaBody(ItemStack itemStack, List currenttip, I @Nonnull @Override public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { - TileEntity tile = world.getTileEntity(pos); - if (te != null) te.writeToNBT(tag); + try { - tag.setInteger("MaxStored", 0); //TODO: maxStored - tag.setInteger("Stored", (Integer) ThermalExpansionModule.TileCache_getStored.invoke(te)); - } catch (InvocationTargetException | IllegalAccessException e) { + tag.setInteger("MaxStored", 0); //TODO: add maxStored value + tag.setInteger("Stored", (Integer) ThermalExpansionModule.tileCacheGetStored.invoke(te)); + } catch (ReflectiveOperationException e) { e.printStackTrace(); } return tag; } - public ItemStack readItemStack(NBTTagCompound tag) { - ItemStack is = new ItemStack(Item.getByNameOrId(tag.getString("id"))); - // TODO: WIP -// is.splitStack(tag.getInteger("Count")); -// is.setItemDamage(Math.max(0, tag.getShort("Damage"))); -// if (tag.hasKey("tag", 10)) { -// is.setTagCompound(tag.getCompoundTag("tag")); -// } - return is; - } } diff --git a/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java b/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java index 4123d61b..150a9a6e 100644 --- a/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java +++ b/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java @@ -4,43 +4,44 @@ import mcp.mobius.waila.api.IWailaPlugin; import mcp.mobius.waila.api.IWailaRegistrar; import mcp.mobius.waila.api.WailaPlugin; +import net.minecraft.nbt.NBTTagCompound; import java.lang.reflect.Method; @WailaPlugin public class ThermalExpansionModule implements IWailaPlugin { - public static Class TileCache = null; - public static Method TileCache_getStored = null; + /* CoFH Helpers */ + public static Class cofhItemHelper = null; + public static Method readItemStackFromNBT = null; - public static Method IBlockInfo_getBlockInfo = null; - public void register(IWailaRegistrar registrar) { - boolean printedThermalExpansionNotFound = false; + public static Class tileCache = null; + public static Method tileCacheGetStored = null; + + public void register(IWailaRegistrar registrar) { try { - TileCache = Class.forName("cofh.thermalexpansion.block.storage.TileCache"); - TileCache_getStored = TileCache.getDeclaredMethod("getStoredCount"); + cofhItemHelper = Class.forName("cofh.core.util.helpers.ItemHelper"); + readItemStackFromNBT = cofhItemHelper.getMethod("readItemStackFromNBT", NBTTagCompound.class); - registrar.registerHeadProvider(HUDHandlerCache.INSTANCE, TileCache); - registrar.registerBodyProvider(HUDHandlerCache.INSTANCE, TileCache); - registrar.registerNBTProvider(HUDHandlerCache.INSTANCE, TileCache); - registrar.addConfig("Thermal Expansion", "thermalexpansion.cache"); + tileCache = Class.forName("cofh.thermalexpansion.block.storage.TileCache"); + tileCacheGetStored = tileCache.getDeclaredMethod("getStoredCount"); + registrar.registerHeadProvider(HUDHandlerCache.INSTANCE, tileCache); + registrar.registerBodyProvider(HUDHandlerCache.INSTANCE, tileCache); + registrar.registerNBTProvider(HUDHandlerCache.INSTANCE, tileCache); + + registrar.addConfig("Thermal Expansion", "thermalexpansion.cache"); } catch (Exception e) { if (e instanceof ClassNotFoundException) { - if (!printedThermalExpansionNotFound) { - printedThermalExpansionNotFound = true; - Waila.LOGGER.info("[Thermal Expansion] Thermal Expansion mod not found."); - } + Waila.LOGGER.info("[Thermal Expansion] Thermal Expansion mod not found."); + } else { Waila.LOGGER.warn("[Thermal Expansion] Error while loading store cache hooks. {}", e); } } - if (!printedThermalExpansionNotFound) { - Waila.LOGGER.info("Thermal Expansion mod found."); - } } } diff --git a/src/main/resources/assets/waila/lang/cs_CZ.lang b/src/main/resources/assets/waila/lang/cs_CZ.lang deleted file mode 100644 index 18f0560b..00000000 --- a/src/main/resources/assets/waila/lang/cs_CZ.lang +++ /dev/null @@ -1,146 +0,0 @@ -screen.button.modules=Moduly -screen.label.scale=Mìøítko -screen.label.dragtuto=Chytni HUD pro nastavení jeho pozice. - -screen.button.default=Defaultní -screen.button.cancel=Zrušit -screen.button.yes=Ano -screen.button.no=Ne -screen.button.back=Zpìt -screen.button.hidden=Skrytý -screen.button.visible=Viditelný -screen.button.maintained=Spravované -screen.button.toggled=Pøepnuté - -choice.showhidewaila=Zobrazit/Skrýt Wailu -choice.showhideidmeta=Zobrazit ID:Metadata -choice.toggledmaintained=Pøepnuté/Spravované -choice.showliquids=Tekutiny -choice.shifttoggledblock=Pliž se pro pøepnutí blokù -choice.shifttoggledents=Pliž se pro pøepnutí entit -screen.button.configureaspect=Nastavení vzhledu... - -enchant.title.name=Jméno -enchant.title.minlvl=Minimální lvl -enchant.title.maxlvl=Maximální lvl -enchant.title.weight=Hmotnost -enchant.label.enchantability=Oèarovatelnost - -waila.keybind.wailaconfig=[Waila] Nastavení obrazu -waila.keybind.wailadisplay=[Waila] Zobrazit/Skrýt -waila.keybind.liquid=[Waila] Zobrazit tekutiny -waila.keybind.recipe=[Waila] Zobrazit recept -waila.keybind.usage=[Waila] Zobrazit použití -waila.keybind.testing=[Waila] Testování - -client.msg.norecipe=Nenalezen žádný recept. -client.msg.nousage=Nenalezeno žádné využití. - -hud.msg.none= -hud.msg.empty= -hud.msg.output=Výstup -hud.msg.input=Vstup -hud.msg.out=Ven -hud.msg.in=Dovnitø -hud.msg.power=Energie -hud.msg.storage=Úložištì -hud.msg.stored=Uloženo -hud.msg.any=Jakýkoliv -hud.msg.mode=Mód -hud.msg.maxpower=Maximální Energie -hud.msg.trigger=Spouštìè -hud.msg.maxio=Maximální propustnost - -hud.msg.send=Odeslat -hud.msg.recv=Obdržet -hud.msg.item=Pøedmìt -hud.msg.fluid=Tekutina -hud.msg.energ=Energie -hud.msg.frequency=Frekvence - -hud.msg.owner=Vlastník -hud.msg.public=Veøejné -hud.msg.restricted=Omezené -hud.msg.private=Soukromé - -hud.msg.white=Bílá -hud.msg.orange=Oranžová -hud.msg.magenta=Purpurová -hud.msg.lblue=Svìtle modrá -hud.msg.yellow=Žlutá -hud.msg.lime=Svìtle zelená -hud.msg.pink=Rùžová -hud.msg.gray=Šedá -hud.msg.lgray=Svìtle šedá -hud.msg.cyan=Tyrkysová -hud.msg.purple=Fialová -hud.msg.blue=Modrá -hud.msg.brown=Hnìdá -hud.msg.green=Zelená -hud.msg.red=Èervená -hud.msg.black=Èerná - -hud.msg.growth=Rùst -hud.msg.mature=Stáøí -hud.msg.off=Vypnuto -hud.msg.on=Zapnuto -hud.msg.state=Stav -hud.msg.delay=Prodleva -hud.msg.comparator=Porovnávaè -hud.msg.substractor=Substraktor -hud.msg.record=Záznam - -hud.msg.offers=Poskytuje -hud.msg.demands=Požaduje - -option.appeng.monitorcontent=Obsah monitoru -option.bb.content=Obsah barelu -option.bc.tankamount=Množství tekutiny -option.bc.tanktype=Typ tekutiny -option.enderstorage.colors=Barvy -option.ic2.inputeumach=Maximální pøíjem EU [Stroje] -option.ic2.inputeuother=Maximální pøíjem EU [Ostatní] -option.ic2.inputeu=Maximální pøijem EU -option.ic2.outputeu=Maximální výstup EU -option.ic2.storage=Uloženo energie -option.ic2.consump=Zobrazit spotøebu -option.ic2.tradeomat=Zobrazit Trade-O-Mat požadavek -option.thaumcraft.storedvis=Úložištì kondenzátoru -option.thermalexpansion.energyhandler=Zobrazit úložištì RF -option.thermalexpansion.energycell=Zobrazit ECell VSTUP/VÝSTUP -option.thermalexpansion.fluidtype=Zobrazit typ tekutiny -option.thermalexpansion.fluidamount=Zobrazit množství tekutiny -option.thermalexpansion.tankmode=Zobrazit mód nádrže -option.thermalexpansion.tesssendrecv=Tesseract mode -option.thermalexpansion.tessfreq=Frekvence Teseraktu -option.thermalexpansion.owner=Zobrazit majitele -option.thermalexpansion.conditemmode=Zobrazit mód Itemduktu -option.vanilla.spawntype=Typ spawneru -option.vanilla.growthvalue=Hodnota rùstu -option.vanilla.leverstate=Stav páky -option.vanilla.repeater=Prodleva opakovaèe -option.vanilla.comparator=Mód porovnávaèe -option.vanilla.redstone=Ruditová energie -option.vanilla.jukebox=Jukeboxový disk -option.vanilla.silverfish=Skrýt rybenku -option.etb.displaydata=Zobrazit data slotu -option.enderio.inout=Zobrazit vstup/výstup -option.enderio.storage=Zobrazit uskladnìné MJ -option.enderio.owner=Zobrazit majitele bloku -option.enderio.channel=Zobrazit kanál nadkrychle -option.bcapi.storage=Zobrazit uskladnìné MJ -option.bcapi.consump=Zobrazit maximální energii -option.bcapi.trigger=Zobrazit spouštìjící se energii -option.pr.showio=Zobrazit IO brány -option.pr.showdata=Zobrazit data bran -option.extrautilities.fluidamount=Zobrazit množství tekutin -option.openblocks.fluidamount=Zobrazit množství tekutin -option.railcraft.fluidamount=Zobrazit množství tekutin -option.secretrooms.hide=Skrýt camo bloky -option.carpenters.hide=Skrýt camo bloky -option.stevescarts.showall=Zobrazit data -option.stevescarts.colorblind=Barevný mód -option.stevescarts.shifttoggle=Shift pro pøepnutí -option.general.showhp=Zobrazit zdraví entit -option.general.showcrop=Zobrazit rùst plodin -option.thaumcraft.aspects=Zobrazit aspekty diff --git a/src/main/resources/assets/waila/lang/de_DE.lang b/src/main/resources/assets/waila/lang/de_DE.lang deleted file mode 100644 index 9fbe8c50..00000000 --- a/src/main/resources/assets/waila/lang/de_DE.lang +++ /dev/null @@ -1,90 +0,0 @@ -screen.button.waila=Waila -screen.button.modules=Module -screen.label.scale=Maße -screen.label.dragtuto=Verschiebe das HUD, um seine Position zu ändern. - -screen.button.default=Standard -screen.button.cancel=Abbrechen -screen.button.ok=Ok -screen.button.yes=Ja -screen.button.no=Nein -screen.button.back=Zurück -screen.button.hidden=Versteckt -screen.button.visible=Sichtbar -screen.button.maintained=Gewartet -screen.button.toggled=An/Aus -screen.hwyla.warning=§cWarnung:§r Du verwendest eine Abspaltung(fork) von Waila, auch genannt Hwyla. Du kannst die (zum größtenteils fertige) Liste der Änderungen sehen, wenn du auf die Schaltfläche oben links in diesem Fenster klickst. - -choice.showhidewaila=Zeige/Verstecke Waila -choice.showhideidmeta=Zeige ID:Metadaten -choice.toggledmaintained=An/Aus/Gewartet -choice.showliquids=Flüssigkeiten -choice.shifttoggledblock=Blöcke schleichend umschalten -choice.shifttoggledents=Lebewesen schleichend umschalten -choice.hidefromlist=Verstecken vor der Spielerliste -choice.hidefromdebug=Verstecken vor dem Debug-Menü -choice.showitem=Gegenstand anzeigen -choice.tts=Blöcke vorlesen -choice.format.modname=Modname -choice.format.blockname=Blockname -choice.format.fluidname=Flüssigkeitsname -choice.format.entityname=Wesensname -choice.format.metadata=Metadaten -choice.format.background=Hintergrundfarbe -choice.format.gradienttop=Verlaufsfarbe (Oben) -choice.format.gradientbottom=Verlaufsfarbe (Unten) -choice.format.font=Textfarbe -screen.button.configureaspect=Konfiguriere Aspekt... -screen.button.configureformat=Formatiere Inhalt... -screen.button.exporttheme=Exportiere Thema - -waila.keybind.wailaconfig=Einstellungsbildschirm -waila.keybind.wailadisplay=Einblenden/Ausblenden -waila.keybind.liquid=Zeige Flüssigkeiten -waila.keybind.recipe=Zeige Rezept -waila.keybind.usage=Zeige Verwendung - -client.msg.norecipe=Kein Rezept gefunden. -client.msg.nousage=Keine Verwendung gefunden. - -hud.msg.empty= -hud.msg.health=Gesundheit -hud.msg.growth=Entwicklung -hud.msg.growth.value=%.0f %% -hud.msg.mature=Ausgereift -hud.msg.off=Aus -hud.msg.on=An -hud.msg.state=Status -hud.msg.delay=Verzögerung -hud.msg.comparator=Vergleicher -hud.msg.substractor=Substraktor -hud.msg.record=Aufzeichnung -hud.msg.toomuch=Zu viele... -hud.msg.power=Energie -hud.msg.offers=Angebote -hud.msg.demands=Anforderungen -hud.msg.career=Karriere: %s - -hud.item.melonstem=Melonenpflanze -hud.item.pumpkinstem=Kürbispflanze - -cfg.theme.vanilla=Vanilla -cfg.theme.dark=Dunkel - -option.vanilla.spawntype=Spawner-Typ -option.vanilla.growthvalue=Wachstumswert -option.vanilla.leverstate=Hebelstatus -option.vanilla.repeater=Repeater-Verzögerung -option.vanilla.comparator=Komparatormodus -option.vanilla.redstone=Redstone-Stärke -option.vanilla.jukebox=Plattenspieler-Schallplatte -option.vanilla.silverfish=Silberfisch verdecken -option.vanilla.furnacedisplay=Zeige Fortschritt des Ofens -option.general.showents=Zeige Wesen -option.general.showhp=Zeige Gesundheit von Lebewesen -option.general.showcrop=Zeige Pflanzenwachstum -option.general.registry=Zeige Registrierungsdaten -option.capability.tankinfo=Zeige Tankdaten -option.capability.energyinfo=Zeige Energiedaten - -nei.options.keys.showenchant=Zeige die Verzauberungs-Werte diff --git a/src/main/resources/assets/waila/lang/en_US.lang b/src/main/resources/assets/waila/lang/en_US.lang index 8801346f..783333bb 100644 --- a/src/main/resources/assets/waila/lang/en_US.lang +++ b/src/main/resources/assets/waila/lang/en_US.lang @@ -65,6 +65,12 @@ hud.msg.offers=Offers hud.msg.demands=Demands hud.msg.career=Career: %s +hud.ic2.msg.stored=Stored +hud.ic2.msg.output=Output + +hud.te.msg.stored=Stored +hud.te.msg.capacity=Capacity + hud.item.melonstem=Melon Stem hud.item.pumpkinstem=Pumpkin Stem @@ -87,4 +93,4 @@ option.general.registry=Show registry data option.capability.tankinfo=Show tank data option.capability.energyinfo=Show energy data -nei.options.keys.showenchant=Show enchanting values \ No newline at end of file +nei.options.keys.showenchant=Show enchanting values diff --git a/src/main/resources/assets/waila/lang/es_ES.lang b/src/main/resources/assets/waila/lang/es_ES.lang deleted file mode 100644 index 11174404..00000000 --- a/src/main/resources/assets/waila/lang/es_ES.lang +++ /dev/null @@ -1,167 +0,0 @@ -screen.button.modules=Módulos -screen.label.scale=Escala -screen.label.dragtuto=Arrastre el HUD para configurar su posición - -screen.button.default=Defecto -screen.button.cancel=Cancelar -screen.button.yes=Sí -screen.button.back=Atrás -screen.button.hidden=Ocultar -screen.button.maintained=Mantenido -screen.button.toggled=Cazonete - -choice.showhidewaila=Mostrar/Ocultar Waila -choice.toggledmaintained=Cazonete/Mantenido -choice.showliquids=Líquidos -choice.shifttoggledblock=SHIFT para bloques -choice.shifttoggledents=SHIFT para entidades -choice.hidefromlist=Ocultar de la lista de jugadores -choice.format.modname=Nombre Mod -choice.format.blockname=Nombre del Bloque -choice.format.fluidname=Nombre del Fluido -choice.format.entityname=Nombre de la Entidad -choice.format.background=Color de fondo -choice.format.gradienttop=Color del degradado (parte superior) -choice.format.gradientbottom=Color del degradado (Fondo) -choice.format.font=Color de texto -screen.button.configureaspect=Configurar aspecto... -screen.button.configureformat=Configurar contenido... -screen.button.exporttheme=Exportar tema - -enchant.title.name=Nombre -enchant.title.minlvl=Nivel mínimo -enchant.title.maxlvl=Nivel máximo -enchant.title.weight=Peso - - -waila.keybind.wailaconfig=[Waila] Pantalla Configurar -waila.keybind.wailadisplay=[Waila] Mostrar/Ocultar -waila.keybind.liquid=[Waila] Mostrar fluidos -waila.keybind.recipe=[Waila] Mostrar recetas -waila.keybind.usage=[Waila] Mostrar uso -waila.keybind.testing=[Waila] Pruebas - -client.msg.norecipe=No se encontró receta. -client.msg.nousage=No se encontró uso. - -hud.msg.none= -hud.msg.empty= -hud.msg.output=Salida -hud.msg.input=Entrada -hud.msg.out=Fuera -hud.msg.in=Adentro -hud.msg.power=Energía -hud.msg.storage=Almacenamiento -hud.msg.stored=Almacenado -hud.msg.any=Alguna -hud.msg.mode=Modo -hud.msg.maxpower=Máximo Energía -hud.msg.trigger=Gatillo -hud.msg.maxio=Máximo IO - -hud.msg.send=Enviar -hud.msg.recv=Recibir -hud.msg.item=ítem -hud.msg.fluid=Fluido -hud.msg.energ=Energía -hud.msg.frequency=Frecuencia - -hud.msg.owner=Dueño -hud.msg.public=Público -hud.msg.restricted=Limitado -hud.msg.private=Privado - -hud.msg.white=Blanco -hud.msg.orange=Naranja -hud.msg.magenta=Magenta -hud.msg.lblue=Azul claro -hud.msg.yellow=Amarillo -hud.msg.lime=Lima -hud.msg.pink=Rosa -hud.msg.gray=Gris -hud.msg.lgray=Gris claro -hud.msg.cyan=Cian -hud.msg.purple=Púrpura -hud.msg.blue=Azul -hud.msg.brown=Marrón -hud.msg.green=Verde -hud.msg.red=Rojo -hud.msg.black=Negro - -hud.msg.health=Salud -hud.msg.growth=Crecimiento -hud.msg.mature=Maduro -hud.msg.off=Apagado -hud.msg.on=Encendido -hud.msg.state=Estado -hud.msg.delay=Retrasar -hud.msg.comparator=Comparador -hud.msg.substractor=Sustractor -hud.msg.record=Disco -hud.msg.toomuch=Demasiado... - -hud.msg.offers=Ofrecer -hud.msg.demands=Peticiones - -hud.item.melonstem=Tallo de melón -hud.item.pumpkinstem=Tallo de calabaza - -cfg.theme.dark=Oscuro - -option.appeng.monitorcontent=Contenido del monitor -option.bb.content=Contenido de Barrel -option.bc.tankamount=Cantidad de fluido -option.bc.tanktype=Tipo de fluido -option.enderstorage.colors=Colores -option.ic2.inputeumach=Entrada máxima EU [Máquinas] -option.ic2.inputeuother=Entrada máxima EU [Otro] -option.ic2.inputeu=Entrada máxima EU -option.ic2.outputeu=Salida máxima -option.ic2.storage=Energía almacenada -option.ic2.consump=Mostrar consumo -option.thaumcraft.storedvis=Almacenamiento de condensadores -option.thermalexpansion.energyhandler=Mostrar almacenamiento RF -option.thermalexpansion.energycell=Mostrar Entrada/Salida de célula energía -option.thermalexpansion.fluidtype=Mostrar tipo de fluido -option.thermalexpansion.fluidamount=Mostrar cantidad de fluido -option.thermalexpansion.tankmode=Mostrar modo de tanque -option.thermalexpansion.tesssendrecv=Tesseract modo -option.thermalexpansion.tessfreq=Tesseract frecuencia -option.thermalexpansion.owner=Mostrar dueño -option.thermalexpansion.conditemmode=Mostrar modo de Itemduct -option.vanilla.growthvalue=Valor de crecimiento -option.vanilla.leverstate=Estado de palanca -option.vanilla.repeater=Retardo del repetidor -option.vanilla.comparator=Modo comparador -option.vanilla.redstone=Poder Redstone -option.vanilla.jukebox=Disco de jukebox -option.vanilla.silverfish=Ocultar los silverfish -option.vanilla.furnacedisplay=Mostrar progreso del horno -option.etb.displaydata=Mostrar datos de socket -option.enderio.inout=Mostrar entrada/salida -option.enderio.storage=Mostrar almacenado MJ -option.enderio.owner=Mostrar dueño del bloque -option.enderio.channel=Mostrar canal hipercubo -option.bcapi.storage=Mostrar almacenado MJ -option.bcapi.consump=Mostrar energía máxima -option.bcapi.trigger=Mostrar desencadenante del energía -option.pr.showio=Mostrar puertas E/S -option.pr.showdata=Mostrar datos de puerta -option.extrautilities.fluidamount=Mostrar cantidad de fluido -option.openblocks.fluidamount=Mostrar cantidad de fluido -option.railcraft.fluidamount=Mostrar cantidad de fluido -option.secretrooms.hide=Ocultar bloques de camuflaje -option.carpenters.hide=Ocultar bloques de camuflaje -option.stevescarts.showall=Mostrar datos -option.stevescarts.colorblind=Modo daltónico -option.stevescarts.shifttoggle=Tecla de mayúscula cazonete -option.general.showents=Mostrar entidades -option.general.showhp=Mostrar salud de entidades -option.general.showcrop=Mostrar crecimiento del cultivo -option.general.registry=Mostrar información del registro -option.capability.tankinfo=Mostrar información del tanque -option.capability.energyinfo=Mostrar información de energía -option.capability.inventoryinfo=Mostrar información de inventario -option.thaumcraft.aspects=Mostrar aspectos - -nei.options.keys.showenchant=Mostrar valores del encantamientos diff --git a/src/main/resources/assets/waila/lang/et_EE b/src/main/resources/assets/waila/lang/et_EE deleted file mode 100644 index 9d9113c3..00000000 --- a/src/main/resources/assets/waila/lang/et_EE +++ /dev/null @@ -1,142 +0,0 @@ -screen.button.modules=Moodulid -screen.label.scale=Skaala -screen.label.dragtuto=Lohista HUDi, et seade üles selle positsioon. - -screen.button.default=Vaikimisi -screen.button.cancel=Tühista -screen.button.yes=Jah -screen.button.no=Ei -screen.button.back=Tagasi -screen.button.hidden=Peidetud -screen.button.visible=Nähtav -screen.button.maintained=Hooldatud -screen.button.toggled=Lülitatud - -choice.showhidewaila=Näita/Peida Waila -choice.showhideidmeta=Näita ID:Metaandmed -choice.toggledmaintained=Lülitatud/Hooldatud -choice.showliquids=Vedelikud -choice.shifttoggledblock=Hiilimis lülita blokid -choice.shifttoggledents=Hiilimis lülita entiteedid -screen.button.configureaspect=Konfigureeri aspekti... - -enchant.title.name=Nimi -enchant.title.weight=Raskus -enchant.label.enchantability=Loitsitav - -waila.keybind.wailaconfig=[Waila] Konfiguratsiooni ekraan -waila.keybind.wailadisplay=[Waila] Näita/Peida -waila.keybind.liquid=[Waila] Näita vedelikke -waila.keybind.recipe=[Waila] Näita retsepti -waila.keybind.usage=[Waila] Näita kasutamist -waila.keybind.testing=[Waila] Testimine - -client.msg.norecipe=Ühtegi retsepti ei leitud. -client.msg.nousage=Ühtegi kasutust ei leitud. - -hud.msg.none= -hud.msg.empty= -hud.msg.output=Väljund -hud.msg.input=Sisend -hud.msg.out=Välja -hud.msg.in=Sisse -hud.msg.power=Võimsus -hud.msg.storage=Hoius -hud.msg.stored=Hoiustatud -hud.msg.any=Iga -hud.msg.mode=Mood -hud.msg.maxpower=Max Võimsus - -hud.msg.send=Saada -hud.msg.recv=Võtavastu -hud.msg.item=Ese -hud.msg.fluid=Vedelik -hud.msg.energ=Energia -hud.msg.frequency=Sagedus - -hud.msg.owner=Omanik -hud.msg.public=Avalik -hud.msg.restricted=Piiratud -hud.msg.private=Privaatne - -hud.msg.white=Valge -hud.msg.orange=Oranž -hud.msg.magenta=FuksiaP -hud.msg.lblue=HSinine -hud.msg.yellow=Kollane -hud.msg.lime=Laim -hud.msg.pink=Roosa -hud.msg.gray=Hall -hud.msg.lgray=HHall -hud.msg.cyan=TsüaanS -hud.msg.purple=Lilla -hud.msg.blue=Sinine -hud.msg.brown=Pruun -hud.msg.green=Roheline -hud.msg.red=Punane -hud.msg.black=Must - -hud.msg.growth=Kasv -hud.msg.mature=Küps -hud.msg.off=Väljas -hud.msg.on=Sees -hud.msg.state=Seis -hud.msg.delay=Viivitus -hud.msg.comparator=Võrdleja -hud.msg.substractor=Substractor -hud.msg.record=Heliplaat - -hud.msg.offers=Pakkumised -hud.msg.demands=Nõudmised - -option.appeng.monitorcontent=Monitori sisu -option.bb.content=Tünni sisu -option.bc.tankamount=Vedeliku kogus -option.bc.tanktype=Vedeliku tüüp -option.enderstorage.colors=Värvid -option.ic2.inputeumach=Max EU sisend [Masinad] -option.ic2.inputeuother=Max EU sisend [Muud] -option.ic2.inputeu=Max EU sisend -option.ic2.outputeu=Max EU väljund -option.ic2.storage=Energiat hoiustatud -option.ic2.consump=Näita tarbimist -option.ic2.tradeomat=Näita Trade-O-Mati nõudmist -option.thaumcraft.storedvis=Kondensaatori hoius -option.thermalexpansion.energyhandler=Näita RF hoiust -option.thermalexpansion.energycell=Näita ECelli SISSE/VÄLJA -option.thermalexpansion.fluidtype=Näita vedeliku tüüpi -option.thermalexpansion.fluidamount=Näita vedeliku kogust -option.thermalexpansion.tankmode=Näita paagi moodi -option.thermalexpansion.tesssendrecv=Tesserakti mood -option.thermalexpansion.tessfreq=Tesserakti sagedus -option.thermalexpansion.owner=Näita omanikku -option.thermalexpansion.conditemmode=Näita Itemducti moodi -option.vanilla.spawntype=Sünnikoha tüüp -option.vanilla.growthvalue=Kasvu väärtus -option.vanilla.leverstate=Hoova olek -option.vanilla.repeater=Võimendi viivitust -option.vanilla.comparator=Võrdleja mood -option.vanilla.redstone=Punakivi võimsus -option.vanilla.jukebox=Helikasti plaat -option.vanilla.silverfish=Peida majasoomukad -option.etb.displaydata=Näita pesa andmeid -option.enderio.inout=Näita sisendit/väljundit -option.enderio.storage=Näita hoiustatud MJ-le -option.enderio.owner=Näita bloki omanikku -option.enderio.channel=Näita hüperkuubi kanalit -option.bcapi.storage=Näita hoiustatud MJ-le -option.bcapi.consump=Näita maksimaalset võimsust -option.bcapi.trigger=Näita vallandavat energiat -option.pr.showio=Näita väravate IO-d -option.pr.showdata=Näita väravate andmeid -option.extrautilities.fluidamount=Näita vedeliku kogust -option.openblocks.fluidamount=Näita vedeliku kogust -option.railcraft.fluidamount=Näita vedeliku kogust -option.secretrooms.hide=Peida kamuflaaži blokid -option.carpenters.hide=Peida kamuflaaži blokid -option.stevescarts.showall=Näita andmeid -option.stevescarts.colorblind=Värvipimeda mood -option.stevescarts.shifttoggle=Shift lülitus -option.general.showhp=Näita entiteetide elusid -option.general.showcrop=Näita põllu kasvu -option.thaumcraft.aspects=Näita aspekte diff --git a/src/main/resources/assets/waila/lang/et_EE.lang b/src/main/resources/assets/waila/lang/et_EE.lang deleted file mode 100644 index b4aa2900..00000000 --- a/src/main/resources/assets/waila/lang/et_EE.lang +++ /dev/null @@ -1,142 +0,0 @@ -screen.button.modules=Moodulid -screen.label.scale=Skaala -screen.label.dragtuto=Lohista HUDi, et seada üles selle positsioon. - -screen.button.default=Vaikimisi -screen.button.cancel=Tühista -screen.button.yes=Jah -screen.button.no=Ei -screen.button.back=Tagasi -screen.button.hidden=Peidetud -screen.button.visible=Nähtav -screen.button.maintained=Hooldatud -screen.button.toggled=Lülitatud - -choice.showhidewaila=Näita/Peida Waila -choice.showhideidmeta=Näita ID:Metaandmed -choice.toggledmaintained=Lülitatud/Hooldatud -choice.showliquids=Vedelikud -choice.shifttoggledblock=Hiilimisel lülita blokid -choice.shifttoggledents=Hiilimisel lülita entiteedid -screen.button.configureaspect=Konfigureeri aspekti... - -enchant.title.name=Nimi -enchant.title.weight=Raskus -enchant.label.enchantability=Loitsitav - -waila.keybind.wailaconfig=[Waila] Konfiguratsiooni ekraan -waila.keybind.wailadisplay=[Waila] Näita/Peida -waila.keybind.liquid=[Waila] Näita vedelikke -waila.keybind.recipe=[Waila] Näita retsepti -waila.keybind.usage=[Waila] Näita kasutamist -waila.keybind.testing=[Waila] Testimine - -client.msg.norecipe=Ühtegi retsepti ei leitud. -client.msg.nousage=Ühtegi kasutust ei leitud. - -hud.msg.none= -hud.msg.empty= -hud.msg.output=Väljund -hud.msg.input=Sisend -hud.msg.out=Välja -hud.msg.in=Sisse -hud.msg.power=Võimsus -hud.msg.storage=Hoius -hud.msg.stored=Hoiustatud -hud.msg.any=Iga -hud.msg.mode=Mood -hud.msg.maxpower=Max Võimsus - -hud.msg.send=Saada -hud.msg.recv=Võtavastu -hud.msg.item=Ese -hud.msg.fluid=Vedelik -hud.msg.energ=Energia -hud.msg.frequency=Sagedus - -hud.msg.owner=Omanik -hud.msg.public=Avalik -hud.msg.restricted=Piiratud -hud.msg.private=Privaatne - -hud.msg.white=Valge -hud.msg.orange=Oranž -hud.msg.magenta=FuksiaP -hud.msg.lblue=HSinine -hud.msg.yellow=Kollane -hud.msg.lime=Laim -hud.msg.pink=Roosa -hud.msg.gray=Hall -hud.msg.lgray=HeleHall -hud.msg.cyan=TsüaanS -hud.msg.purple=Lilla -hud.msg.blue=Sinine -hud.msg.brown=Pruun -hud.msg.green=Roheline -hud.msg.red=Punane -hud.msg.black=Must - -hud.msg.growth=Kasv -hud.msg.mature=Küps -hud.msg.off=Väljas -hud.msg.on=Sees -hud.msg.state=Seis -hud.msg.delay=Viivitus -hud.msg.comparator=Võrdleja -hud.msg.substractor=Substractor -hud.msg.record=Heliplaat - -hud.msg.offers=Pakkumised -hud.msg.demands=Nõudmised - -option.appeng.monitorcontent=Monitori sisu -option.bb.content=Tünni sisu -option.bc.tankamount=Vedeliku kogus -option.bc.tanktype=Vedeliku tüüp -option.enderstorage.colors=Värvid -option.ic2.inputeumach=Max EU sisend [Masinad] -option.ic2.inputeuother=Max EU sisend [Muud] -option.ic2.inputeu=Max EU sisend -option.ic2.outputeu=Max EU väljund -option.ic2.storage=Energiat hoiustatud -option.ic2.consump=Näita tarbimist -option.ic2.tradeomat=Näita Trade-O-Mati nõudmist -option.thaumcraft.storedvis=Kondensaatori hoius -option.thermalexpansion.energyhandler=Näita RF hoiust -option.thermalexpansion.energycell=Näita ECelli SISSE/VÃLJA -option.thermalexpansion.fluidtype=Näita vedeliku tüüpi -option.thermalexpansion.fluidamount=Näita vedeliku kogust -option.thermalexpansion.tankmode=Näita paagi moodi -option.thermalexpansion.tesssendrecv=Tesserakti mood -option.thermalexpansion.tessfreq=Tesserakti sagedus -option.thermalexpansion.owner=Näita omanikku -option.thermalexpansion.conditemmode=Näita Itemducti moodi -option.vanilla.spawntype=Sünnikoha tüüp -option.vanilla.growthvalue=Kasvu väärtus -option.vanilla.leverstate=Hoova olek -option.vanilla.repeater=Võimendi viivitust -option.vanilla.comparator=Võrdleja mood -option.vanilla.redstone=Punakivi võimsus -option.vanilla.jukebox=Helikasti plaat -option.vanilla.silverfish=Peida majasoomukad -option.etb.displaydata=Näita pesa andmeid -option.enderio.inout=Näita sisendit/väljundit -option.enderio.storage=Näita hoiustatud MJ-le -option.enderio.owner=Näita bloki omanikku -option.enderio.channel=Näita hüperkuubi kanalit -option.bcapi.storage=Näita hoiustatud MJ-le -option.bcapi.consump=Näita maksimaalset võimsust -option.bcapi.trigger=Näita vallandavat energiat -option.pr.showio=Näita väravate IO-d -option.pr.showdata=Näita väravate andmeid -option.extrautilities.fluidamount=Näita vedeliku kogust -option.openblocks.fluidamount=Näita vedeliku kogust -option.railcraft.fluidamount=Näita vedeliku kogust -option.secretrooms.hide=Peida kamuflaaži blokid -option.carpenters.hide=Peida kamuflaaži blokid -option.stevescarts.showall=Näita andmeid -option.stevescarts.colorblind=Värvipimeda mood -option.stevescarts.shifttoggle=Shift lülitus -option.general.showhp=Näita entiteetide elusid -option.general.showcrop=Näita põllu kasvu -option.thaumcraft.aspects=Näita aspekte diff --git a/src/main/resources/assets/waila/lang/fr_FR.lang b/src/main/resources/assets/waila/lang/fr_FR.lang deleted file mode 100644 index 9f293234..00000000 --- a/src/main/resources/assets/waila/lang/fr_FR.lang +++ /dev/null @@ -1,124 +0,0 @@ -screen.label.scale=Echelle -screen.label.dragtuto=Faites glisser le HUD pour paramétrer la position. - -screen.button.default=Défaut -screen.button.cancel=Annuler -screen.button.yes=Oui -screen.button.no=Non -screen.button.back=Retour -screen.button.hidden=Masquer -screen.button.visible=Afficher -screen.button.maintained=Maintenu -screen.button.toggled=Switché - -choice.showhidewaila=Afficher/Masquer Waila -choice.showhideidmeta=Afficher ID:Metadata -choice.toggledmaintained= Switché/Maintenu -choice.showliquids=Liquides -screen.button.configureaspect=Configurer l'aspect… - -enchant.title.name=Nom -enchant.title.weight=Poids -enchant.label.enchantability=Enchantabilitée - -waila.keybind.wailaconfig=[Waila] Ecran de config -waila.keybind.wailadisplay=[Waila] Afficher/Masquer -waila.keybind.liquid=[Waila] Afficher les liquides -waila.keybind.recipe=[Waila] Afficher les recettes -waila.keybind.usage=[Waila] Afficher l'utilisation - -client.msg.norecipe=Pas de recette trouvée. -client.msg.nousage=Pas d'utilisation trouvée. - -hud.msg.none= -hud.msg.empty= -hud.msg.output=Sortie -hud.msg.input=Entrée -hud.msg.out=Sortie -hud.msg.in=Entrée -hud.msg.power=Energie -hud.msg.storage=Stockage -hud.msg.stored=Stocké -hud.msg.any=Tout -hud.msg.maxpower=Max Puissance -hud.msg.trigger=Déclencheur -hud.msg.maxio=Max Entrée/Sortie - -hud.msg.send=Envoyer -hud.msg.recv=Recevoir -hud.msg.item=Objet -hud.msg.fluid=Fluide -hud.msg.energ=Energie -hud.msg.frequency=Fréquence - -hud.msg.owner=Propriétaire -hud.msg.public=Publique -hud.msg.restricted=Limité -hud.msg.private=Privée - -hud.msg.white=Blanc -hud.msg.magenta=Magenta -hud.msg.lblue=Bleu clair -hud.msg.yellow=Jaune -hud.msg.lime=Vert clair -hud.msg.pink=Rose -hud.msg.gray=Gris -hud.msg.lgray=Gris clair -hud.msg.cyan=Cyan -hud.msg.purple=Violet -hud.msg.blue=Bleu -hud.msg.brown=Marron -hud.msg.green=Vert -hud.msg.red=Rouge -hud.msg.black=Noir - -hud.msg.growth=Croissance -hud.msg.state=Etat -hud.msg.delay=Retard -hud.msg.comparator=Comparateur -hud.msg.substractor=Soustracteur -hud.msg.record=Disque - -hud.msg.offers=Offre -hud.msg.demands=Demande - -option.appeng.monitorcontent=Contenu des écrans -option.bb.content=Contenu des barils -option.bc.tankamount=Niveau de liquide -option.bc.tanktype=Sorte de liquide -option.enderstorage.colors=Couleurs -option.ic2.inputeumach=Max EU en entrée [Machines] -option.ic2.inputeuother=Max EU en entrée [Autres] -option.ic2.inputeu=Max EU en entrée -option.ic2.outputeu=Max EU en sortie -option.ic2.storage=Energie stockée -option.ic2.consump=Afficher consommation -option.thaumcraft.storedvis=Condensateur de stockage -option.thermalexpansion.energyhandler=Afficher stockage RF -option.thermalexpansion.energycell=Afficher ECell Entrée/Sortie -option.thermalexpansion.fluidtype=Afficher sorte fluides -option.thermalexpansion.fluidamount=Afficher niveau fluides -option.thermalexpansion.tankmode=Afficher mode Réservoir -option.thermalexpansion.tesssendrecv=Tesseract mode -option.thermalexpansion.tessfreq=Tesseract fréquence -option.thermalexpansion.owner=Afficher propriétaire -option.thermalexpansion.conditemmode=Afficher Itemduct mode -option.vanilla.growthvalue=Niveau de croissance -option.vanilla.leverstate=Etat Levier -option.vanilla.repeater=Répeteur retard -option.vanilla.comparator=Comparateur mode -option.vanilla.redstone=Redstone puissance -option.vanilla.jukebox=Jukebox disque -option.etb.displaydata=Afficher données socket -option.enderio.inout=Afficher Entrée/Sortie -option.enderio.storage=Afficher MJ stocké -option.enderio.owner=Afficher propriétaire du bloc -option.enderio.channel=Afficher hypercube canal -option.bcapi.storage=Afficher MJ stocké -option.bcapi.consump=Afficher puissance maximale -option.bcapi.trigger=Energie déclanchement -option.pr.showio=Afficher plaques IO -option.pr.showdata=Afficher plaques data -option.extrautilities.fluidamount=Afficher niveau fluides -option.openblocks.fluidamount=Afficher niveau fluides -option.railcraft.fluidamount=Afficher niveau fluides diff --git a/src/main/resources/assets/waila/lang/it_IT.lang b/src/main/resources/assets/waila/lang/it_IT.lang deleted file mode 100644 index 7ccb365d..00000000 --- a/src/main/resources/assets/waila/lang/it_IT.lang +++ /dev/null @@ -1,143 +0,0 @@ -screen.button.modules=Moduli -screen.label.scale=Scala -screen.label.dragtuto=Trascina il HUD per selezionare la sua posizione. - -screen.button.cancel=Cancella -screen.button.yes=Si -screen.button.back=Indietro -screen.button.hidden=Nascosto -screen.button.visible=Visibile -screen.button.maintained=Mantenuto -screen.button.toggled=Premuto - -choice.showhidewaila=Mostra/Nascondi Waila -choice.showhideidmeta=Mostra ID:Metadata -choice.toggledmaintained=Premuto/Mantenuto -choice.showliquids=Liquidi -choice.shifttoggledblock=Shift premuto per blocchi -choice.shifttoggledents=Shift premuto per entità -screen.button.configureaspect=Configura aspetti... - -enchant.title.name=Nome -enchant.title.minlvl=lvl min -enchant.title.maxlvl=lvl max -enchant.title.weight=Peso -enchant.label.enchantability=Incantabilità - -waila.keybind.wailaconfig=[Waila] Config menù -waila.keybind.wailadisplay=[Waila] Mostra/Nascondi -waila.keybind.liquid=[Waila] Mostra liquidi -waila.keybind.recipe=[Waila] Mostra ricetta -waila.keybind.usage=[Waila] Mostra uso -waila.keybind.testing=[Waila] Provare - -client.msg.norecipe=Nessuna ricetta trovata. -client.msg.nousage=Nessun uso trovato. - -hud.msg.none= -hud.msg.empty= -hud.msg.output=Uscita -hud.msg.input=Entrata -hud.msg.out=Fuori -hud.msg.in=Dentro -hud.msg.power=Corrente -hud.msg.storage=Contenitore -hud.msg.stored=Contenuto -hud.msg.any=Qualunque -hud.msg.mode=Modalità -hud.msg.maxpower=Corrente massima -hud.msg.trigger=Innescare -hud.msg.maxio=IO Massimo - -hud.msg.send=Manda -hud.msg.recv=Riceve -hud.msg.item=Oggetto -hud.msg.fluid=Fluido -hud.msg.energ=Corrente -hud.msg.frequency=Frequenza - -hud.msg.owner=Proprietario -hud.msg.public=Pubblico -hud.msg.restricted=Restretto -hud.msg.private=Privato - -hud.msg.white=Bianco -hud.msg.orange=Arancione -hud.msg.magenta=Magenta -hud.msg.lblue=Azzurro -hud.msg.yellow=Giallo -hud.msg.pink=Rosa -hud.msg.gray=Grigio -hud.msg.lgray=Grigio chiaro -hud.msg.cyan=Ciano -hud.msg.purple=Viola -hud.msg.blue=Blu -hud.msg.brown=Marrone -hud.msg.green=Verde -hud.msg.red=Rosso -hud.msg.black=Nero - -hud.msg.growth=Crescita -hud.msg.mature=Maturo -hud.msg.off=Attivo -hud.msg.on=Disattivato -hud.msg.state=Stato -hud.msg.delay=Ritardo -hud.msg.comparator=Comparatore -hud.msg.substractor=Substrattore -hud.msg.record=Disco - -hud.msg.offers=Offre -hud.msg.demands=Pretende - -option.appeng.monitorcontent=Contenuto del monitor -option.bb.content=Contenuto del barile -option.bc.tankamount=Quantità liquido -option.bc.tanktype=Tipo di liquido -option.enderstorage.colors=Colori -option.ic2.inputeumach=Entrata massima EU [Macchinari] -option.ic2.inputeuother=Entrata massima EU [Altro] -option.ic2.inputeu=Entrata massima EU -option.ic2.outputeu=Uscita massima EU -option.ic2.storage=Corrente conservata -option.ic2.consump=Mostra consumo -option.ic2.tradeomat=Mostra richiesta del Trade-O-Mat -option.thaumcraft.storedvis=Vis conservato -option.thermalexpansion.energyhandler=Mostra RF conservata -option.thermalexpansion.energycell=Mostra cella entrata/uscita -option.thermalexpansion.fluidtype=Mostra tipo di liquido -option.thermalexpansion.fluidamount=Mostra quantità di liquido -option.thermalexpansion.tankmode=Mostra modalità cisterna -option.thermalexpansion.tesssendrecv=Modalità tesseract -option.thermalexpansion.tessfreq=Frequenza tesseract -option.thermalexpansion.owner=Mostra proprietario -option.thermalexpansion.conditemmode=Modalità mostra Itemduct -option.vanilla.spawntype=Tipo di generatore -option.vanilla.growthvalue=Valore crescita -option.vanilla.leverstate=Stato leva -option.vanilla.repeater=Ritardo ripetitore -option.vanilla.comparator=Modalità comparatore -option.vanilla.redstone=Energia pietrarossa -option.vanilla.jukebox=Disco Jukebox -option.vanilla.silverfish=Nascondi Pesciolini d'argento -option.etb.displaydata=Mostra socket data -option.enderio.inout=Mostra entrata/uscita -option.enderio.storage=Mostra MJ conservato -option.enderio.owner=Mostra proprietario del blocco -option.enderio.channel=Mostra canale del hypercube -option.bcapi.storage=Mostra MJ conservato -option.bcapi.consump=Mostra corrente massima -option.bcapi.trigger=Mostra energia innescata -option.pr.showio=Mostra IO gate -option.pr.showdata=Mostra gate data -option.extrautilities.fluidamount=Mostra quantità di liquido -option.openblocks.fluidamount=Mostra quantità di liquido -option.railcraft.fluidamount=Mostra quantità di liquido -option.secretrooms.hide=Nascondi blocchi camuffati -option.carpenters.hide=Nascondi blocchi camuffati -option.stevescarts.showall=Mostra data -option.stevescarts.colorblind=Modalità daltonico -option.stevescarts.shifttoggle=Scambia stato -option.general.showhp=Mostra vita dell'entità -option.general.showcrop=Mostra crescita delle piante -option.thaumcraft.aspects=Mostra aspetti diff --git a/src/main/resources/assets/waila/lang/nl_NL.lang b/src/main/resources/assets/waila/lang/nl_NL.lang deleted file mode 100644 index da7b1e9f..00000000 --- a/src/main/resources/assets/waila/lang/nl_NL.lang +++ /dev/null @@ -1,110 +0,0 @@ -screen.label.scale=Schaal -screen.label.dragtuto=Sleep de HUD om zijn positie in te stellen. - -screen.button.default=Standaard -screen.button.cancel=Annuleren -screen.button.yes=Ja -screen.button.no=Nee -screen.button.back=Terug -screen.button.hidden=Verborgen -screen.button.visible=Zichtbaar -screen.button.maintained=Gehandhaafd -screen.button.toggled=Omgeschakeld - -choice.showhidewaila=Toon/Verberg Waila -choice.showhideidmeta=Toon ID:Metadata -choice.toggledmaintained=Omgeschakeld/Gehandhaafd -choice.showliquids=Vloeistoffen -screen.button.configureaspect=Configureer aspect... - -enchant.title.name=Naam -enchant.title.weight=Gewicht -enchant.label.enchantability=Enchantbaarheid - -keybind.configscreen=[Waila] Configuratiescherm -keybind.showhide=[Waila] Toon/Verberg -keybind.showliquid=[Waila] Toon vloeistoffen -keybind.showrecipe=[Waila] Toon recepten -keybind.showusage=[Waila] Toon gebruik -keybind.testing=[Waila] Testen - -client.msg.norecipe=Geen recept gevonden. -client.msg.nousage=Geen gebruik gevonden. - -hud.msg.none= -hud.msg.empty= -hud.msg.output=Uitvoer -hud.msg.input=Invoer -hud.msg.out=Uit -hud.msg.power=Vermogen -hud.msg.storage=Opslag -hud.msg.any=Om het even welke -hud.msg.mode=Modus - -hud.msg.send=Zend -hud.msg.recv=Ontv -hud.msg.fluid=Vloeistof -hud.msg.energ=Energie -hud.msg.frequency=Frequentie - -hud.msg.owner=Eigenaar -hud.msg.public=Publiek -hud.msg.restricted=Begrensd -hud.msg.private=Privé - -hud.msg.white=Wit -hud.msg.orange=Oranje -hud.msg.magenta=Magenta -hud.msg.lblue=LBlauw -hud.msg.yellow=Geel -hud.msg.lime=Limoen -hud.msg.pink=Roze -hud.msg.gray=Grijs -hud.msg.lgray=LGrijs -hud.msg.cyan=Cyaan -hud.msg.purple=Paars -hud.msg.blue=Blauw -hud.msg.brown=Bruin -hud.msg.green=Groen -hud.msg.red=Rood -hud.msg.black=Zwart - -hud.msg.growth=Groei -hud.msg.mature=Volwassen -hud.msg.off=Af -hud.msg.on=Aan -hud.msg.state=Status -hud.msg.delay=Vertraging -hud.msg.comparator=Vergelijker -hud.msg.substractor=Aftrekker -hud.msg.record=Neem op - -option.appeng.monitorcontent=Scherm inhoud -option.bb.content=Ton inhoud -option.bc.tankamount=Vloeistofhoeveelheid -option.bc.tanktype=Vloeistoftype -option.enderstorage.colors=Kleuren -option.ic2.inputeumach=Max EU invoer [Machines] -option.ic2.inputeuother=Max EU invoer [Andere] -option.ic2.inputeu=Max EU invoer -option.ic2.outputeu=Max EU uitvoer -option.ic2.storage=Opgeslagen energie -option.thaumcraft.storedvis=Condensator opslag -option.thermalexpansion.energyhandler=Toon RF opslag -option.thermalexpansion.energycell=Toon ECell IN/UIT -option.thermalexpansion.fluidtype=Toon vloeistoftype -option.thermalexpansion.fluidamount=Toon vloeistofhoeveelheid -option.thermalexpansion.tankmode=Toon tank modus -option.thermalexpansion.tesssendrecv=Tesseract modus -option.thermalexpansion.tessfreq=Tesseract frequentie -option.thermalexpansion.owner=Toon eigenaar -option.vanilla.spawntype=Spawner type -option.vanilla.growthvalue=Groei hoeveelheid -option.vanilla.leverstate=Hendel status -option.vanilla.repeater=Herhaler vertraging -option.vanilla.comparator=Vergelijker modus -option.vanilla.redstone=Redstone vermogen -option.vanilla.jukebox=Jukebox schijf -option.extrautilities.fluidamount=Toon vloeistofhoeveelheid -option.openblocks.fluidamount=Toon vloeistofhoeveelheid -option.railcraft.fluidamount=Toon vloeistofhoeveelheid diff --git a/src/main/resources/assets/waila/lang/ru_RU.lang b/src/main/resources/assets/waila/lang/ru_RU.lang index c06801dc..e543b418 100644 --- a/src/main/resources/assets/waila/lang/ru_RU.lang +++ b/src/main/resources/assets/waila/lang/ru_RU.lang @@ -65,6 +65,12 @@ hud.msg.offers=Предложения hud.msg.demands=Запросы hud.msg.career=Карьера: %s +hud.ic2.msg.stored=Хранится +hud.ic2.msg.output=Вывод + +hud.te.msg.stored=Хранится +hud.te.msg.capacity=Объём + hud.item.melonstem=Стебель дыни hud.item.pumpkinstem=Стебель арбуза diff --git a/src/main/resources/assets/waila/lang/zh_CN.lang b/src/main/resources/assets/waila/lang/zh_CN.lang deleted file mode 100644 index 719d3277..00000000 --- a/src/main/resources/assets/waila/lang/zh_CN.lang +++ /dev/null @@ -1,89 +0,0 @@ -screen.button.waila=Waila -screen.button.modules=模块 -screen.label.scale=缩放 -screen.label.dragtuto=拖拽 HUD 为其设置位置。 - -screen.button.default=默认 -screen.button.cancel=取消 -screen.button.ok=确定 -screen.button.yes=是 -screen.button.no=否 -screen.button.back=返回 -screen.button.hidden=隐藏 -screen.button.visible=可见 -screen.button.maintained=保持 -screen.button.toggled=切换 -screen.hwyla.warning=§c注意:§r你现在使用的是 Waila 的一个 fork,叫做 Hwyla。点击当前界面左下角的按钮可以获得完整的变更列表。 - -choice.showhidewaila=显示/隐藏Waila -choice.showhideidmeta=显示 ID:Metadata -choice.toggledmaintained=切换/保持显示信息 -choice.showliquids=流体 -choice.shifttoggledblock=潜行切换方块信息 -choice.shifttoggledents=潜行切换实体信息 -choice.hidefromlist=在显示玩家列表时隐藏 -choice.showitem=显示物品 -choice.tts=朗读方块信息 -choice.format.modname=Mod 名称 -choice.format.blockname=方块名称 -choice.format.fluidname=流体名称 -choice.format.entityname=实体名称 -choice.format.metadata=Metadata -choice.format.background=背景颜色 -choice.format.gradienttop=顶部色彩梯度 -choice.format.gradientbottom=底部色彩梯度 -choice.format.font=文本颜色 -screen.button.configureaspect=自定义外观…… -screen.button.configureformat=格式内容…… -screen.button.exporttheme=导出主题 - -waila.keybind.wailaconfig=配置屏幕 -waila.keybind.wailadisplay=显示/隐藏 -waila.keybind.liquid=显示流体 -waila.keybind.recipe=显示合成 -waila.keybind.usage=显示可参与合成 - -client.msg.norecipe=没有找到配方。 -client.msg.nousage=没有找到用途。 - -hud.msg.empty=<空> -hud.msg.health=生命值 -hud.msg.growth=生长状态 -hud.msg.growth.value=%.0f %% -hud.msg.mature=成熟 -hud.msg.off=关 -hud.msg.on=开 -hud.msg.state=状态 -hud.msg.delay=延迟 -hud.msg.comparator=比较器 -hud.msg.substractor=减法器 -hud.msg.record=记录 -hud.msg.toomuch=太多了…… -hud.msg.power=能量 -hud.msg.offers=提供 -hud.msg.demands=需求 -hud.msg.career=职业:%s - -hud.item.melonstem=西瓜梗 -hud.item.pumpkinstem=南瓜梗 - -cfg.theme.vanilla=原版 -cfg.theme.dark=暗色 - -option.vanilla.spawntype=刷怪笼类型 -option.vanilla.growthvalue=生长状态 -option.vanilla.leverstate=拉杆状态 -option.vanilla.repeater=中继器延时 -option.vanilla.comparator=比较器模式 -option.vanilla.redstone=红石充能 -option.vanilla.jukebox=唱片内容 -option.vanilla.silverfish=隐藏蠹虫 -option.vanilla.furnacedisplay=显示熔炉进度 -option.general.showents=显示实体 -option.general.showhp=显示实体生命值 -option.general.showcrop=显示作物生长状态 -option.general.registry=显示注册信息 -option.capability.tankinfo=显示储罐信息 -option.capability.energyinfo=显示能量信息 - -nei.options.keys.showenchant=显示附魔数据 From e2ec9c47a21bdd95ad7eca40d5dd3b6d02ac497b Mon Sep 17 00:00:00 2001 From: Ognev Anton Date: Tue, 18 Feb 2025 00:41:56 +0700 Subject: [PATCH 03/16] [refactor] change module register --- .../java/mcp/mobius/waila/addons/ic2/IC2Module.java | 8 +++----- .../thermalexpansion/ThermalExpansionModule.java | 13 +++---------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java index d0b67064..7229c012 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java @@ -4,6 +4,7 @@ import mcp.mobius.waila.api.IWailaPlugin; import mcp.mobius.waila.api.IWailaRegistrar; import mcp.mobius.waila.api.WailaPlugin; +import net.minecraftforge.fml.common.Loader; import java.lang.reflect.Field; @@ -18,6 +19,7 @@ public class IC2Module implements IWailaPlugin { @Override public void register(IWailaRegistrar registrar) { + if (!Loader.isModLoaded("ic2")) return; try { generator = Class.forName("ic2.core.block.base.tile.TileEntityGeneratorBase"); generatorStorage = generator.getDeclaredField("storage"); @@ -32,11 +34,7 @@ public void register(IWailaRegistrar registrar) { registrar.addConfig("Industrial Craft 2", "ic2.outputeu", true); } catch (Exception e) { - if (e instanceof ClassNotFoundException) { - Waila.LOGGER.info("[Industrial Craft 2] IndustrialCraft 2 mod not found."); - } else { - Waila.LOGGER.warn("[Industrial Craft 2] Error while loading generator hooks. {}", e); - } + Waila.LOGGER.warn("[Industrial Craft 2] Error while loading generator hooks. {}", e); } } } diff --git a/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java b/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java index 150a9a6e..90af3250 100644 --- a/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java +++ b/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java @@ -5,22 +5,21 @@ import mcp.mobius.waila.api.IWailaRegistrar; import mcp.mobius.waila.api.WailaPlugin; import net.minecraft.nbt.NBTTagCompound; +import net.minecraftforge.fml.common.Loader; import java.lang.reflect.Method; @WailaPlugin public class ThermalExpansionModule implements IWailaPlugin { - /* CoFH Helpers */ public static Class cofhItemHelper = null; public static Method readItemStackFromNBT = null; - public static Class tileCache = null; public static Method tileCacheGetStored = null; - public void register(IWailaRegistrar registrar) { + if (!Loader.isModLoaded("thermalexpansion") || !Loader.isModLoaded("cofhcore")) return; try { cofhItemHelper = Class.forName("cofh.core.util.helpers.ItemHelper"); readItemStackFromNBT = cofhItemHelper.getMethod("readItemStackFromNBT", NBTTagCompound.class); @@ -35,13 +34,7 @@ public void register(IWailaRegistrar registrar) { registrar.addConfig("Thermal Expansion", "thermalexpansion.cache"); } catch (Exception e) { - if (e instanceof ClassNotFoundException) { - Waila.LOGGER.info("[Thermal Expansion] Thermal Expansion mod not found."); - - } else { - Waila.LOGGER.warn("[Thermal Expansion] Error while loading store cache hooks. {}", e); - } + Waila.LOGGER.warn("[Thermal Expansion] Error while loading store cache hooks. {}", e); } } - } From 9b7fa3236e3b69836113c79b1410fbcf779b7c46 Mon Sep 17 00:00:00 2001 From: Ognev Anton Date: Tue, 18 Feb 2025 01:35:11 +0700 Subject: [PATCH 04/16] [refactor] revert lang files/addon exceptions --- .../addons/ic2/HUDHandlerTEGenerator.java | 4 +- .../mobius/waila/addons/ic2/IC2Module.java | 2 +- .../thermalexpansion/HUDHandlerCache.java | 3 +- .../ThermalExpansionModule.java | 2 +- .../resources/assets/waila/lang/cs_CZ.lang | 146 +++++++++++++++ .../resources/assets/waila/lang/de_DE.lang | 90 ++++++++++ .../resources/assets/waila/lang/es_ES.lang | 167 ++++++++++++++++++ src/main/resources/assets/waila/lang/et_EE | 142 +++++++++++++++ .../resources/assets/waila/lang/et_EE.lang | 142 +++++++++++++++ .../resources/assets/waila/lang/fr_FR.lang | 124 +++++++++++++ .../resources/assets/waila/lang/it_IT.lang | 143 +++++++++++++++ .../resources/assets/waila/lang/nl_NL.lang | 110 ++++++++++++ .../resources/assets/waila/lang/zh_CN.lang | 89 ++++++++++ 13 files changed, 1158 insertions(+), 6 deletions(-) create mode 100644 src/main/resources/assets/waila/lang/cs_CZ.lang create mode 100644 src/main/resources/assets/waila/lang/de_DE.lang create mode 100644 src/main/resources/assets/waila/lang/es_ES.lang create mode 100644 src/main/resources/assets/waila/lang/et_EE create mode 100644 src/main/resources/assets/waila/lang/et_EE.lang create mode 100644 src/main/resources/assets/waila/lang/fr_FR.lang create mode 100644 src/main/resources/assets/waila/lang/it_IT.lang create mode 100644 src/main/resources/assets/waila/lang/nl_NL.lang create mode 100644 src/main/resources/assets/waila/lang/zh_CN.lang diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java index 53208f87..72872096 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java @@ -38,7 +38,7 @@ public List getWailaBody(ItemStack itemStack, List currenttip, I if (maxStorage > 0) { ((ITaggedList) currenttip) .add(String.format( - "%s \u00a7f%d\u00a7r / \u00a7f%d\u00a7r EU", + "%s §f%d§r / §f%d§r EU", storedStr, Math.round(Math.min(storage, maxStorage)), maxStorage @@ -46,7 +46,7 @@ public List getWailaBody(ItemStack itemStack, List currenttip, I } if (config.getConfig("ic2.outputeu")) { - currenttip.add(String.format("%s \u00a7f%d \u00a7r EU/t", outputStr, production)); + currenttip.add(String.format("%s §f%d §r EU/t", outputStr, production)); } return currenttip; diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java index 7229c012..0ac5db01 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java @@ -34,7 +34,7 @@ public void register(IWailaRegistrar registrar) { registrar.addConfig("Industrial Craft 2", "ic2.outputeu", true); } catch (Exception e) { - Waila.LOGGER.warn("[Industrial Craft 2] Error while loading generator hooks. {}", e); + Waila.LOGGER.warn("[Industrial Craft 2] Error while loading generator hooks.", e); } } } diff --git a/src/main/java/mcp/mobius/waila/addons/thermalexpansion/HUDHandlerCache.java b/src/main/java/mcp/mobius/waila/addons/thermalexpansion/HUDHandlerCache.java index 9638e614..fd8e39ad 100644 --- a/src/main/java/mcp/mobius/waila/addons/thermalexpansion/HUDHandlerCache.java +++ b/src/main/java/mcp/mobius/waila/addons/thermalexpansion/HUDHandlerCache.java @@ -36,10 +36,9 @@ public List getWailaHead(ItemStack itemStack, List currenttip, I String name = currenttip.get(0); String color = ""; - if (name.startsWith("\u00a7")) color = name.substring(0, 2); + if (name.startsWith("§")) color = name.substring(0, 2); if (storedItem != null) { - ; name += String.format(color + " < %s >", storedItem.getDisplayName()); } else name += " " + "EMPTY"; diff --git a/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java b/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java index 90af3250..41ccbc26 100644 --- a/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java +++ b/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java @@ -34,7 +34,7 @@ public void register(IWailaRegistrar registrar) { registrar.addConfig("Thermal Expansion", "thermalexpansion.cache"); } catch (Exception e) { - Waila.LOGGER.warn("[Thermal Expansion] Error while loading store cache hooks. {}", e); + Waila.LOGGER.warn("[Thermal Expansion] Error while loading store cache hooks.", e); } } } diff --git a/src/main/resources/assets/waila/lang/cs_CZ.lang b/src/main/resources/assets/waila/lang/cs_CZ.lang new file mode 100644 index 00000000..18f0560b --- /dev/null +++ b/src/main/resources/assets/waila/lang/cs_CZ.lang @@ -0,0 +1,146 @@ +screen.button.modules=Moduly +screen.label.scale=Mìøítko +screen.label.dragtuto=Chytni HUD pro nastavení jeho pozice. + +screen.button.default=Defaultní +screen.button.cancel=Zrušit +screen.button.yes=Ano +screen.button.no=Ne +screen.button.back=Zpìt +screen.button.hidden=Skrytý +screen.button.visible=Viditelný +screen.button.maintained=Spravované +screen.button.toggled=Pøepnuté + +choice.showhidewaila=Zobrazit/Skrýt Wailu +choice.showhideidmeta=Zobrazit ID:Metadata +choice.toggledmaintained=Pøepnuté/Spravované +choice.showliquids=Tekutiny +choice.shifttoggledblock=Pliž se pro pøepnutí blokù +choice.shifttoggledents=Pliž se pro pøepnutí entit +screen.button.configureaspect=Nastavení vzhledu... + +enchant.title.name=Jméno +enchant.title.minlvl=Minimální lvl +enchant.title.maxlvl=Maximální lvl +enchant.title.weight=Hmotnost +enchant.label.enchantability=Oèarovatelnost + +waila.keybind.wailaconfig=[Waila] Nastavení obrazu +waila.keybind.wailadisplay=[Waila] Zobrazit/Skrýt +waila.keybind.liquid=[Waila] Zobrazit tekutiny +waila.keybind.recipe=[Waila] Zobrazit recept +waila.keybind.usage=[Waila] Zobrazit použití +waila.keybind.testing=[Waila] Testování + +client.msg.norecipe=Nenalezen žádný recept. +client.msg.nousage=Nenalezeno žádné využití. + +hud.msg.none= +hud.msg.empty= +hud.msg.output=Výstup +hud.msg.input=Vstup +hud.msg.out=Ven +hud.msg.in=Dovnitø +hud.msg.power=Energie +hud.msg.storage=Úložištì +hud.msg.stored=Uloženo +hud.msg.any=Jakýkoliv +hud.msg.mode=Mód +hud.msg.maxpower=Maximální Energie +hud.msg.trigger=Spouštìè +hud.msg.maxio=Maximální propustnost + +hud.msg.send=Odeslat +hud.msg.recv=Obdržet +hud.msg.item=Pøedmìt +hud.msg.fluid=Tekutina +hud.msg.energ=Energie +hud.msg.frequency=Frekvence + +hud.msg.owner=Vlastník +hud.msg.public=Veøejné +hud.msg.restricted=Omezené +hud.msg.private=Soukromé + +hud.msg.white=Bílá +hud.msg.orange=Oranžová +hud.msg.magenta=Purpurová +hud.msg.lblue=Svìtle modrá +hud.msg.yellow=Žlutá +hud.msg.lime=Svìtle zelená +hud.msg.pink=Rùžová +hud.msg.gray=Šedá +hud.msg.lgray=Svìtle šedá +hud.msg.cyan=Tyrkysová +hud.msg.purple=Fialová +hud.msg.blue=Modrá +hud.msg.brown=Hnìdá +hud.msg.green=Zelená +hud.msg.red=Èervená +hud.msg.black=Èerná + +hud.msg.growth=Rùst +hud.msg.mature=Stáøí +hud.msg.off=Vypnuto +hud.msg.on=Zapnuto +hud.msg.state=Stav +hud.msg.delay=Prodleva +hud.msg.comparator=Porovnávaè +hud.msg.substractor=Substraktor +hud.msg.record=Záznam + +hud.msg.offers=Poskytuje +hud.msg.demands=Požaduje + +option.appeng.monitorcontent=Obsah monitoru +option.bb.content=Obsah barelu +option.bc.tankamount=Množství tekutiny +option.bc.tanktype=Typ tekutiny +option.enderstorage.colors=Barvy +option.ic2.inputeumach=Maximální pøíjem EU [Stroje] +option.ic2.inputeuother=Maximální pøíjem EU [Ostatní] +option.ic2.inputeu=Maximální pøijem EU +option.ic2.outputeu=Maximální výstup EU +option.ic2.storage=Uloženo energie +option.ic2.consump=Zobrazit spotøebu +option.ic2.tradeomat=Zobrazit Trade-O-Mat požadavek +option.thaumcraft.storedvis=Úložištì kondenzátoru +option.thermalexpansion.energyhandler=Zobrazit úložištì RF +option.thermalexpansion.energycell=Zobrazit ECell VSTUP/VÝSTUP +option.thermalexpansion.fluidtype=Zobrazit typ tekutiny +option.thermalexpansion.fluidamount=Zobrazit množství tekutiny +option.thermalexpansion.tankmode=Zobrazit mód nádrže +option.thermalexpansion.tesssendrecv=Tesseract mode +option.thermalexpansion.tessfreq=Frekvence Teseraktu +option.thermalexpansion.owner=Zobrazit majitele +option.thermalexpansion.conditemmode=Zobrazit mód Itemduktu +option.vanilla.spawntype=Typ spawneru +option.vanilla.growthvalue=Hodnota rùstu +option.vanilla.leverstate=Stav páky +option.vanilla.repeater=Prodleva opakovaèe +option.vanilla.comparator=Mód porovnávaèe +option.vanilla.redstone=Ruditová energie +option.vanilla.jukebox=Jukeboxový disk +option.vanilla.silverfish=Skrýt rybenku +option.etb.displaydata=Zobrazit data slotu +option.enderio.inout=Zobrazit vstup/výstup +option.enderio.storage=Zobrazit uskladnìné MJ +option.enderio.owner=Zobrazit majitele bloku +option.enderio.channel=Zobrazit kanál nadkrychle +option.bcapi.storage=Zobrazit uskladnìné MJ +option.bcapi.consump=Zobrazit maximální energii +option.bcapi.trigger=Zobrazit spouštìjící se energii +option.pr.showio=Zobrazit IO brány +option.pr.showdata=Zobrazit data bran +option.extrautilities.fluidamount=Zobrazit množství tekutin +option.openblocks.fluidamount=Zobrazit množství tekutin +option.railcraft.fluidamount=Zobrazit množství tekutin +option.secretrooms.hide=Skrýt camo bloky +option.carpenters.hide=Skrýt camo bloky +option.stevescarts.showall=Zobrazit data +option.stevescarts.colorblind=Barevný mód +option.stevescarts.shifttoggle=Shift pro pøepnutí +option.general.showhp=Zobrazit zdraví entit +option.general.showcrop=Zobrazit rùst plodin +option.thaumcraft.aspects=Zobrazit aspekty diff --git a/src/main/resources/assets/waila/lang/de_DE.lang b/src/main/resources/assets/waila/lang/de_DE.lang new file mode 100644 index 00000000..9fbe8c50 --- /dev/null +++ b/src/main/resources/assets/waila/lang/de_DE.lang @@ -0,0 +1,90 @@ +screen.button.waila=Waila +screen.button.modules=Module +screen.label.scale=Maße +screen.label.dragtuto=Verschiebe das HUD, um seine Position zu ändern. + +screen.button.default=Standard +screen.button.cancel=Abbrechen +screen.button.ok=Ok +screen.button.yes=Ja +screen.button.no=Nein +screen.button.back=Zurück +screen.button.hidden=Versteckt +screen.button.visible=Sichtbar +screen.button.maintained=Gewartet +screen.button.toggled=An/Aus +screen.hwyla.warning=§cWarnung:§r Du verwendest eine Abspaltung(fork) von Waila, auch genannt Hwyla. Du kannst die (zum größtenteils fertige) Liste der Änderungen sehen, wenn du auf die Schaltfläche oben links in diesem Fenster klickst. + +choice.showhidewaila=Zeige/Verstecke Waila +choice.showhideidmeta=Zeige ID:Metadaten +choice.toggledmaintained=An/Aus/Gewartet +choice.showliquids=Flüssigkeiten +choice.shifttoggledblock=Blöcke schleichend umschalten +choice.shifttoggledents=Lebewesen schleichend umschalten +choice.hidefromlist=Verstecken vor der Spielerliste +choice.hidefromdebug=Verstecken vor dem Debug-Menü +choice.showitem=Gegenstand anzeigen +choice.tts=Blöcke vorlesen +choice.format.modname=Modname +choice.format.blockname=Blockname +choice.format.fluidname=Flüssigkeitsname +choice.format.entityname=Wesensname +choice.format.metadata=Metadaten +choice.format.background=Hintergrundfarbe +choice.format.gradienttop=Verlaufsfarbe (Oben) +choice.format.gradientbottom=Verlaufsfarbe (Unten) +choice.format.font=Textfarbe +screen.button.configureaspect=Konfiguriere Aspekt... +screen.button.configureformat=Formatiere Inhalt... +screen.button.exporttheme=Exportiere Thema + +waila.keybind.wailaconfig=Einstellungsbildschirm +waila.keybind.wailadisplay=Einblenden/Ausblenden +waila.keybind.liquid=Zeige Flüssigkeiten +waila.keybind.recipe=Zeige Rezept +waila.keybind.usage=Zeige Verwendung + +client.msg.norecipe=Kein Rezept gefunden. +client.msg.nousage=Keine Verwendung gefunden. + +hud.msg.empty= +hud.msg.health=Gesundheit +hud.msg.growth=Entwicklung +hud.msg.growth.value=%.0f %% +hud.msg.mature=Ausgereift +hud.msg.off=Aus +hud.msg.on=An +hud.msg.state=Status +hud.msg.delay=Verzögerung +hud.msg.comparator=Vergleicher +hud.msg.substractor=Substraktor +hud.msg.record=Aufzeichnung +hud.msg.toomuch=Zu viele... +hud.msg.power=Energie +hud.msg.offers=Angebote +hud.msg.demands=Anforderungen +hud.msg.career=Karriere: %s + +hud.item.melonstem=Melonenpflanze +hud.item.pumpkinstem=Kürbispflanze + +cfg.theme.vanilla=Vanilla +cfg.theme.dark=Dunkel + +option.vanilla.spawntype=Spawner-Typ +option.vanilla.growthvalue=Wachstumswert +option.vanilla.leverstate=Hebelstatus +option.vanilla.repeater=Repeater-Verzögerung +option.vanilla.comparator=Komparatormodus +option.vanilla.redstone=Redstone-Stärke +option.vanilla.jukebox=Plattenspieler-Schallplatte +option.vanilla.silverfish=Silberfisch verdecken +option.vanilla.furnacedisplay=Zeige Fortschritt des Ofens +option.general.showents=Zeige Wesen +option.general.showhp=Zeige Gesundheit von Lebewesen +option.general.showcrop=Zeige Pflanzenwachstum +option.general.registry=Zeige Registrierungsdaten +option.capability.tankinfo=Zeige Tankdaten +option.capability.energyinfo=Zeige Energiedaten + +nei.options.keys.showenchant=Zeige die Verzauberungs-Werte diff --git a/src/main/resources/assets/waila/lang/es_ES.lang b/src/main/resources/assets/waila/lang/es_ES.lang new file mode 100644 index 00000000..11174404 --- /dev/null +++ b/src/main/resources/assets/waila/lang/es_ES.lang @@ -0,0 +1,167 @@ +screen.button.modules=Módulos +screen.label.scale=Escala +screen.label.dragtuto=Arrastre el HUD para configurar su posición + +screen.button.default=Defecto +screen.button.cancel=Cancelar +screen.button.yes=Sí +screen.button.back=Atrás +screen.button.hidden=Ocultar +screen.button.maintained=Mantenido +screen.button.toggled=Cazonete + +choice.showhidewaila=Mostrar/Ocultar Waila +choice.toggledmaintained=Cazonete/Mantenido +choice.showliquids=Líquidos +choice.shifttoggledblock=SHIFT para bloques +choice.shifttoggledents=SHIFT para entidades +choice.hidefromlist=Ocultar de la lista de jugadores +choice.format.modname=Nombre Mod +choice.format.blockname=Nombre del Bloque +choice.format.fluidname=Nombre del Fluido +choice.format.entityname=Nombre de la Entidad +choice.format.background=Color de fondo +choice.format.gradienttop=Color del degradado (parte superior) +choice.format.gradientbottom=Color del degradado (Fondo) +choice.format.font=Color de texto +screen.button.configureaspect=Configurar aspecto... +screen.button.configureformat=Configurar contenido... +screen.button.exporttheme=Exportar tema + +enchant.title.name=Nombre +enchant.title.minlvl=Nivel mínimo +enchant.title.maxlvl=Nivel máximo +enchant.title.weight=Peso + + +waila.keybind.wailaconfig=[Waila] Pantalla Configurar +waila.keybind.wailadisplay=[Waila] Mostrar/Ocultar +waila.keybind.liquid=[Waila] Mostrar fluidos +waila.keybind.recipe=[Waila] Mostrar recetas +waila.keybind.usage=[Waila] Mostrar uso +waila.keybind.testing=[Waila] Pruebas + +client.msg.norecipe=No se encontró receta. +client.msg.nousage=No se encontró uso. + +hud.msg.none= +hud.msg.empty= +hud.msg.output=Salida +hud.msg.input=Entrada +hud.msg.out=Fuera +hud.msg.in=Adentro +hud.msg.power=Energía +hud.msg.storage=Almacenamiento +hud.msg.stored=Almacenado +hud.msg.any=Alguna +hud.msg.mode=Modo +hud.msg.maxpower=Máximo Energía +hud.msg.trigger=Gatillo +hud.msg.maxio=Máximo IO + +hud.msg.send=Enviar +hud.msg.recv=Recibir +hud.msg.item=ítem +hud.msg.fluid=Fluido +hud.msg.energ=Energía +hud.msg.frequency=Frecuencia + +hud.msg.owner=Dueño +hud.msg.public=Público +hud.msg.restricted=Limitado +hud.msg.private=Privado + +hud.msg.white=Blanco +hud.msg.orange=Naranja +hud.msg.magenta=Magenta +hud.msg.lblue=Azul claro +hud.msg.yellow=Amarillo +hud.msg.lime=Lima +hud.msg.pink=Rosa +hud.msg.gray=Gris +hud.msg.lgray=Gris claro +hud.msg.cyan=Cian +hud.msg.purple=Púrpura +hud.msg.blue=Azul +hud.msg.brown=Marrón +hud.msg.green=Verde +hud.msg.red=Rojo +hud.msg.black=Negro + +hud.msg.health=Salud +hud.msg.growth=Crecimiento +hud.msg.mature=Maduro +hud.msg.off=Apagado +hud.msg.on=Encendido +hud.msg.state=Estado +hud.msg.delay=Retrasar +hud.msg.comparator=Comparador +hud.msg.substractor=Sustractor +hud.msg.record=Disco +hud.msg.toomuch=Demasiado... + +hud.msg.offers=Ofrecer +hud.msg.demands=Peticiones + +hud.item.melonstem=Tallo de melón +hud.item.pumpkinstem=Tallo de calabaza + +cfg.theme.dark=Oscuro + +option.appeng.monitorcontent=Contenido del monitor +option.bb.content=Contenido de Barrel +option.bc.tankamount=Cantidad de fluido +option.bc.tanktype=Tipo de fluido +option.enderstorage.colors=Colores +option.ic2.inputeumach=Entrada máxima EU [Máquinas] +option.ic2.inputeuother=Entrada máxima EU [Otro] +option.ic2.inputeu=Entrada máxima EU +option.ic2.outputeu=Salida máxima +option.ic2.storage=Energía almacenada +option.ic2.consump=Mostrar consumo +option.thaumcraft.storedvis=Almacenamiento de condensadores +option.thermalexpansion.energyhandler=Mostrar almacenamiento RF +option.thermalexpansion.energycell=Mostrar Entrada/Salida de célula energía +option.thermalexpansion.fluidtype=Mostrar tipo de fluido +option.thermalexpansion.fluidamount=Mostrar cantidad de fluido +option.thermalexpansion.tankmode=Mostrar modo de tanque +option.thermalexpansion.tesssendrecv=Tesseract modo +option.thermalexpansion.tessfreq=Tesseract frecuencia +option.thermalexpansion.owner=Mostrar dueño +option.thermalexpansion.conditemmode=Mostrar modo de Itemduct +option.vanilla.growthvalue=Valor de crecimiento +option.vanilla.leverstate=Estado de palanca +option.vanilla.repeater=Retardo del repetidor +option.vanilla.comparator=Modo comparador +option.vanilla.redstone=Poder Redstone +option.vanilla.jukebox=Disco de jukebox +option.vanilla.silverfish=Ocultar los silverfish +option.vanilla.furnacedisplay=Mostrar progreso del horno +option.etb.displaydata=Mostrar datos de socket +option.enderio.inout=Mostrar entrada/salida +option.enderio.storage=Mostrar almacenado MJ +option.enderio.owner=Mostrar dueño del bloque +option.enderio.channel=Mostrar canal hipercubo +option.bcapi.storage=Mostrar almacenado MJ +option.bcapi.consump=Mostrar energía máxima +option.bcapi.trigger=Mostrar desencadenante del energía +option.pr.showio=Mostrar puertas E/S +option.pr.showdata=Mostrar datos de puerta +option.extrautilities.fluidamount=Mostrar cantidad de fluido +option.openblocks.fluidamount=Mostrar cantidad de fluido +option.railcraft.fluidamount=Mostrar cantidad de fluido +option.secretrooms.hide=Ocultar bloques de camuflaje +option.carpenters.hide=Ocultar bloques de camuflaje +option.stevescarts.showall=Mostrar datos +option.stevescarts.colorblind=Modo daltónico +option.stevescarts.shifttoggle=Tecla de mayúscula cazonete +option.general.showents=Mostrar entidades +option.general.showhp=Mostrar salud de entidades +option.general.showcrop=Mostrar crecimiento del cultivo +option.general.registry=Mostrar información del registro +option.capability.tankinfo=Mostrar información del tanque +option.capability.energyinfo=Mostrar información de energía +option.capability.inventoryinfo=Mostrar información de inventario +option.thaumcraft.aspects=Mostrar aspectos + +nei.options.keys.showenchant=Mostrar valores del encantamientos diff --git a/src/main/resources/assets/waila/lang/et_EE b/src/main/resources/assets/waila/lang/et_EE new file mode 100644 index 00000000..9d9113c3 --- /dev/null +++ b/src/main/resources/assets/waila/lang/et_EE @@ -0,0 +1,142 @@ +screen.button.modules=Moodulid +screen.label.scale=Skaala +screen.label.dragtuto=Lohista HUDi, et seade üles selle positsioon. + +screen.button.default=Vaikimisi +screen.button.cancel=Tühista +screen.button.yes=Jah +screen.button.no=Ei +screen.button.back=Tagasi +screen.button.hidden=Peidetud +screen.button.visible=Nähtav +screen.button.maintained=Hooldatud +screen.button.toggled=Lülitatud + +choice.showhidewaila=Näita/Peida Waila +choice.showhideidmeta=Näita ID:Metaandmed +choice.toggledmaintained=Lülitatud/Hooldatud +choice.showliquids=Vedelikud +choice.shifttoggledblock=Hiilimis lülita blokid +choice.shifttoggledents=Hiilimis lülita entiteedid +screen.button.configureaspect=Konfigureeri aspekti... + +enchant.title.name=Nimi +enchant.title.weight=Raskus +enchant.label.enchantability=Loitsitav + +waila.keybind.wailaconfig=[Waila] Konfiguratsiooni ekraan +waila.keybind.wailadisplay=[Waila] Näita/Peida +waila.keybind.liquid=[Waila] Näita vedelikke +waila.keybind.recipe=[Waila] Näita retsepti +waila.keybind.usage=[Waila] Näita kasutamist +waila.keybind.testing=[Waila] Testimine + +client.msg.norecipe=Ühtegi retsepti ei leitud. +client.msg.nousage=Ühtegi kasutust ei leitud. + +hud.msg.none= +hud.msg.empty= +hud.msg.output=Väljund +hud.msg.input=Sisend +hud.msg.out=Välja +hud.msg.in=Sisse +hud.msg.power=Võimsus +hud.msg.storage=Hoius +hud.msg.stored=Hoiustatud +hud.msg.any=Iga +hud.msg.mode=Mood +hud.msg.maxpower=Max Võimsus + +hud.msg.send=Saada +hud.msg.recv=Võtavastu +hud.msg.item=Ese +hud.msg.fluid=Vedelik +hud.msg.energ=Energia +hud.msg.frequency=Sagedus + +hud.msg.owner=Omanik +hud.msg.public=Avalik +hud.msg.restricted=Piiratud +hud.msg.private=Privaatne + +hud.msg.white=Valge +hud.msg.orange=Oranž +hud.msg.magenta=FuksiaP +hud.msg.lblue=HSinine +hud.msg.yellow=Kollane +hud.msg.lime=Laim +hud.msg.pink=Roosa +hud.msg.gray=Hall +hud.msg.lgray=HHall +hud.msg.cyan=TsüaanS +hud.msg.purple=Lilla +hud.msg.blue=Sinine +hud.msg.brown=Pruun +hud.msg.green=Roheline +hud.msg.red=Punane +hud.msg.black=Must + +hud.msg.growth=Kasv +hud.msg.mature=Küps +hud.msg.off=Väljas +hud.msg.on=Sees +hud.msg.state=Seis +hud.msg.delay=Viivitus +hud.msg.comparator=Võrdleja +hud.msg.substractor=Substractor +hud.msg.record=Heliplaat + +hud.msg.offers=Pakkumised +hud.msg.demands=Nõudmised + +option.appeng.monitorcontent=Monitori sisu +option.bb.content=Tünni sisu +option.bc.tankamount=Vedeliku kogus +option.bc.tanktype=Vedeliku tüüp +option.enderstorage.colors=Värvid +option.ic2.inputeumach=Max EU sisend [Masinad] +option.ic2.inputeuother=Max EU sisend [Muud] +option.ic2.inputeu=Max EU sisend +option.ic2.outputeu=Max EU väljund +option.ic2.storage=Energiat hoiustatud +option.ic2.consump=Näita tarbimist +option.ic2.tradeomat=Näita Trade-O-Mati nõudmist +option.thaumcraft.storedvis=Kondensaatori hoius +option.thermalexpansion.energyhandler=Näita RF hoiust +option.thermalexpansion.energycell=Näita ECelli SISSE/VÄLJA +option.thermalexpansion.fluidtype=Näita vedeliku tüüpi +option.thermalexpansion.fluidamount=Näita vedeliku kogust +option.thermalexpansion.tankmode=Näita paagi moodi +option.thermalexpansion.tesssendrecv=Tesserakti mood +option.thermalexpansion.tessfreq=Tesserakti sagedus +option.thermalexpansion.owner=Näita omanikku +option.thermalexpansion.conditemmode=Näita Itemducti moodi +option.vanilla.spawntype=Sünnikoha tüüp +option.vanilla.growthvalue=Kasvu väärtus +option.vanilla.leverstate=Hoova olek +option.vanilla.repeater=Võimendi viivitust +option.vanilla.comparator=Võrdleja mood +option.vanilla.redstone=Punakivi võimsus +option.vanilla.jukebox=Helikasti plaat +option.vanilla.silverfish=Peida majasoomukad +option.etb.displaydata=Näita pesa andmeid +option.enderio.inout=Näita sisendit/väljundit +option.enderio.storage=Näita hoiustatud MJ-le +option.enderio.owner=Näita bloki omanikku +option.enderio.channel=Näita hüperkuubi kanalit +option.bcapi.storage=Näita hoiustatud MJ-le +option.bcapi.consump=Näita maksimaalset võimsust +option.bcapi.trigger=Näita vallandavat energiat +option.pr.showio=Näita väravate IO-d +option.pr.showdata=Näita väravate andmeid +option.extrautilities.fluidamount=Näita vedeliku kogust +option.openblocks.fluidamount=Näita vedeliku kogust +option.railcraft.fluidamount=Näita vedeliku kogust +option.secretrooms.hide=Peida kamuflaaži blokid +option.carpenters.hide=Peida kamuflaaži blokid +option.stevescarts.showall=Näita andmeid +option.stevescarts.colorblind=Värvipimeda mood +option.stevescarts.shifttoggle=Shift lülitus +option.general.showhp=Näita entiteetide elusid +option.general.showcrop=Näita põllu kasvu +option.thaumcraft.aspects=Näita aspekte diff --git a/src/main/resources/assets/waila/lang/et_EE.lang b/src/main/resources/assets/waila/lang/et_EE.lang new file mode 100644 index 00000000..b4aa2900 --- /dev/null +++ b/src/main/resources/assets/waila/lang/et_EE.lang @@ -0,0 +1,142 @@ +screen.button.modules=Moodulid +screen.label.scale=Skaala +screen.label.dragtuto=Lohista HUDi, et seada üles selle positsioon. + +screen.button.default=Vaikimisi +screen.button.cancel=Tühista +screen.button.yes=Jah +screen.button.no=Ei +screen.button.back=Tagasi +screen.button.hidden=Peidetud +screen.button.visible=Nähtav +screen.button.maintained=Hooldatud +screen.button.toggled=Lülitatud + +choice.showhidewaila=Näita/Peida Waila +choice.showhideidmeta=Näita ID:Metaandmed +choice.toggledmaintained=Lülitatud/Hooldatud +choice.showliquids=Vedelikud +choice.shifttoggledblock=Hiilimisel lülita blokid +choice.shifttoggledents=Hiilimisel lülita entiteedid +screen.button.configureaspect=Konfigureeri aspekti... + +enchant.title.name=Nimi +enchant.title.weight=Raskus +enchant.label.enchantability=Loitsitav + +waila.keybind.wailaconfig=[Waila] Konfiguratsiooni ekraan +waila.keybind.wailadisplay=[Waila] Näita/Peida +waila.keybind.liquid=[Waila] Näita vedelikke +waila.keybind.recipe=[Waila] Näita retsepti +waila.keybind.usage=[Waila] Näita kasutamist +waila.keybind.testing=[Waila] Testimine + +client.msg.norecipe=Ühtegi retsepti ei leitud. +client.msg.nousage=Ühtegi kasutust ei leitud. + +hud.msg.none= +hud.msg.empty= +hud.msg.output=Väljund +hud.msg.input=Sisend +hud.msg.out=Välja +hud.msg.in=Sisse +hud.msg.power=Võimsus +hud.msg.storage=Hoius +hud.msg.stored=Hoiustatud +hud.msg.any=Iga +hud.msg.mode=Mood +hud.msg.maxpower=Max Võimsus + +hud.msg.send=Saada +hud.msg.recv=Võtavastu +hud.msg.item=Ese +hud.msg.fluid=Vedelik +hud.msg.energ=Energia +hud.msg.frequency=Sagedus + +hud.msg.owner=Omanik +hud.msg.public=Avalik +hud.msg.restricted=Piiratud +hud.msg.private=Privaatne + +hud.msg.white=Valge +hud.msg.orange=Oranž +hud.msg.magenta=FuksiaP +hud.msg.lblue=HSinine +hud.msg.yellow=Kollane +hud.msg.lime=Laim +hud.msg.pink=Roosa +hud.msg.gray=Hall +hud.msg.lgray=HeleHall +hud.msg.cyan=TsüaanS +hud.msg.purple=Lilla +hud.msg.blue=Sinine +hud.msg.brown=Pruun +hud.msg.green=Roheline +hud.msg.red=Punane +hud.msg.black=Must + +hud.msg.growth=Kasv +hud.msg.mature=Küps +hud.msg.off=Väljas +hud.msg.on=Sees +hud.msg.state=Seis +hud.msg.delay=Viivitus +hud.msg.comparator=Võrdleja +hud.msg.substractor=Substractor +hud.msg.record=Heliplaat + +hud.msg.offers=Pakkumised +hud.msg.demands=Nõudmised + +option.appeng.monitorcontent=Monitori sisu +option.bb.content=Tünni sisu +option.bc.tankamount=Vedeliku kogus +option.bc.tanktype=Vedeliku tüüp +option.enderstorage.colors=Värvid +option.ic2.inputeumach=Max EU sisend [Masinad] +option.ic2.inputeuother=Max EU sisend [Muud] +option.ic2.inputeu=Max EU sisend +option.ic2.outputeu=Max EU väljund +option.ic2.storage=Energiat hoiustatud +option.ic2.consump=Näita tarbimist +option.ic2.tradeomat=Näita Trade-O-Mati nõudmist +option.thaumcraft.storedvis=Kondensaatori hoius +option.thermalexpansion.energyhandler=Näita RF hoiust +option.thermalexpansion.energycell=Näita ECelli SISSE/VÃLJA +option.thermalexpansion.fluidtype=Näita vedeliku tüüpi +option.thermalexpansion.fluidamount=Näita vedeliku kogust +option.thermalexpansion.tankmode=Näita paagi moodi +option.thermalexpansion.tesssendrecv=Tesserakti mood +option.thermalexpansion.tessfreq=Tesserakti sagedus +option.thermalexpansion.owner=Näita omanikku +option.thermalexpansion.conditemmode=Näita Itemducti moodi +option.vanilla.spawntype=Sünnikoha tüüp +option.vanilla.growthvalue=Kasvu väärtus +option.vanilla.leverstate=Hoova olek +option.vanilla.repeater=Võimendi viivitust +option.vanilla.comparator=Võrdleja mood +option.vanilla.redstone=Punakivi võimsus +option.vanilla.jukebox=Helikasti plaat +option.vanilla.silverfish=Peida majasoomukad +option.etb.displaydata=Näita pesa andmeid +option.enderio.inout=Näita sisendit/väljundit +option.enderio.storage=Näita hoiustatud MJ-le +option.enderio.owner=Näita bloki omanikku +option.enderio.channel=Näita hüperkuubi kanalit +option.bcapi.storage=Näita hoiustatud MJ-le +option.bcapi.consump=Näita maksimaalset võimsust +option.bcapi.trigger=Näita vallandavat energiat +option.pr.showio=Näita väravate IO-d +option.pr.showdata=Näita väravate andmeid +option.extrautilities.fluidamount=Näita vedeliku kogust +option.openblocks.fluidamount=Näita vedeliku kogust +option.railcraft.fluidamount=Näita vedeliku kogust +option.secretrooms.hide=Peida kamuflaaži blokid +option.carpenters.hide=Peida kamuflaaži blokid +option.stevescarts.showall=Näita andmeid +option.stevescarts.colorblind=Värvipimeda mood +option.stevescarts.shifttoggle=Shift lülitus +option.general.showhp=Näita entiteetide elusid +option.general.showcrop=Näita põllu kasvu +option.thaumcraft.aspects=Näita aspekte diff --git a/src/main/resources/assets/waila/lang/fr_FR.lang b/src/main/resources/assets/waila/lang/fr_FR.lang new file mode 100644 index 00000000..9f293234 --- /dev/null +++ b/src/main/resources/assets/waila/lang/fr_FR.lang @@ -0,0 +1,124 @@ +screen.label.scale=Echelle +screen.label.dragtuto=Faites glisser le HUD pour paramétrer la position. + +screen.button.default=Défaut +screen.button.cancel=Annuler +screen.button.yes=Oui +screen.button.no=Non +screen.button.back=Retour +screen.button.hidden=Masquer +screen.button.visible=Afficher +screen.button.maintained=Maintenu +screen.button.toggled=Switché + +choice.showhidewaila=Afficher/Masquer Waila +choice.showhideidmeta=Afficher ID:Metadata +choice.toggledmaintained= Switché/Maintenu +choice.showliquids=Liquides +screen.button.configureaspect=Configurer l'aspect… + +enchant.title.name=Nom +enchant.title.weight=Poids +enchant.label.enchantability=Enchantabilitée + +waila.keybind.wailaconfig=[Waila] Ecran de config +waila.keybind.wailadisplay=[Waila] Afficher/Masquer +waila.keybind.liquid=[Waila] Afficher les liquides +waila.keybind.recipe=[Waila] Afficher les recettes +waila.keybind.usage=[Waila] Afficher l'utilisation + +client.msg.norecipe=Pas de recette trouvée. +client.msg.nousage=Pas d'utilisation trouvée. + +hud.msg.none= +hud.msg.empty= +hud.msg.output=Sortie +hud.msg.input=Entrée +hud.msg.out=Sortie +hud.msg.in=Entrée +hud.msg.power=Energie +hud.msg.storage=Stockage +hud.msg.stored=Stocké +hud.msg.any=Tout +hud.msg.maxpower=Max Puissance +hud.msg.trigger=Déclencheur +hud.msg.maxio=Max Entrée/Sortie + +hud.msg.send=Envoyer +hud.msg.recv=Recevoir +hud.msg.item=Objet +hud.msg.fluid=Fluide +hud.msg.energ=Energie +hud.msg.frequency=Fréquence + +hud.msg.owner=Propriétaire +hud.msg.public=Publique +hud.msg.restricted=Limité +hud.msg.private=Privée + +hud.msg.white=Blanc +hud.msg.magenta=Magenta +hud.msg.lblue=Bleu clair +hud.msg.yellow=Jaune +hud.msg.lime=Vert clair +hud.msg.pink=Rose +hud.msg.gray=Gris +hud.msg.lgray=Gris clair +hud.msg.cyan=Cyan +hud.msg.purple=Violet +hud.msg.blue=Bleu +hud.msg.brown=Marron +hud.msg.green=Vert +hud.msg.red=Rouge +hud.msg.black=Noir + +hud.msg.growth=Croissance +hud.msg.state=Etat +hud.msg.delay=Retard +hud.msg.comparator=Comparateur +hud.msg.substractor=Soustracteur +hud.msg.record=Disque + +hud.msg.offers=Offre +hud.msg.demands=Demande + +option.appeng.monitorcontent=Contenu des écrans +option.bb.content=Contenu des barils +option.bc.tankamount=Niveau de liquide +option.bc.tanktype=Sorte de liquide +option.enderstorage.colors=Couleurs +option.ic2.inputeumach=Max EU en entrée [Machines] +option.ic2.inputeuother=Max EU en entrée [Autres] +option.ic2.inputeu=Max EU en entrée +option.ic2.outputeu=Max EU en sortie +option.ic2.storage=Energie stockée +option.ic2.consump=Afficher consommation +option.thaumcraft.storedvis=Condensateur de stockage +option.thermalexpansion.energyhandler=Afficher stockage RF +option.thermalexpansion.energycell=Afficher ECell Entrée/Sortie +option.thermalexpansion.fluidtype=Afficher sorte fluides +option.thermalexpansion.fluidamount=Afficher niveau fluides +option.thermalexpansion.tankmode=Afficher mode Réservoir +option.thermalexpansion.tesssendrecv=Tesseract mode +option.thermalexpansion.tessfreq=Tesseract fréquence +option.thermalexpansion.owner=Afficher propriétaire +option.thermalexpansion.conditemmode=Afficher Itemduct mode +option.vanilla.growthvalue=Niveau de croissance +option.vanilla.leverstate=Etat Levier +option.vanilla.repeater=Répeteur retard +option.vanilla.comparator=Comparateur mode +option.vanilla.redstone=Redstone puissance +option.vanilla.jukebox=Jukebox disque +option.etb.displaydata=Afficher données socket +option.enderio.inout=Afficher Entrée/Sortie +option.enderio.storage=Afficher MJ stocké +option.enderio.owner=Afficher propriétaire du bloc +option.enderio.channel=Afficher hypercube canal +option.bcapi.storage=Afficher MJ stocké +option.bcapi.consump=Afficher puissance maximale +option.bcapi.trigger=Energie déclanchement +option.pr.showio=Afficher plaques IO +option.pr.showdata=Afficher plaques data +option.extrautilities.fluidamount=Afficher niveau fluides +option.openblocks.fluidamount=Afficher niveau fluides +option.railcraft.fluidamount=Afficher niveau fluides diff --git a/src/main/resources/assets/waila/lang/it_IT.lang b/src/main/resources/assets/waila/lang/it_IT.lang new file mode 100644 index 00000000..7ccb365d --- /dev/null +++ b/src/main/resources/assets/waila/lang/it_IT.lang @@ -0,0 +1,143 @@ +screen.button.modules=Moduli +screen.label.scale=Scala +screen.label.dragtuto=Trascina il HUD per selezionare la sua posizione. + +screen.button.cancel=Cancella +screen.button.yes=Si +screen.button.back=Indietro +screen.button.hidden=Nascosto +screen.button.visible=Visibile +screen.button.maintained=Mantenuto +screen.button.toggled=Premuto + +choice.showhidewaila=Mostra/Nascondi Waila +choice.showhideidmeta=Mostra ID:Metadata +choice.toggledmaintained=Premuto/Mantenuto +choice.showliquids=Liquidi +choice.shifttoggledblock=Shift premuto per blocchi +choice.shifttoggledents=Shift premuto per entità +screen.button.configureaspect=Configura aspetti... + +enchant.title.name=Nome +enchant.title.minlvl=lvl min +enchant.title.maxlvl=lvl max +enchant.title.weight=Peso +enchant.label.enchantability=Incantabilità + +waila.keybind.wailaconfig=[Waila] Config menù +waila.keybind.wailadisplay=[Waila] Mostra/Nascondi +waila.keybind.liquid=[Waila] Mostra liquidi +waila.keybind.recipe=[Waila] Mostra ricetta +waila.keybind.usage=[Waila] Mostra uso +waila.keybind.testing=[Waila] Provare + +client.msg.norecipe=Nessuna ricetta trovata. +client.msg.nousage=Nessun uso trovato. + +hud.msg.none= +hud.msg.empty= +hud.msg.output=Uscita +hud.msg.input=Entrata +hud.msg.out=Fuori +hud.msg.in=Dentro +hud.msg.power=Corrente +hud.msg.storage=Contenitore +hud.msg.stored=Contenuto +hud.msg.any=Qualunque +hud.msg.mode=Modalità +hud.msg.maxpower=Corrente massima +hud.msg.trigger=Innescare +hud.msg.maxio=IO Massimo + +hud.msg.send=Manda +hud.msg.recv=Riceve +hud.msg.item=Oggetto +hud.msg.fluid=Fluido +hud.msg.energ=Corrente +hud.msg.frequency=Frequenza + +hud.msg.owner=Proprietario +hud.msg.public=Pubblico +hud.msg.restricted=Restretto +hud.msg.private=Privato + +hud.msg.white=Bianco +hud.msg.orange=Arancione +hud.msg.magenta=Magenta +hud.msg.lblue=Azzurro +hud.msg.yellow=Giallo +hud.msg.pink=Rosa +hud.msg.gray=Grigio +hud.msg.lgray=Grigio chiaro +hud.msg.cyan=Ciano +hud.msg.purple=Viola +hud.msg.blue=Blu +hud.msg.brown=Marrone +hud.msg.green=Verde +hud.msg.red=Rosso +hud.msg.black=Nero + +hud.msg.growth=Crescita +hud.msg.mature=Maturo +hud.msg.off=Attivo +hud.msg.on=Disattivato +hud.msg.state=Stato +hud.msg.delay=Ritardo +hud.msg.comparator=Comparatore +hud.msg.substractor=Substrattore +hud.msg.record=Disco + +hud.msg.offers=Offre +hud.msg.demands=Pretende + +option.appeng.monitorcontent=Contenuto del monitor +option.bb.content=Contenuto del barile +option.bc.tankamount=Quantità liquido +option.bc.tanktype=Tipo di liquido +option.enderstorage.colors=Colori +option.ic2.inputeumach=Entrata massima EU [Macchinari] +option.ic2.inputeuother=Entrata massima EU [Altro] +option.ic2.inputeu=Entrata massima EU +option.ic2.outputeu=Uscita massima EU +option.ic2.storage=Corrente conservata +option.ic2.consump=Mostra consumo +option.ic2.tradeomat=Mostra richiesta del Trade-O-Mat +option.thaumcraft.storedvis=Vis conservato +option.thermalexpansion.energyhandler=Mostra RF conservata +option.thermalexpansion.energycell=Mostra cella entrata/uscita +option.thermalexpansion.fluidtype=Mostra tipo di liquido +option.thermalexpansion.fluidamount=Mostra quantità di liquido +option.thermalexpansion.tankmode=Mostra modalità cisterna +option.thermalexpansion.tesssendrecv=Modalità tesseract +option.thermalexpansion.tessfreq=Frequenza tesseract +option.thermalexpansion.owner=Mostra proprietario +option.thermalexpansion.conditemmode=Modalità mostra Itemduct +option.vanilla.spawntype=Tipo di generatore +option.vanilla.growthvalue=Valore crescita +option.vanilla.leverstate=Stato leva +option.vanilla.repeater=Ritardo ripetitore +option.vanilla.comparator=Modalità comparatore +option.vanilla.redstone=Energia pietrarossa +option.vanilla.jukebox=Disco Jukebox +option.vanilla.silverfish=Nascondi Pesciolini d'argento +option.etb.displaydata=Mostra socket data +option.enderio.inout=Mostra entrata/uscita +option.enderio.storage=Mostra MJ conservato +option.enderio.owner=Mostra proprietario del blocco +option.enderio.channel=Mostra canale del hypercube +option.bcapi.storage=Mostra MJ conservato +option.bcapi.consump=Mostra corrente massima +option.bcapi.trigger=Mostra energia innescata +option.pr.showio=Mostra IO gate +option.pr.showdata=Mostra gate data +option.extrautilities.fluidamount=Mostra quantità di liquido +option.openblocks.fluidamount=Mostra quantità di liquido +option.railcraft.fluidamount=Mostra quantità di liquido +option.secretrooms.hide=Nascondi blocchi camuffati +option.carpenters.hide=Nascondi blocchi camuffati +option.stevescarts.showall=Mostra data +option.stevescarts.colorblind=Modalità daltonico +option.stevescarts.shifttoggle=Scambia stato +option.general.showhp=Mostra vita dell'entità +option.general.showcrop=Mostra crescita delle piante +option.thaumcraft.aspects=Mostra aspetti diff --git a/src/main/resources/assets/waila/lang/nl_NL.lang b/src/main/resources/assets/waila/lang/nl_NL.lang new file mode 100644 index 00000000..da7b1e9f --- /dev/null +++ b/src/main/resources/assets/waila/lang/nl_NL.lang @@ -0,0 +1,110 @@ +screen.label.scale=Schaal +screen.label.dragtuto=Sleep de HUD om zijn positie in te stellen. + +screen.button.default=Standaard +screen.button.cancel=Annuleren +screen.button.yes=Ja +screen.button.no=Nee +screen.button.back=Terug +screen.button.hidden=Verborgen +screen.button.visible=Zichtbaar +screen.button.maintained=Gehandhaafd +screen.button.toggled=Omgeschakeld + +choice.showhidewaila=Toon/Verberg Waila +choice.showhideidmeta=Toon ID:Metadata +choice.toggledmaintained=Omgeschakeld/Gehandhaafd +choice.showliquids=Vloeistoffen +screen.button.configureaspect=Configureer aspect... + +enchant.title.name=Naam +enchant.title.weight=Gewicht +enchant.label.enchantability=Enchantbaarheid + +keybind.configscreen=[Waila] Configuratiescherm +keybind.showhide=[Waila] Toon/Verberg +keybind.showliquid=[Waila] Toon vloeistoffen +keybind.showrecipe=[Waila] Toon recepten +keybind.showusage=[Waila] Toon gebruik +keybind.testing=[Waila] Testen + +client.msg.norecipe=Geen recept gevonden. +client.msg.nousage=Geen gebruik gevonden. + +hud.msg.none= +hud.msg.empty= +hud.msg.output=Uitvoer +hud.msg.input=Invoer +hud.msg.out=Uit +hud.msg.power=Vermogen +hud.msg.storage=Opslag +hud.msg.any=Om het even welke +hud.msg.mode=Modus + +hud.msg.send=Zend +hud.msg.recv=Ontv +hud.msg.fluid=Vloeistof +hud.msg.energ=Energie +hud.msg.frequency=Frequentie + +hud.msg.owner=Eigenaar +hud.msg.public=Publiek +hud.msg.restricted=Begrensd +hud.msg.private=Privé + +hud.msg.white=Wit +hud.msg.orange=Oranje +hud.msg.magenta=Magenta +hud.msg.lblue=LBlauw +hud.msg.yellow=Geel +hud.msg.lime=Limoen +hud.msg.pink=Roze +hud.msg.gray=Grijs +hud.msg.lgray=LGrijs +hud.msg.cyan=Cyaan +hud.msg.purple=Paars +hud.msg.blue=Blauw +hud.msg.brown=Bruin +hud.msg.green=Groen +hud.msg.red=Rood +hud.msg.black=Zwart + +hud.msg.growth=Groei +hud.msg.mature=Volwassen +hud.msg.off=Af +hud.msg.on=Aan +hud.msg.state=Status +hud.msg.delay=Vertraging +hud.msg.comparator=Vergelijker +hud.msg.substractor=Aftrekker +hud.msg.record=Neem op + +option.appeng.monitorcontent=Scherm inhoud +option.bb.content=Ton inhoud +option.bc.tankamount=Vloeistofhoeveelheid +option.bc.tanktype=Vloeistoftype +option.enderstorage.colors=Kleuren +option.ic2.inputeumach=Max EU invoer [Machines] +option.ic2.inputeuother=Max EU invoer [Andere] +option.ic2.inputeu=Max EU invoer +option.ic2.outputeu=Max EU uitvoer +option.ic2.storage=Opgeslagen energie +option.thaumcraft.storedvis=Condensator opslag +option.thermalexpansion.energyhandler=Toon RF opslag +option.thermalexpansion.energycell=Toon ECell IN/UIT +option.thermalexpansion.fluidtype=Toon vloeistoftype +option.thermalexpansion.fluidamount=Toon vloeistofhoeveelheid +option.thermalexpansion.tankmode=Toon tank modus +option.thermalexpansion.tesssendrecv=Tesseract modus +option.thermalexpansion.tessfreq=Tesseract frequentie +option.thermalexpansion.owner=Toon eigenaar +option.vanilla.spawntype=Spawner type +option.vanilla.growthvalue=Groei hoeveelheid +option.vanilla.leverstate=Hendel status +option.vanilla.repeater=Herhaler vertraging +option.vanilla.comparator=Vergelijker modus +option.vanilla.redstone=Redstone vermogen +option.vanilla.jukebox=Jukebox schijf +option.extrautilities.fluidamount=Toon vloeistofhoeveelheid +option.openblocks.fluidamount=Toon vloeistofhoeveelheid +option.railcraft.fluidamount=Toon vloeistofhoeveelheid diff --git a/src/main/resources/assets/waila/lang/zh_CN.lang b/src/main/resources/assets/waila/lang/zh_CN.lang new file mode 100644 index 00000000..719d3277 --- /dev/null +++ b/src/main/resources/assets/waila/lang/zh_CN.lang @@ -0,0 +1,89 @@ +screen.button.waila=Waila +screen.button.modules=模块 +screen.label.scale=缩放 +screen.label.dragtuto=拖拽 HUD 为其设置位置。 + +screen.button.default=默认 +screen.button.cancel=取消 +screen.button.ok=确定 +screen.button.yes=是 +screen.button.no=否 +screen.button.back=返回 +screen.button.hidden=隐藏 +screen.button.visible=可见 +screen.button.maintained=保持 +screen.button.toggled=切换 +screen.hwyla.warning=§c注意:§r你现在使用的是 Waila 的一个 fork,叫做 Hwyla。点击当前界面左下角的按钮可以获得完整的变更列表。 + +choice.showhidewaila=显示/隐藏Waila +choice.showhideidmeta=显示 ID:Metadata +choice.toggledmaintained=切换/保持显示信息 +choice.showliquids=流体 +choice.shifttoggledblock=潜行切换方块信息 +choice.shifttoggledents=潜行切换实体信息 +choice.hidefromlist=在显示玩家列表时隐藏 +choice.showitem=显示物品 +choice.tts=朗读方块信息 +choice.format.modname=Mod 名称 +choice.format.blockname=方块名称 +choice.format.fluidname=流体名称 +choice.format.entityname=实体名称 +choice.format.metadata=Metadata +choice.format.background=背景颜色 +choice.format.gradienttop=顶部色彩梯度 +choice.format.gradientbottom=底部色彩梯度 +choice.format.font=文本颜色 +screen.button.configureaspect=自定义外观…… +screen.button.configureformat=格式内容…… +screen.button.exporttheme=导出主题 + +waila.keybind.wailaconfig=配置屏幕 +waila.keybind.wailadisplay=显示/隐藏 +waila.keybind.liquid=显示流体 +waila.keybind.recipe=显示合成 +waila.keybind.usage=显示可参与合成 + +client.msg.norecipe=没有找到配方。 +client.msg.nousage=没有找到用途。 + +hud.msg.empty=<空> +hud.msg.health=生命值 +hud.msg.growth=生长状态 +hud.msg.growth.value=%.0f %% +hud.msg.mature=成熟 +hud.msg.off=关 +hud.msg.on=开 +hud.msg.state=状态 +hud.msg.delay=延迟 +hud.msg.comparator=比较器 +hud.msg.substractor=减法器 +hud.msg.record=记录 +hud.msg.toomuch=太多了…… +hud.msg.power=能量 +hud.msg.offers=提供 +hud.msg.demands=需求 +hud.msg.career=职业:%s + +hud.item.melonstem=西瓜梗 +hud.item.pumpkinstem=南瓜梗 + +cfg.theme.vanilla=原版 +cfg.theme.dark=暗色 + +option.vanilla.spawntype=刷怪笼类型 +option.vanilla.growthvalue=生长状态 +option.vanilla.leverstate=拉杆状态 +option.vanilla.repeater=中继器延时 +option.vanilla.comparator=比较器模式 +option.vanilla.redstone=红石充能 +option.vanilla.jukebox=唱片内容 +option.vanilla.silverfish=隐藏蠹虫 +option.vanilla.furnacedisplay=显示熔炉进度 +option.general.showents=显示实体 +option.general.showhp=显示实体生命值 +option.general.showcrop=显示作物生长状态 +option.general.registry=显示注册信息 +option.capability.tankinfo=显示储罐信息 +option.capability.energyinfo=显示能量信息 + +nei.options.keys.showenchant=显示附魔数据 From 330d0ddacddfc2be01fbc7bda72e42c133a2c213 Mon Sep 17 00:00:00 2001 From: Ognev Anton Date: Tue, 18 Feb 2025 05:12:55 +0700 Subject: [PATCH 05/16] [feature] EU storage support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлена поддежка энергохранилищ - Добавлено отображение процента и энергоуровня - Изменены наименования переменных --- .../addons/ic2/HUDHandlerTEGenerator.java | 75 ++++++++++++------- .../mobius/waila/addons/ic2/IC2Module.java | 35 +++++++-- .../resources/assets/waila/lang/en_US.lang | 6 ++ .../resources/assets/waila/lang/ru_RU.lang | 8 +- 4 files changed, 87 insertions(+), 37 deletions(-) diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java index 72872096..77ae8673 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java @@ -22,33 +22,44 @@ public class HUDHandlerTEGenerator implements IWailaDataProvider { @Nonnull @Override public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { - double storage = accessor.getNBTData().getDouble("storage"); - int production = accessor.getNBTData().getInteger("production"); - long maxStorage = accessor.getNBTData().getLong("maxStorage"); + if (accessor.getTileEntity() == null) + return currenttip; + + double stored = accessor.getNBTData().getDouble("stored"); + int output = accessor.getNBTData().getInteger("output"); + long capacity = accessor.getNBTData().getLong("capacity"); + int tier = accessor.getNBTData().getInteger("tier"); String storedStr = LangUtil.translateG("hud.ic2.msg.stored"); String outputStr = LangUtil.translateG("hud.ic2.msg.output"); + String tierStr = LangUtil.translateG("hud.ic2.msg.tier"); + String energyLine = ""; - if (accessor.getTileEntity() == null) { - return currenttip; - } + /* EU Storage*/ + if (capacity > 0) { + if (config.getConfig("ic2.storage")) + energyLine += String.format( + "%s: §f%d§r / §f%d§r EU", + storedStr, + Math.round(Math.min(stored, capacity)), + capacity + ); - /* EU Storage */ - if (config.getConfig("ic2.storage")) - if (maxStorage > 0) { - ((ITaggedList) currenttip) - .add(String.format( - "%s §f%d§r / §f%d§r EU", - storedStr, - Math.round(Math.min(storage, maxStorage)), - maxStorage - ), "IEnergyStorage"); - } + if (config.getConfig("ic2.percentage")) + energyLine += String.format(" (§f%d%%§r)", Math.round((stored / capacity) * 100)); - if (config.getConfig("ic2.outputeu")) { - currenttip.add(String.format("%s §f%d §r EU/t", outputStr, production)); + ((ITaggedList) currenttip).add(energyLine, "IEnergyStorage"); } + /* Output EU */ + if (config.getConfig("ic2.outputeu") && output > 0) + currenttip.add(String.format("%s: §f%d §r EU/t", outputStr, output)); + + /* Tier */ + if (config.getConfig("ic2.tier") && tier > 0) + currenttip.add(String.format("%s: §f%d §r", tierStr, tier)); + + return currenttip; } @@ -56,22 +67,30 @@ public List getWailaBody(ItemStack itemStack, List currenttip, I @Nonnull @Override public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { - double storage = -1; - int production = -1; - long maxStorage = -1; + double stored = -1; + int output = -1; + long capacity = -1; + int tier = 0; try { if (IC2Module.generator.isInstance(te)) { - storage = IC2Module.generatorStorage.getDouble(te); - production = IC2Module.generatorProduction.getInt(te); - maxStorage = IC2Module.generatorMaxStorage.getLong(te); + stored = IC2Module.generatorStored.getDouble(te); + output = IC2Module.generatorOutput.getInt(te); + capacity = IC2Module.generatorCapacity.getLong(te); + tier = IC2Module.generatorTier.getInt(te); + } else if (IC2Module.eBlock.isInstance(te)) { + stored = IC2Module.eBlockStored.getDouble(te); + output = IC2Module.eBlockOutput.getInt(te); + capacity = IC2Module.eBlockCapacity.getLong(te); + tier = IC2Module.eBlockTier.getInt(te); } } catch (java.lang.Exception e) { throw new RuntimeException(e); } - tag.setDouble("storage", storage); - tag.setInteger("production", production); - tag.setLong("maxStorage", maxStorage); + tag.setDouble("stored", stored); + tag.setInteger("output", output); + tag.setLong("capacity", capacity); + tag.setInteger("tier", tier); return tag; } diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java index 0ac5db01..e7530551 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java @@ -12,9 +12,16 @@ public class IC2Module implements IWailaPlugin { public static Class generator = null; - public static Field generatorStorage = null; - public static Field generatorMaxStorage = null; - public static Field generatorProduction = null; + public static Field generatorStored = null; + public static Field generatorCapacity = null; + public static Field generatorOutput = null; + public static Field generatorTier = null; + + public static Class eBlock = null; + public static Field eBlockStored = null; + public static Field eBlockCapacity = null; + public static Field eBlockOutput = null; + public static Field eBlockTier = null; @Override @@ -22,16 +29,28 @@ public void register(IWailaRegistrar registrar) { if (!Loader.isModLoaded("ic2")) return; try { generator = Class.forName("ic2.core.block.base.tile.TileEntityGeneratorBase"); - generatorStorage = generator.getDeclaredField("storage"); - generatorMaxStorage = generator.getDeclaredField("maxStorage"); - generatorProduction = generator.getDeclaredField("production"); + generatorStored = generator.getDeclaredField("storage"); + generatorCapacity = generator.getDeclaredField("maxStorage"); + generatorOutput = generator.getDeclaredField("production"); + generatorTier = generator.getDeclaredField("tier"); + + eBlock = Class.forName("ic2.core.block.base.tile.TileEntityElectricBlock"); + eBlockStored = eBlock.getDeclaredField("energy"); + eBlockCapacity = eBlock.getDeclaredField("maxEnergy"); + eBlockOutput = eBlock.getDeclaredField("output"); + eBlockTier = eBlock.getDeclaredField("tier"); + + registrar.addConfig("Industrial Craft 2", "ic2.storage", true); + registrar.addConfig("Industrial Craft 2", "ic2.percentage", true); + registrar.addConfig("Industrial Craft 2", "ic2.outputeu", true); + registrar.addConfig("Industrial Craft 2", "ic2.tier", true); registrar.registerBodyProvider(HUDHandlerTEGenerator.INSTANCE, generator); registrar.registerNBTProvider(HUDHandlerTEGenerator.INSTANCE, generator); - registrar.addConfig("Industrial Craft 2", "ic2.storage", true); - registrar.addConfig("Industrial Craft 2", "ic2.outputeu", true); + registrar.registerBodyProvider(HUDHandlerTEGenerator.INSTANCE, eBlock); + registrar.registerNBTProvider(HUDHandlerTEGenerator.INSTANCE, eBlock); } catch (Exception e) { Waila.LOGGER.warn("[Industrial Craft 2] Error while loading generator hooks.", e); diff --git a/src/main/resources/assets/waila/lang/en_US.lang b/src/main/resources/assets/waila/lang/en_US.lang index 783333bb..eb61aec4 100644 --- a/src/main/resources/assets/waila/lang/en_US.lang +++ b/src/main/resources/assets/waila/lang/en_US.lang @@ -67,6 +67,7 @@ hud.msg.career=Career: %s hud.ic2.msg.stored=Stored hud.ic2.msg.output=Output +hud.ic2.msg.tier=Tier hud.te.msg.stored=Stored hud.te.msg.capacity=Capacity @@ -93,4 +94,9 @@ option.general.registry=Show registry data option.capability.tankinfo=Show tank data option.capability.energyinfo=Show energy data +option.ic2.storage=Show EU storage +option.ic2.percentage=Show EU percent +option.ic2.outputeu=Show Output EU +option.ic2.tier=Show Tier of Electricity + nei.options.keys.showenchant=Show enchanting values diff --git a/src/main/resources/assets/waila/lang/ru_RU.lang b/src/main/resources/assets/waila/lang/ru_RU.lang index e543b418..461b3833 100644 --- a/src/main/resources/assets/waila/lang/ru_RU.lang +++ b/src/main/resources/assets/waila/lang/ru_RU.lang @@ -66,7 +66,8 @@ hud.msg.demands=Запросы hud.msg.career=Карьера: %s hud.ic2.msg.stored=Хранится -hud.ic2.msg.output=Вывод +hud.ic2.msg.output=Выход +hud.ic2.msg.tier=Энергоуровень hud.te.msg.stored=Хранится hud.te.msg.capacity=Объём @@ -93,4 +94,9 @@ option.general.registry=Показать данные реестра option.capability.tankinfo=Показать данные резервуара option.capability.energyinfo=Показать данные энергии +option.ic2.storage=Заряд EU +option.ic2.percentage=EU в процентах +option.ic2.outputeu=Макс. выход EU +option.ic2.tier=Энергоуровень + nei.options.keys.showenchant=Показать параметры зачарования From 498b5663e35e17c415131187653ebc21a2742d83 Mon Sep 17 00:00:00 2001 From: Ognev Anton Date: Tue, 18 Feb 2025 10:55:25 +0700 Subject: [PATCH 06/16] [feature] Add ic2 machines support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлена поддержка механизмов ic2 --- .../addons/ic2/HUDHandlerTEGenerator.java | 35 +++++++++++++------ .../mobius/waila/addons/ic2/IC2Module.java | 35 ++++++++++++++----- .../resources/assets/waila/lang/en_US.lang | 7 ++-- .../resources/assets/waila/lang/ru_RU.lang | 3 +- 4 files changed, 58 insertions(+), 22 deletions(-) diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java index 77ae8673..cf1cc4d6 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java @@ -1,5 +1,6 @@ package mcp.mobius.waila.addons.ic2; +import mcp.mobius.waila.Waila; import mcp.mobius.waila.api.ITaggedList; import mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; @@ -26,11 +27,13 @@ public List getWailaBody(ItemStack itemStack, List currenttip, I return currenttip; double stored = accessor.getNBTData().getDouble("stored"); + int input = accessor.getNBTData().getInteger("input"); int output = accessor.getNBTData().getInteger("output"); long capacity = accessor.getNBTData().getLong("capacity"); int tier = accessor.getNBTData().getInteger("tier"); String storedStr = LangUtil.translateG("hud.ic2.msg.stored"); + String inputStr = LangUtil.translateG("hud.ic2.msg.input"); String outputStr = LangUtil.translateG("hud.ic2.msg.output"); String tierStr = LangUtil.translateG("hud.ic2.msg.tier"); String energyLine = ""; @@ -51,9 +54,13 @@ public List getWailaBody(ItemStack itemStack, List currenttip, I ((ITaggedList) currenttip).add(energyLine, "IEnergyStorage"); } - /* Output EU */ - if (config.getConfig("ic2.outputeu") && output > 0) - currenttip.add(String.format("%s: §f%d §r EU/t", outputStr, output)); + /* Input/Output EU */ + if (config.getConfig("ic2.inouteu")) { + if (input > 0) + currenttip.add(String.format("%s: §f%d §r EU/t", inputStr, input)); + if (output > 0) + currenttip.add(String.format("%s: §f%d §r EU/t", outputStr, output)); + } /* Tier */ if (config.getConfig("ic2.tier") && tier > 0) @@ -63,33 +70,41 @@ public List getWailaBody(ItemStack itemStack, List currenttip, I return currenttip; } - @Nonnull @Override public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { - double stored = -1; - int output = -1; - long capacity = -1; + double stored = 0; + long capacity = 0; + int input = 0; + int output = 0; int tier = 0; try { if (IC2Module.generator.isInstance(te)) { stored = IC2Module.generatorStored.getDouble(te); - output = IC2Module.generatorOutput.getInt(te); capacity = IC2Module.generatorCapacity.getLong(te); + output = IC2Module.generatorOutput.getInt(te); tier = IC2Module.generatorTier.getInt(te); + } else if (IC2Module.eBlock.isInstance(te)) { stored = IC2Module.eBlockStored.getDouble(te); - output = IC2Module.eBlockOutput.getInt(te); capacity = IC2Module.eBlockCapacity.getLong(te); + output = IC2Module.eBlockOutput.getInt(te); tier = IC2Module.eBlockTier.getInt(te); + + } else if (IC2Module.eMachine.isInstance(te)) { + input = IC2Module.eMachineInput.getInt(te); + tier = IC2Module.eMachineTier.getInt(te); } + } catch (java.lang.Exception e) { throw new RuntimeException(e); } + tag.setDouble("stored", stored); - tag.setInteger("output", output); tag.setLong("capacity", capacity); + tag.setInteger("input", input); + tag.setInteger("output", output); tag.setInteger("tier", tier); return tag; diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java index e7530551..c0ddef5c 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java @@ -23,34 +23,53 @@ public class IC2Module implements IWailaPlugin { public static Field eBlockOutput = null; public static Field eBlockTier = null; + public static Class eMachine = null; + public static Field eMachineStored = null; + public static Field eMachineCapacity = null; + public static Field eMachineInput = null; + public static Field eMachineTier = null; @Override public void register(IWailaRegistrar registrar) { if (!Loader.isModLoaded("ic2")) return; try { + /* Generators */ generator = Class.forName("ic2.core.block.base.tile.TileEntityGeneratorBase"); generatorStored = generator.getDeclaredField("storage"); generatorCapacity = generator.getDeclaredField("maxStorage"); generatorOutput = generator.getDeclaredField("production"); generatorTier = generator.getDeclaredField("tier"); + registrar.registerBodyProvider(HUDHandlerTEGenerator.INSTANCE, generator); + registrar.registerNBTProvider(HUDHandlerTEGenerator.INSTANCE, generator); + + /* EU Storages */ eBlock = Class.forName("ic2.core.block.base.tile.TileEntityElectricBlock"); eBlockStored = eBlock.getDeclaredField("energy"); eBlockCapacity = eBlock.getDeclaredField("maxEnergy"); eBlockOutput = eBlock.getDeclaredField("output"); eBlockTier = eBlock.getDeclaredField("tier"); - registrar.addConfig("Industrial Craft 2", "ic2.storage", true); - registrar.addConfig("Industrial Craft 2", "ic2.percentage", true); - registrar.addConfig("Industrial Craft 2", "ic2.outputeu", true); - registrar.addConfig("Industrial Craft 2", "ic2.tier", true); + registrar.registerBodyProvider(HUDHandlerTEGenerator.INSTANCE, eBlock); + registrar.registerNBTProvider(HUDHandlerTEGenerator.INSTANCE, eBlock); + /* Machines */ + eMachine = Class.forName("ic2.core.block.base.tile.TileEntityElecMachine"); + // TODO: Вырезать или оставить + // stored и capacity понадобятся в будущем... Или нет + eMachineStored = eMachine.getDeclaredField("energy"); + eMachineCapacity = eMachine.getDeclaredField("maxEnergy"); + eMachineInput = eMachine.getDeclaredField("maxInput"); + eMachineTier = eMachine.getDeclaredField("tier"); - registrar.registerBodyProvider(HUDHandlerTEGenerator.INSTANCE, generator); - registrar.registerNBTProvider(HUDHandlerTEGenerator.INSTANCE, generator); + registrar.registerBodyProvider(HUDHandlerTEGenerator.INSTANCE, eMachine); + registrar.registerNBTProvider(HUDHandlerTEGenerator.INSTANCE, eMachine); - registrar.registerBodyProvider(HUDHandlerTEGenerator.INSTANCE, eBlock); - registrar.registerNBTProvider(HUDHandlerTEGenerator.INSTANCE, eBlock); + /* Config */ + registrar.addConfig("Industrial Craft 2", "ic2.storage", true); + registrar.addConfig("Industrial Craft 2", "ic2.percentage", true); + registrar.addConfig("Industrial Craft 2", "ic2.inouteu", true); + registrar.addConfig("Industrial Craft 2", "ic2.tier", true); } catch (Exception e) { Waila.LOGGER.warn("[Industrial Craft 2] Error while loading generator hooks.", e); diff --git a/src/main/resources/assets/waila/lang/en_US.lang b/src/main/resources/assets/waila/lang/en_US.lang index eb61aec4..6ecac7b3 100644 --- a/src/main/resources/assets/waila/lang/en_US.lang +++ b/src/main/resources/assets/waila/lang/en_US.lang @@ -66,6 +66,7 @@ hud.msg.demands=Demands hud.msg.career=Career: %s hud.ic2.msg.stored=Stored +hud.ic2.msg.input=Input hud.ic2.msg.output=Output hud.ic2.msg.tier=Tier @@ -95,8 +96,8 @@ option.capability.tankinfo=Show tank data option.capability.energyinfo=Show energy data option.ic2.storage=Show EU storage -option.ic2.percentage=Show EU percent -option.ic2.outputeu=Show Output EU -option.ic2.tier=Show Tier of Electricity +option.ic2.percentage=EU percentage +option.ic2.inouteu=Input/Output EU +option.ic2.tier=Energy tier nei.options.keys.showenchant=Show enchanting values diff --git a/src/main/resources/assets/waila/lang/ru_RU.lang b/src/main/resources/assets/waila/lang/ru_RU.lang index 461b3833..d2bb3b2c 100644 --- a/src/main/resources/assets/waila/lang/ru_RU.lang +++ b/src/main/resources/assets/waila/lang/ru_RU.lang @@ -66,6 +66,7 @@ hud.msg.demands=Запросы hud.msg.career=Карьера: %s hud.ic2.msg.stored=Хранится +hud.ic2.msg.input=Вход hud.ic2.msg.output=Выход hud.ic2.msg.tier=Энергоуровень @@ -96,7 +97,7 @@ option.capability.energyinfo=Показать данные энергии option.ic2.storage=Заряд EU option.ic2.percentage=EU в процентах -option.ic2.outputeu=Макс. выход EU +option.ic2.inouteu=Макс. вход/выход EU option.ic2.tier=Энергоуровень nei.options.keys.showenchant=Показать параметры зачарования From 204c41b9eb8156c06ac8fdddf6bb5b0bb0e672c4 Mon Sep 17 00:00:00 2001 From: Ognev Anton Date: Tue, 18 Feb 2025 11:12:33 +0700 Subject: [PATCH 07/16] [refactor] Removed unused code --- .../mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java index cf1cc4d6..a89a298c 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java @@ -1,6 +1,5 @@ package mcp.mobius.waila.addons.ic2; -import mcp.mobius.waila.Waila; import mcp.mobius.waila.api.ITaggedList; import mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; @@ -96,7 +95,7 @@ public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCom input = IC2Module.eMachineInput.getInt(te); tier = IC2Module.eMachineTier.getInt(te); } - + } catch (java.lang.Exception e) { throw new RuntimeException(e); } From b0b8189eccd7651c7bae53cbc5ed77c17488d5fd Mon Sep 17 00:00:00 2001 From: Ognev Anton Date: Tue, 18 Feb 2025 16:05:01 +0700 Subject: [PATCH 08/16] [feature] Added ic2 Crops support (WIP) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -Добавлена поддержка семян ic2 --- .../waila/addons/ic2/HUDHandlerCrops.java | 123 ++++++++++++++++++ .../addons/ic2/HUDHandlerTEGenerator.java | 1 + .../mobius/waila/addons/ic2/IC2Module.java | 37 ++++++ .../resources/assets/waila/lang/en_US.lang | 19 +++ .../resources/assets/waila/lang/ru_RU.lang | 19 +++ 5 files changed, 199 insertions(+) create mode 100644 src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java new file mode 100644 index 00000000..cf63991e --- /dev/null +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java @@ -0,0 +1,123 @@ +package mcp.mobius.waila.addons.ic2; + + +import mcp.mobius.waila.Waila; +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; +import mcp.mobius.waila.api.IWailaDataProvider; +import mcp.mobius.waila.cbcore.LangUtil; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +import javax.annotation.Nonnull; +import java.util.List; + +public class HUDHandlerCrops implements IWailaDataProvider { + + static final IWailaDataProvider INSTANCE = new HUDHandlerCrops(); + + @Nonnull + @Override + public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { + if (accessor.getTileEntity() == null) + return currenttip; + NBTTagCompound tag = (NBTTagCompound) accessor.getNBTData(); + + int scanLevel = tag.getInteger("scanLevel"); + String defaultFormat = "§f%s: %d§r"; + if (scanLevel >= 1) { + currenttip.add(LangUtil.translateG("hud.ic2.msg.growthtitile")); + currenttip.add(String.format(defaultFormat, LangUtil.translateG("hud.ic2.msg.currentsize"), tag.getInteger("currentSize"))); + currenttip.add(String.format(defaultFormat, LangUtil.translateG("hud.ic2.msg.growthpoints"), tag.getInteger("growthPoints"))); + } + if (scanLevel >= 4) { + currenttip.add(LangUtil.translateG("hud.ic2.msg.stattitle")); + currenttip.add(String.format("§f%s: §2%d/31§r", LangUtil.translateG("hud.ic2.msg.statgrowth"), tag.getInteger("statGrowth"))); + currenttip.add(String.format("§f%s: §6%d/31§r", LangUtil.translateG("hud.ic2.msg.statgain"), tag.getInteger("statGain"))); + currenttip.add(String.format("§f%s: §3%d/31§r", LangUtil.translateG("hud.ic2.msg.statresistance"), tag.getInteger("statResistance"))); + } + currenttip.add(LangUtil.translateG("hud.ic2.msg.storagetitle")); + currenttip.add(String.format(defaultFormat, LangUtil.translateG("hud.ic2.msg.storagenutrients"), tag.getInteger("storageNutrients"))); + currenttip.add(String.format(defaultFormat, LangUtil.translateG("hud.ic2.msg.storagewater"), tag.getInteger("storageWater"))); + currenttip.add(String.format(defaultFormat, LangUtil.translateG("hud.ic2.msg.storageweedex"), tag.getInteger("storageWeedEX"))); + + currenttip.add(LangUtil.translateG("hud.ic2.msg.terrraintitle")); + currenttip.add(String.format(defaultFormat, LangUtil.translateG("hud.ic2.msg.terrainnutrients"), tag.getInteger("terrainNutrients"))); + currenttip.add(String.format(defaultFormat, LangUtil.translateG("hud.ic2.msg.terrainhumidity"), tag.getInteger("terrainHumidity"))); + currenttip.add(String.format(defaultFormat, LangUtil.translateG("hud.ic2.msg.terrainairquality"), tag.getInteger("terrainAirQuality"))); + currenttip.add(String.format(defaultFormat, LangUtil.translateG("hud.ic2.msg.lightlevel"), tag.getInteger("lightLevel"))); + + + return currenttip; + } + + @Nonnull + @Override + public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { + + // TODO: Переместить в объект? Ассоциативный массив? + // TODO: Оптимизировать типы + int scanLevel = 0; + int storageNutrients = 0; + int storageWater = 0; + int storageWeedEX = 0; + + int terrainNutrients = 0; + int terrainHumidity = 0; + int terrainAirQuality = 0; + int lightLevel = 0; + + int currentSize = -1; + int growthPoints = -1; + int statGrowth = -1; + int statGain = -1; + int statResistance = -1; + + try { + if (IC2Module.crops.isInstance(te)) { + scanLevel = (Integer) IC2Module.cropsScanLevel.invoke(te); + storageNutrients = (Integer) IC2Module.cropsStorageNutrients.invoke(te); + storageWater = (Integer) IC2Module.cropsStorageWater.invoke(te); + storageWeedEX = (Integer) IC2Module.cropsStorageWeedEX.invoke(te); + terrainNutrients = (Integer) IC2Module.cropsTerrainNutrients.invoke(te); + terrainHumidity = (Integer) IC2Module.cropsTerrainHumidity.invoke(te); + terrainAirQuality = (Integer) IC2Module.cropsTerrainAirQuality.invoke(te); + lightLevel = (Integer) IC2Module.cropsLightLevel.invoke(te); + if (scanLevel >= 1) { + currentSize = (Integer) IC2Module.cropsCurrentSize.invoke(te); + growthPoints = (Integer) IC2Module.cropsGrowthPoints.invoke(te); + } + if (scanLevel >= 4) { + statGrowth = (Integer) IC2Module.cropsStatGrowth.invoke(te); + statGain = (Integer) IC2Module.cropsStatGain.invoke(te); + statResistance = (Integer) IC2Module.cropsStatResistance.invoke(te); + } + + + } + } catch (java.lang.Exception e) { + throw new RuntimeException(e); + } + + tag.setInteger("scanLevel", scanLevel); + tag.setInteger("storageNutrients", storageNutrients); + tag.setInteger("storageWater", storageWater); + tag.setInteger("storageWeedEX", storageWeedEX); + tag.setInteger("terrainNutrients", terrainNutrients); + tag.setInteger("terrainHumidity", terrainHumidity); + tag.setInteger("terrainAirQuality", terrainAirQuality); + tag.setInteger("lightLevel", lightLevel); + tag.setInteger("currentSize", currentSize); + tag.setInteger("growthPoints", growthPoints); + tag.setInteger("statGrowth", statGrowth); + tag.setInteger("statGain", statGain); + tag.setInteger("statResistance", statResistance); + + return tag; + } + +} diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java index a89a298c..7c4d994a 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java @@ -1,5 +1,6 @@ package mcp.mobius.waila.addons.ic2; +import mcp.mobius.waila.Waila; import mcp.mobius.waila.api.ITaggedList; import mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java index c0ddef5c..d8b4386a 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java @@ -7,6 +7,7 @@ import net.minecraftforge.fml.common.Loader; import java.lang.reflect.Field; +import java.lang.reflect.Method; @WailaPlugin public class IC2Module implements IWailaPlugin { @@ -29,6 +30,21 @@ public class IC2Module implements IWailaPlugin { public static Field eMachineInput = null; public static Field eMachineTier = null; + public static Class crops = null; + public static Method cropsStorageNutrients = null; + public static Method cropsStorageWater = null; + public static Method cropsStorageWeedEX = null; + public static Method cropsTerrainNutrients = null; + public static Method cropsTerrainHumidity = null; + public static Method cropsTerrainAirQuality = null; + public static Method cropsLightLevel = null; + public static Method cropsScanLevel = null; + public static Method cropsCurrentSize = null; + public static Method cropsGrowthPoints = null; + public static Method cropsStatGrowth = null; + public static Method cropsStatGain = null; + public static Method cropsStatResistance = null; + @Override public void register(IWailaRegistrar registrar) { if (!Loader.isModLoaded("ic2")) return; @@ -65,11 +81,32 @@ public void register(IWailaRegistrar registrar) { registrar.registerBodyProvider(HUDHandlerTEGenerator.INSTANCE, eMachine); registrar.registerNBTProvider(HUDHandlerTEGenerator.INSTANCE, eMachine); + /* Crops */ + crops = Class.forName("ic2.core.block.crop.TileEntityCrop"); + + cropsStorageNutrients = crops.getDeclaredMethod("getStorageNutrients"); + cropsStorageWater = crops.getDeclaredMethod("getStorageWater"); + cropsStorageWeedEX = crops.getDeclaredMethod("getStorageWeedEX"); + cropsTerrainNutrients = crops.getDeclaredMethod("getTerrainNutrients"); + cropsTerrainHumidity = crops.getDeclaredMethod("getTerrainHumidity"); + cropsTerrainAirQuality = crops.getDeclaredMethod("getTerrainAirQuality"); + cropsLightLevel = crops.getDeclaredMethod("getLightLevel"); + cropsScanLevel = crops.getDeclaredMethod("getScanLevel"); + cropsCurrentSize = crops.getDeclaredMethod("getCurrentSize"); + cropsGrowthPoints = crops.getDeclaredMethod("getGrowthPoints"); + cropsStatGrowth = crops.getDeclaredMethod("getStatGrowth"); + cropsStatGain = crops.getDeclaredMethod("getStatGain"); + cropsStatResistance = crops.getDeclaredMethod("getStatResistance"); + + registrar.registerBodyProvider(HUDHandlerCrops.INSTANCE, crops); + registrar.registerNBTProvider(HUDHandlerCrops.INSTANCE, crops); + /* Config */ registrar.addConfig("Industrial Craft 2", "ic2.storage", true); registrar.addConfig("Industrial Craft 2", "ic2.percentage", true); registrar.addConfig("Industrial Craft 2", "ic2.inouteu", true); registrar.addConfig("Industrial Craft 2", "ic2.tier", true); + registrar.addConfig("Industrial Craft 2", "ic2.crops", true); } catch (Exception e) { Waila.LOGGER.warn("[Industrial Craft 2] Error while loading generator hooks.", e); diff --git a/src/main/resources/assets/waila/lang/en_US.lang b/src/main/resources/assets/waila/lang/en_US.lang index 6ecac7b3..784d8126 100644 --- a/src/main/resources/assets/waila/lang/en_US.lang +++ b/src/main/resources/assets/waila/lang/en_US.lang @@ -70,6 +70,25 @@ hud.ic2.msg.input=Input hud.ic2.msg.output=Output hud.ic2.msg.tier=Tier +hud.ic2.msg.growthtitile=Growth +hud.ic2.msg.currentsize=Stage +hud.ic2.msg.growthpoints=Points + +hud.ic2.msg.stattitle=Stats +hud.ic2.msg.statgrowth=Growth +hud.ic2.msg.statgain=Gain +hud.ic2.msg.statresistance=Resistance + +hud.ic2.msg.storagetitle=Storage +hud.ic2.msg.storagenutrients=Nutrients +hud.ic2.msg.storagewater=Water +hud.ic2.msg.storageweedex=WeedEX +hud.ic2.msg.terrraintitle=Terrain +hud.ic2.msg.terrainnutrients=Nutrients +hud.ic2.msg.terrainhumidity=Humidity +hud.ic2.msg.terrainairquality=Air Quality +hud.ic2.msg.lightlevel=Light Level + hud.te.msg.stored=Stored hud.te.msg.capacity=Capacity diff --git a/src/main/resources/assets/waila/lang/ru_RU.lang b/src/main/resources/assets/waila/lang/ru_RU.lang index d2bb3b2c..b15e6148 100644 --- a/src/main/resources/assets/waila/lang/ru_RU.lang +++ b/src/main/resources/assets/waila/lang/ru_RU.lang @@ -70,6 +70,25 @@ hud.ic2.msg.input=Вход hud.ic2.msg.output=Выход hud.ic2.msg.tier=Энергоуровень +hud.ic2.msg.growthtitile=Рост +hud.ic2.msg.currentsize=Этап +hud.ic2.msg.growthpoints=Очки + +hud.ic2.msg.stattitle=Параметры +hud.ic2.msg.statgrowth=Рост +hud.ic2.msg.statgain=Прирост +hud.ic2.msg.statresistance=Сопротивление + +hud.ic2.msg.storagetitle=Хранилище +hud.ic2.msg.storagenutrients=Удобрение +hud.ic2.msg.storagewater=Вода +hud.ic2.msg.storageweedex=Средство от сорняков +hud.ic2.msg.terrraintitle=Окружающая среда +hud.ic2.msg.terrainnutrients=Питательные вещества +hud.ic2.msg.terrainhumidity=Влажность +hud.ic2.msg.terrainairquality=Качество окружения +hud.ic2.msg.lightlevel=Уровень освещенности + hud.te.msg.stored=Хранится hud.te.msg.capacity=Объём From 890607995bcf74aad7d774de2b37ef5e951ac731 Mon Sep 17 00:00:00 2001 From: Ognev Anton Date: Tue, 18 Feb 2025 22:49:41 +0700 Subject: [PATCH 09/16] [refactor] Optimize module ic2 + crops --- .../waila/addons/ic2/HUDHandlerCrops.java | 148 ++++++++---------- .../addons/ic2/HUDHandlerTEGenerator.java | 132 ++++++++-------- 2 files changed, 133 insertions(+), 147 deletions(-) diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java index cf63991e..bf1ba082 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java @@ -1,7 +1,5 @@ package mcp.mobius.waila.addons.ic2; - -import mcp.mobius.waila.Waila; import mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; import mcp.mobius.waila.api.IWailaDataProvider; @@ -12,112 +10,94 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import javax.annotation.Nonnull; import java.util.List; +import java.util.Optional; public class HUDHandlerCrops implements IWailaDataProvider { + private static final Logger LOGGER = LogManager.getLogger(); static final IWailaDataProvider INSTANCE = new HUDHandlerCrops(); + private static final String DEFAULT_FORMAT = "§f%s: %d§r"; + private static final String TITLE_FORMAT = "§f%s§r"; + private static final String STAT_GROWTH_FORMAT = "§f%s: §2%d/31§r"; + private static final String STAT_GAIN_FORMAT = "§f%s: §6%d/31§r"; + private static final String STAT_RESISTANCE_FORMAT = "§f%s: §3%d/31§r"; + @Nonnull @Override public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { - if (accessor.getTileEntity() == null) - return currenttip; - NBTTagCompound tag = (NBTTagCompound) accessor.getNBTData(); - - int scanLevel = tag.getInteger("scanLevel"); - String defaultFormat = "§f%s: %d§r"; - if (scanLevel >= 1) { - currenttip.add(LangUtil.translateG("hud.ic2.msg.growthtitile")); - currenttip.add(String.format(defaultFormat, LangUtil.translateG("hud.ic2.msg.currentsize"), tag.getInteger("currentSize"))); - currenttip.add(String.format(defaultFormat, LangUtil.translateG("hud.ic2.msg.growthpoints"), tag.getInteger("growthPoints"))); - } - if (scanLevel >= 4) { - currenttip.add(LangUtil.translateG("hud.ic2.msg.stattitle")); - currenttip.add(String.format("§f%s: §2%d/31§r", LangUtil.translateG("hud.ic2.msg.statgrowth"), tag.getInteger("statGrowth"))); - currenttip.add(String.format("§f%s: §6%d/31§r", LangUtil.translateG("hud.ic2.msg.statgain"), tag.getInteger("statGain"))); - currenttip.add(String.format("§f%s: §3%d/31§r", LangUtil.translateG("hud.ic2.msg.statresistance"), tag.getInteger("statResistance"))); - } - currenttip.add(LangUtil.translateG("hud.ic2.msg.storagetitle")); - currenttip.add(String.format(defaultFormat, LangUtil.translateG("hud.ic2.msg.storagenutrients"), tag.getInteger("storageNutrients"))); - currenttip.add(String.format(defaultFormat, LangUtil.translateG("hud.ic2.msg.storagewater"), tag.getInteger("storageWater"))); - currenttip.add(String.format(defaultFormat, LangUtil.translateG("hud.ic2.msg.storageweedex"), tag.getInteger("storageWeedEX"))); - - currenttip.add(LangUtil.translateG("hud.ic2.msg.terrraintitle")); - currenttip.add(String.format(defaultFormat, LangUtil.translateG("hud.ic2.msg.terrainnutrients"), tag.getInteger("terrainNutrients"))); - currenttip.add(String.format(defaultFormat, LangUtil.translateG("hud.ic2.msg.terrainhumidity"), tag.getInteger("terrainHumidity"))); - currenttip.add(String.format(defaultFormat, LangUtil.translateG("hud.ic2.msg.terrainairquality"), tag.getInteger("terrainAirQuality"))); - currenttip.add(String.format(defaultFormat, LangUtil.translateG("hud.ic2.msg.lightlevel"), tag.getInteger("lightLevel"))); + Optional.ofNullable(accessor.getTileEntity()).ifPresent(te -> { + NBTTagCompound tag = accessor.getNBTData(); + int scanLevel = tag.getInteger("scanLevel"); + if (scanLevel >= 1) { + addGrowthInfo(currenttip, tag); + } + if (scanLevel >= 4) { + addStatInfo(currenttip, tag); + } + addStorageInfo(currenttip, tag); + addTerrainInfo(currenttip, tag); + }); return currenttip; } - @Nonnull - @Override - public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { + private void addGrowthInfo(List currenttip, NBTTagCompound tag) { + currenttip.add(String.format(TITLE_FORMAT, LangUtil.translateG("hud.ic2.msg.growthtitile"))); + currenttip.add(String.format(DEFAULT_FORMAT, LangUtil.translateG("hud.ic2.msg.currentsize"), tag.getInteger("currentSize"))); + currenttip.add(String.format(DEFAULT_FORMAT, LangUtil.translateG("hud.ic2.msg.growthpoints"), tag.getInteger("growthPoints"))); + } - // TODO: Переместить в объект? Ассоциативный массив? - // TODO: Оптимизировать типы - int scanLevel = 0; - int storageNutrients = 0; - int storageWater = 0; - int storageWeedEX = 0; + private void addStatInfo(List currenttip, NBTTagCompound tag) { + currenttip.add(String.format(TITLE_FORMAT, LangUtil.translateG("hud.ic2.msg.stattitle"))); + currenttip.add(String.format(STAT_GROWTH_FORMAT, LangUtil.translateG("hud.ic2.msg.statgrowth"), tag.getInteger("statGrowth"))); + currenttip.add(String.format(STAT_GAIN_FORMAT, LangUtil.translateG("hud.ic2.msg.statgain"), tag.getInteger("statGain"))); + currenttip.add(String.format(STAT_RESISTANCE_FORMAT, LangUtil.translateG("hud.ic2.msg.statresistance"), tag.getInteger("statResistance"))); + } - int terrainNutrients = 0; - int terrainHumidity = 0; - int terrainAirQuality = 0; - int lightLevel = 0; + private void addStorageInfo(List currenttip, NBTTagCompound tag) { + currenttip.add(String.format(TITLE_FORMAT, LangUtil.translateG("hud.ic2.msg.storagetitle"))); + currenttip.add(String.format(DEFAULT_FORMAT, LangUtil.translateG("hud.ic2.msg.storagenutrients"), tag.getInteger("storageNutrients"))); + currenttip.add(String.format(DEFAULT_FORMAT, LangUtil.translateG("hud.ic2.msg.storagewater"), tag.getInteger("storageWater"))); + currenttip.add(String.format(DEFAULT_FORMAT, LangUtil.translateG("hud.ic2.msg.storageweedex"), tag.getInteger("storageWeedEX"))); + } - int currentSize = -1; - int growthPoints = -1; - int statGrowth = -1; - int statGain = -1; - int statResistance = -1; + private void addTerrainInfo(List currenttip, NBTTagCompound tag) { + currenttip.add(String.format(TITLE_FORMAT, LangUtil.translateG("hud.ic2.msg.terrraintitle"))); + currenttip.add(String.format(DEFAULT_FORMAT, LangUtil.translateG("hud.ic2.msg.terrainnutrients"), tag.getInteger("terrainNutrients"))); + currenttip.add(String.format(DEFAULT_FORMAT, LangUtil.translateG("hud.ic2.msg.terrainhumidity"), tag.getInteger("terrainHumidity"))); + currenttip.add(String.format(DEFAULT_FORMAT, LangUtil.translateG("hud.ic2.msg.terrainairquality"), tag.getInteger("terrainAirQuality"))); + currenttip.add(String.format(DEFAULT_FORMAT, LangUtil.translateG("hud.ic2.msg.lightlevel"), tag.getInteger("lightLevel"))); + } + @Nonnull + @Override + public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { try { if (IC2Module.crops.isInstance(te)) { - scanLevel = (Integer) IC2Module.cropsScanLevel.invoke(te); - storageNutrients = (Integer) IC2Module.cropsStorageNutrients.invoke(te); - storageWater = (Integer) IC2Module.cropsStorageWater.invoke(te); - storageWeedEX = (Integer) IC2Module.cropsStorageWeedEX.invoke(te); - terrainNutrients = (Integer) IC2Module.cropsTerrainNutrients.invoke(te); - terrainHumidity = (Integer) IC2Module.cropsTerrainHumidity.invoke(te); - terrainAirQuality = (Integer) IC2Module.cropsTerrainAirQuality.invoke(te); - lightLevel = (Integer) IC2Module.cropsLightLevel.invoke(te); - if (scanLevel >= 1) { - currentSize = (Integer) IC2Module.cropsCurrentSize.invoke(te); - growthPoints = (Integer) IC2Module.cropsGrowthPoints.invoke(te); - } - if (scanLevel >= 4) { - statGrowth = (Integer) IC2Module.cropsStatGrowth.invoke(te); - statGain = (Integer) IC2Module.cropsStatGain.invoke(te); - statResistance = (Integer) IC2Module.cropsStatResistance.invoke(te); - } - - + tag.setInteger("scanLevel", (Integer) IC2Module.cropsScanLevel.invoke(te)); + tag.setInteger("storageNutrients", (Integer) IC2Module.cropsStorageNutrients.invoke(te)); + tag.setInteger("storageWater", (Integer) IC2Module.cropsStorageWater.invoke(te)); + tag.setInteger("storageWeedEX", (Integer) IC2Module.cropsStorageWeedEX.invoke(te)); + tag.setInteger("terrainNutrients", (Integer) IC2Module.cropsTerrainNutrients.invoke(te)); + tag.setInteger("terrainHumidity", (Integer) IC2Module.cropsTerrainHumidity.invoke(te)); + tag.setInteger("terrainAirQuality", (Integer) IC2Module.cropsTerrainAirQuality.invoke(te)); + tag.setInteger("lightLevel", (Integer) IC2Module.cropsLightLevel.invoke(te)); + tag.setInteger("currentSize", (Integer) IC2Module.cropsCurrentSize.invoke(te)); + tag.setInteger("growthPoints", (Integer) IC2Module.cropsGrowthPoints.invoke(te)); + tag.setInteger("statGrowth", (Integer) IC2Module.cropsStatGrowth.invoke(te)); + tag.setInteger("statGain", (Integer) IC2Module.cropsStatGain.invoke(te)); + tag.setInteger("statResistance", (Integer) IC2Module.cropsStatResistance.invoke(te)); } - } catch (java.lang.Exception e) { - throw new RuntimeException(e); + } catch (Exception e) { + LOGGER.error("Failed to get crop data", e); } - - tag.setInteger("scanLevel", scanLevel); - tag.setInteger("storageNutrients", storageNutrients); - tag.setInteger("storageWater", storageWater); - tag.setInteger("storageWeedEX", storageWeedEX); - tag.setInteger("terrainNutrients", terrainNutrients); - tag.setInteger("terrainHumidity", terrainHumidity); - tag.setInteger("terrainAirQuality", terrainAirQuality); - tag.setInteger("lightLevel", lightLevel); - tag.setInteger("currentSize", currentSize); - tag.setInteger("growthPoints", growthPoints); - tag.setInteger("statGrowth", statGrowth); - tag.setInteger("statGain", statGain); - tag.setInteger("statResistance", statResistance); - return tag; } - } diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java index 7c4d994a..bb449509 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java @@ -1,6 +1,5 @@ package mcp.mobius.waila.addons.ic2; -import mcp.mobius.waila.Waila; import mcp.mobius.waila.api.ITaggedList; import mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; @@ -12,101 +11,108 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import javax.annotation.Nonnull; import java.util.List; public class HUDHandlerTEGenerator implements IWailaDataProvider { + private static final Logger LOGGER = LogManager.getLogger(); static final IWailaDataProvider INSTANCE = new HUDHandlerTEGenerator(); + private static final String ENERGY_STORAGE_FORMAT = "%s: §f%d§r / §f%d§r EU"; + private static final String PERCENTAGE_FORMAT = " (§f%d%%§r)"; + private static final String INPUT_OUTPUT_FORMAT = "%s: §f%d §r EU/t"; + private static final String TIER_FORMAT = "%s: §f%d §r"; + @Nonnull @Override public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { - if (accessor.getTileEntity() == null) + if (accessor.getTileEntity() == null) { return currenttip; + } - double stored = accessor.getNBTData().getDouble("stored"); - int input = accessor.getNBTData().getInteger("input"); - int output = accessor.getNBTData().getInteger("output"); - long capacity = accessor.getNBTData().getLong("capacity"); - int tier = accessor.getNBTData().getInteger("tier"); + NBTTagCompound nbtData = accessor.getNBTData(); + double stored = nbtData.getDouble("stored"); + int input = nbtData.getInteger("input"); + int output = nbtData.getInteger("output"); + long capacity = nbtData.getLong("capacity"); + int tier = nbtData.getInteger("tier"); - String storedStr = LangUtil.translateG("hud.ic2.msg.stored"); - String inputStr = LangUtil.translateG("hud.ic2.msg.input"); - String outputStr = LangUtil.translateG("hud.ic2.msg.output"); - String tierStr = LangUtil.translateG("hud.ic2.msg.tier"); - String energyLine = ""; + addEnergyStorageInfo(currenttip, config, stored, capacity); + addInputOutputInfo(currenttip, config, input, output); + addTierInfo(currenttip, config, tier); + + return currenttip; + } - /* EU Storage*/ + private void addEnergyStorageInfo(List currenttip, IWailaConfigHandler config, double stored, long capacity) { if (capacity > 0) { - if (config.getConfig("ic2.storage")) - energyLine += String.format( - "%s: §f%d§r / §f%d§r EU", - storedStr, - Math.round(Math.min(stored, capacity)), - capacity - ); - - if (config.getConfig("ic2.percentage")) - energyLine += String.format(" (§f%d%%§r)", Math.round((stored / capacity) * 100)); - - ((ITaggedList) currenttip).add(energyLine, "IEnergyStorage"); - } + StringBuilder energyLine = new StringBuilder(); + String storedStr = LangUtil.translateG("hud.ic2.msg.stored"); - /* Input/Output EU */ - if (config.getConfig("ic2.inouteu")) { - if (input > 0) - currenttip.add(String.format("%s: §f%d §r EU/t", inputStr, input)); - if (output > 0) - currenttip.add(String.format("%s: §f%d §r EU/t", outputStr, output)); + if (config.getConfig("ic2.storage")) { + energyLine.append(String.format(ENERGY_STORAGE_FORMAT, storedStr, Math.round(Math.min(stored, capacity)), capacity)); + } + + if (config.getConfig("ic2.percentage")) { + energyLine.append(String.format(PERCENTAGE_FORMAT, Math.round((stored / capacity) * 100))); + } + + ((ITaggedList) currenttip).add(energyLine.toString(), "IEnergyStorage"); } + } - /* Tier */ - if (config.getConfig("ic2.tier") && tier > 0) - currenttip.add(String.format("%s: §f%d §r", tierStr, tier)); + private void addInputOutputInfo(List currenttip, IWailaConfigHandler config, int input, int output) { + String inputStr = LangUtil.translateG("hud.ic2.msg.input"); + String outputStr = LangUtil.translateG("hud.ic2.msg.output"); + if (config.getConfig("ic2.inouteu")) { + if (input > 0) { + currenttip.add(String.format(INPUT_OUTPUT_FORMAT, inputStr, input)); + } + if (output > 0) { + currenttip.add(String.format(INPUT_OUTPUT_FORMAT, outputStr, output)); + } + } + } - return currenttip; + private void addTierInfo(List currenttip, IWailaConfigHandler config, int tier) { + String tierStr = LangUtil.translateG("hud.ic2.msg.tier"); + if (config.getConfig("ic2.tier") && tier > 0) { + currenttip.add(String.format(TIER_FORMAT, tierStr, tier)); + } } @Nonnull @Override public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { - double stored = 0; - long capacity = 0; - int input = 0; - int output = 0; - int tier = 0; - try { if (IC2Module.generator.isInstance(te)) { - stored = IC2Module.generatorStored.getDouble(te); - capacity = IC2Module.generatorCapacity.getLong(te); - output = IC2Module.generatorOutput.getInt(te); - tier = IC2Module.generatorTier.getInt(te); + tag.setDouble("stored", IC2Module.generatorStored.getDouble(te)); + tag.setLong("capacity", IC2Module.generatorCapacity.getLong(te)); + tag.setInteger("input", 0); + tag.setInteger("output", IC2Module.generatorOutput.getInt(te)); + tag.setInteger("tier", IC2Module.generatorTier.getInt(te)); } else if (IC2Module.eBlock.isInstance(te)) { - stored = IC2Module.eBlockStored.getDouble(te); - capacity = IC2Module.eBlockCapacity.getLong(te); - output = IC2Module.eBlockOutput.getInt(te); - tier = IC2Module.eBlockTier.getInt(te); - + tag.setDouble("stored", IC2Module.eBlockStored.getDouble(te)); + tag.setLong("capacity", IC2Module.eBlockCapacity.getLong(te)); + tag.setInteger("input", 0); + tag.setInteger("output", IC2Module.eBlockOutput.getInt(te)); + tag.setInteger("tier", IC2Module.eBlockTier.getInt(te)); } else if (IC2Module.eMachine.isInstance(te)) { - input = IC2Module.eMachineInput.getInt(te); - tier = IC2Module.eMachineTier.getInt(te); + tag.setDouble("stored", 0); + tag.setLong("capacity", 0); + tag.setInteger("input", IC2Module.eMachineInput.getInt(te)); + tag.setInteger("output", 0); + tag.setInteger("tier", IC2Module.eMachineTier.getInt(te)); } - - } catch (java.lang.Exception e) { - throw new RuntimeException(e); + } catch (Exception e) { + LOGGER.error("Failed to get generator data", e); } - - tag.setDouble("stored", stored); - tag.setLong("capacity", capacity); - tag.setInteger("input", input); - tag.setInteger("output", output); - tag.setInteger("tier", tier); - return tag; } } From aec050c19c737c8b93270ce55cab5d9f55792b0b Mon Sep 17 00:00:00 2001 From: Ognev Anton Date: Wed, 19 Feb 2025 17:12:52 +0700 Subject: [PATCH 10/16] [refactor] Rename ic2 class MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Переименован класс с `HUDHandlerTEGenerator` на `HUDHandlerMachines`. Прежний файл был взят с модуля ThermalExpansion и не переименован. --- ...lerTEGenerator.java => HUDHandlerMachines.java} | 4 ++-- .../mcp/mobius/waila/addons/ic2/IC2Module.java | 14 ++++++-------- 2 files changed, 8 insertions(+), 10 deletions(-) rename src/main/java/mcp/mobius/waila/addons/ic2/{HUDHandlerTEGenerator.java => HUDHandlerMachines.java} (97%) diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerMachines.java similarity index 97% rename from src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java rename to src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerMachines.java index bb449509..a09ea7fc 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTEGenerator.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerMachines.java @@ -17,10 +17,10 @@ import javax.annotation.Nonnull; import java.util.List; -public class HUDHandlerTEGenerator implements IWailaDataProvider { +public class HUDHandlerMachines implements IWailaDataProvider { private static final Logger LOGGER = LogManager.getLogger(); - static final IWailaDataProvider INSTANCE = new HUDHandlerTEGenerator(); + static final IWailaDataProvider INSTANCE = new HUDHandlerMachines(); private static final String ENERGY_STORAGE_FORMAT = "%s: §f%d§r / §f%d§r EU"; private static final String PERCENTAGE_FORMAT = " (§f%d%%§r)"; diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java index d8b4386a..601b7c3d 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java @@ -56,8 +56,8 @@ public void register(IWailaRegistrar registrar) { generatorOutput = generator.getDeclaredField("production"); generatorTier = generator.getDeclaredField("tier"); - registrar.registerBodyProvider(HUDHandlerTEGenerator.INSTANCE, generator); - registrar.registerNBTProvider(HUDHandlerTEGenerator.INSTANCE, generator); + registrar.registerBodyProvider(HUDHandlerMachines.INSTANCE, generator); + registrar.registerNBTProvider(HUDHandlerMachines.INSTANCE, generator); /* EU Storages */ eBlock = Class.forName("ic2.core.block.base.tile.TileEntityElectricBlock"); @@ -66,20 +66,18 @@ public void register(IWailaRegistrar registrar) { eBlockOutput = eBlock.getDeclaredField("output"); eBlockTier = eBlock.getDeclaredField("tier"); - registrar.registerBodyProvider(HUDHandlerTEGenerator.INSTANCE, eBlock); - registrar.registerNBTProvider(HUDHandlerTEGenerator.INSTANCE, eBlock); + registrar.registerBodyProvider(HUDHandlerMachines.INSTANCE, eBlock); + registrar.registerNBTProvider(HUDHandlerMachines.INSTANCE, eBlock); /* Machines */ eMachine = Class.forName("ic2.core.block.base.tile.TileEntityElecMachine"); - // TODO: Вырезать или оставить - // stored и capacity понадобятся в будущем... Или нет eMachineStored = eMachine.getDeclaredField("energy"); eMachineCapacity = eMachine.getDeclaredField("maxEnergy"); eMachineInput = eMachine.getDeclaredField("maxInput"); eMachineTier = eMachine.getDeclaredField("tier"); - registrar.registerBodyProvider(HUDHandlerTEGenerator.INSTANCE, eMachine); - registrar.registerNBTProvider(HUDHandlerTEGenerator.INSTANCE, eMachine); + registrar.registerBodyProvider(HUDHandlerMachines.INSTANCE, eMachine); + registrar.registerNBTProvider(HUDHandlerMachines.INSTANCE, eMachine); /* Crops */ crops = Class.forName("ic2.core.block.crop.TileEntityCrop"); From f2a1b42464c3861b8c065c8f94bd3031d362daec Mon Sep 17 00:00:00 2001 From: Ognev Anton Date: Fri, 21 Feb 2025 01:52:35 +0700 Subject: [PATCH 11/16] [feature] Rework crop overlay tip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлена возможность скрыть лишнюю информацию без необходимости - Добавлен предпросмотр иконки семян - Добавлено форматирование для улучшения восприятия информации - Добавлены "Пределы" для характеристк семян --- .../waila/addons/ic2/HUDHandlerCrops.java | 127 ++++++---- .../waila/addons/ic2/HUDHandlerMachines.java | 6 +- .../mobius/waila/addons/ic2/IC2Module.java | 219 +++++++++++------- .../resources/assets/waila/lang/en_US.lang | 2 + .../resources/assets/waila/lang/ru_RU.lang | 2 + 5 files changed, 221 insertions(+), 135 deletions(-) diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java index bf1ba082..3ea46a32 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java @@ -22,78 +22,121 @@ public class HUDHandlerCrops implements IWailaDataProvider { private static final Logger LOGGER = LogManager.getLogger(); static final IWailaDataProvider INSTANCE = new HUDHandlerCrops(); - private static final String DEFAULT_FORMAT = "§f%s: %d§r"; - private static final String TITLE_FORMAT = "§f%s§r"; - private static final String STAT_GROWTH_FORMAT = "§f%s: §2%d/31§r"; - private static final String STAT_GAIN_FORMAT = "§f%s: §6%d/31§r"; - private static final String STAT_RESISTANCE_FORMAT = "§f%s: §3%d/31§r"; + private static final String FORMAT_PARAMS_DEFAULT = "§f%s: %d/%d§r"; + private static final String FORMAT_PARAMS_COLORED = "%s%s:§r §f%d/%d§r"; + private static final String FORMAT_PARAMS_TITLE = "§e%s§r"; + + @Nonnull + @Override + public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) { + ItemStack result = accessor.getStack(); + TileEntity te = accessor.getTileEntity(); + try { + if (!IC2Module.TileEntityCrop.isInstance(te)) return result; + + Object cropCard = IC2Module.teCropGetCropCard.invoke(te); + + if (cropCard == null) return result; + Object instance = IC2Module.ic2cropsInstance.get(null); + ItemStack displayItem = (ItemStack) IC2Module.ic2cropsDisplayItem.invoke(instance, cropCard); + if (displayItem == null) return result; + result = displayItem; + + + } catch (Exception e) { + LOGGER.error("Failed to get crop data", e); + } + return result; + } + + @Nonnull + @Override + public List getWailaHead(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { + return currenttip; + } @Nonnull @Override public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { + if (!config.getConfig("ic2.crops")) return currenttip; + Optional.ofNullable(accessor.getTileEntity()).ifPresent(te -> { NBTTagCompound tag = accessor.getNBTData(); int scanLevel = tag.getInteger("scanLevel"); - if (scanLevel >= 1) { - addGrowthInfo(currenttip, tag); - } - if (scanLevel >= 4) { - addStatInfo(currenttip, tag); + if (!accessor.getPlayer().isSneaking() && config.getConfig("ic2.crops.sheakshow")) { + currenttip.add(String.format(FORMAT_PARAMS_TITLE, LangUtil.translateG("hud.ic2.msg.sneaktip"))); + } else { + if (scanLevel < 4) { + currenttip.add(String.format(FORMAT_PARAMS_DEFAULT, LangUtil.translateG("hud.ic2.msg.scanlevel"), scanLevel, 4)); + } + if (scanLevel >= 1) { + addGrowthInfo(currenttip, tag); + } + if (scanLevel >= 4) { + addStatInfo(currenttip, tag); + } + addStorageInfo(currenttip, tag); + addTerrainInfo(currenttip, tag); } - addStorageInfo(currenttip, tag); - addTerrainInfo(currenttip, tag); }); return currenttip; } private void addGrowthInfo(List currenttip, NBTTagCompound tag) { - currenttip.add(String.format(TITLE_FORMAT, LangUtil.translateG("hud.ic2.msg.growthtitile"))); - currenttip.add(String.format(DEFAULT_FORMAT, LangUtil.translateG("hud.ic2.msg.currentsize"), tag.getInteger("currentSize"))); - currenttip.add(String.format(DEFAULT_FORMAT, LangUtil.translateG("hud.ic2.msg.growthpoints"), tag.getInteger("growthPoints"))); + + currenttip.add(String.format(FORMAT_PARAMS_TITLE, LangUtil.translateG("hud.ic2.msg.growthtitile"))); + currenttip.add(String.format(FORMAT_PARAMS_DEFAULT, LangUtil.translateG("hud.ic2.msg.currentsize"), tag.getInteger("currentSize"), tag.getInteger("maxSize"))); + currenttip.add(String.format(FORMAT_PARAMS_DEFAULT, LangUtil.translateG("hud.ic2.msg.growthpoints"), tag.getInteger("growthPoints"), tag.getInteger("maxPoints"))); } private void addStatInfo(List currenttip, NBTTagCompound tag) { - currenttip.add(String.format(TITLE_FORMAT, LangUtil.translateG("hud.ic2.msg.stattitle"))); - currenttip.add(String.format(STAT_GROWTH_FORMAT, LangUtil.translateG("hud.ic2.msg.statgrowth"), tag.getInteger("statGrowth"))); - currenttip.add(String.format(STAT_GAIN_FORMAT, LangUtil.translateG("hud.ic2.msg.statgain"), tag.getInteger("statGain"))); - currenttip.add(String.format(STAT_RESISTANCE_FORMAT, LangUtil.translateG("hud.ic2.msg.statresistance"), tag.getInteger("statResistance"))); + currenttip.add(String.format(FORMAT_PARAMS_TITLE, LangUtil.translateG("hud.ic2.msg.stattitle"))); + currenttip.add(String.format(FORMAT_PARAMS_COLORED, "§2", LangUtil.translateG("hud.ic2.msg.statgrowth"), tag.getInteger("statGrowth"), 31)); + currenttip.add(String.format(FORMAT_PARAMS_COLORED, "§6", LangUtil.translateG("hud.ic2.msg.statgain"), tag.getInteger("statGain"), 31)); + currenttip.add(String.format(FORMAT_PARAMS_COLORED, "§3", LangUtil.translateG("hud.ic2.msg.statresistance"), tag.getInteger("statResistance"), 31)); } private void addStorageInfo(List currenttip, NBTTagCompound tag) { - currenttip.add(String.format(TITLE_FORMAT, LangUtil.translateG("hud.ic2.msg.storagetitle"))); - currenttip.add(String.format(DEFAULT_FORMAT, LangUtil.translateG("hud.ic2.msg.storagenutrients"), tag.getInteger("storageNutrients"))); - currenttip.add(String.format(DEFAULT_FORMAT, LangUtil.translateG("hud.ic2.msg.storagewater"), tag.getInteger("storageWater"))); - currenttip.add(String.format(DEFAULT_FORMAT, LangUtil.translateG("hud.ic2.msg.storageweedex"), tag.getInteger("storageWeedEX"))); + currenttip.add(String.format(FORMAT_PARAMS_TITLE, LangUtil.translateG("hud.ic2.msg.storagetitle"))); + currenttip.add(String.format(FORMAT_PARAMS_DEFAULT, LangUtil.translateG("hud.ic2.msg.storagenutrients"), tag.getInteger("storageNutrients"), 300)); + currenttip.add(String.format(FORMAT_PARAMS_DEFAULT, LangUtil.translateG("hud.ic2.msg.storagewater"), tag.getInteger("storageWater"), 200)); + currenttip.add(String.format(FORMAT_PARAMS_DEFAULT, LangUtil.translateG("hud.ic2.msg.storageweedex"), tag.getInteger("storageWeedEX"), 150)); } private void addTerrainInfo(List currenttip, NBTTagCompound tag) { - currenttip.add(String.format(TITLE_FORMAT, LangUtil.translateG("hud.ic2.msg.terrraintitle"))); - currenttip.add(String.format(DEFAULT_FORMAT, LangUtil.translateG("hud.ic2.msg.terrainnutrients"), tag.getInteger("terrainNutrients"))); - currenttip.add(String.format(DEFAULT_FORMAT, LangUtil.translateG("hud.ic2.msg.terrainhumidity"), tag.getInteger("terrainHumidity"))); - currenttip.add(String.format(DEFAULT_FORMAT, LangUtil.translateG("hud.ic2.msg.terrainairquality"), tag.getInteger("terrainAirQuality"))); - currenttip.add(String.format(DEFAULT_FORMAT, LangUtil.translateG("hud.ic2.msg.lightlevel"), tag.getInteger("lightLevel"))); + currenttip.add(String.format(FORMAT_PARAMS_TITLE, LangUtil.translateG("hud.ic2.msg.terrraintitle"))); + currenttip.add(String.format(FORMAT_PARAMS_DEFAULT, LangUtil.translateG("hud.ic2.msg.terrainnutrients"), tag.getInteger("terrainNutrients"), 20)); + currenttip.add(String.format(FORMAT_PARAMS_DEFAULT, LangUtil.translateG("hud.ic2.msg.terrainhumidity"), tag.getInteger("terrainHumidity"), 20)); + currenttip.add(String.format(FORMAT_PARAMS_DEFAULT, LangUtil.translateG("hud.ic2.msg.terrainairquality"), tag.getInteger("terrainAirQuality"), 10)); + currenttip.add(String.format(FORMAT_PARAMS_DEFAULT, LangUtil.translateG("hud.ic2.msg.lightlevel"), tag.getInteger("lightLevel"), 15)); } @Nonnull @Override public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { try { - if (IC2Module.crops.isInstance(te)) { - tag.setInteger("scanLevel", (Integer) IC2Module.cropsScanLevel.invoke(te)); - tag.setInteger("storageNutrients", (Integer) IC2Module.cropsStorageNutrients.invoke(te)); - tag.setInteger("storageWater", (Integer) IC2Module.cropsStorageWater.invoke(te)); - tag.setInteger("storageWeedEX", (Integer) IC2Module.cropsStorageWeedEX.invoke(te)); - tag.setInteger("terrainNutrients", (Integer) IC2Module.cropsTerrainNutrients.invoke(te)); - tag.setInteger("terrainHumidity", (Integer) IC2Module.cropsTerrainHumidity.invoke(te)); - tag.setInteger("terrainAirQuality", (Integer) IC2Module.cropsTerrainAirQuality.invoke(te)); - tag.setInteger("lightLevel", (Integer) IC2Module.cropsLightLevel.invoke(te)); - tag.setInteger("currentSize", (Integer) IC2Module.cropsCurrentSize.invoke(te)); - tag.setInteger("growthPoints", (Integer) IC2Module.cropsGrowthPoints.invoke(te)); - tag.setInteger("statGrowth", (Integer) IC2Module.cropsStatGrowth.invoke(te)); - tag.setInteger("statGain", (Integer) IC2Module.cropsStatGain.invoke(te)); - tag.setInteger("statResistance", (Integer) IC2Module.cropsStatResistance.invoke(te)); + if (IC2Module.TileEntityCrop.isInstance(te)) { + Object cropCard = IC2Module.teCropGetCropCard.invoke(te); + if (cropCard != null) { + tag.setInteger("maxSize", (Integer) IC2Module.cCardMaxSize.invoke(cropCard)); + tag.setInteger("maxPoints", (Integer) IC2Module.cCardMaxPoints.invoke(cropCard, IC2Module.ICropTile.cast(te))); + } + + tag.setInteger("scanLevel", (Integer) IC2Module.teCropScanLevel.invoke(te)); + tag.setInteger("storageNutrients", (Integer) IC2Module.teCropStorageNutrients.invoke(te)); + tag.setInteger("storageWater", (Integer) IC2Module.teCropStorageWater.invoke(te)); + tag.setInteger("storageWeedEX", (Integer) IC2Module.teCropStorageWeedEX.invoke(te)); + tag.setInteger("terrainNutrients", (Integer) IC2Module.teCropTerrainNutrients.invoke(te)); + tag.setInteger("terrainHumidity", (Integer) IC2Module.teCropTerrainHumidity.invoke(te)); + tag.setInteger("terrainAirQuality", (Integer) IC2Module.teCropTerrainAirQuality.invoke(te)); + tag.setInteger("lightLevel", (Integer) IC2Module.teCropLightLevel.invoke(te)); + tag.setInteger("currentSize", (Integer) IC2Module.teCropCurrentSize.invoke(te)); + tag.setInteger("growthPoints", (Integer) IC2Module.teCropGrowthPoints.invoke(te)); + tag.setInteger("statGrowth", (Integer) IC2Module.teCropStatGrowth.invoke(te)); + tag.setInteger("statGain", (Integer) IC2Module.teCropStatGain.invoke(te)); + tag.setInteger("statResistance", (Integer) IC2Module.teCropStatResistance.invoke(te)); } } catch (Exception e) { LOGGER.error("Failed to get crop data", e); diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerMachines.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerMachines.java index a09ea7fc..cb1ede7e 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerMachines.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerMachines.java @@ -90,20 +90,20 @@ private void addTierInfo(List currenttip, IWailaConfigHandler config, in @Override public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { try { - if (IC2Module.generator.isInstance(te)) { + if (IC2Module.TileEntityGeneratorBase.isInstance(te)) { tag.setDouble("stored", IC2Module.generatorStored.getDouble(te)); tag.setLong("capacity", IC2Module.generatorCapacity.getLong(te)); tag.setInteger("input", 0); tag.setInteger("output", IC2Module.generatorOutput.getInt(te)); tag.setInteger("tier", IC2Module.generatorTier.getInt(te)); - } else if (IC2Module.eBlock.isInstance(te)) { + } else if (IC2Module.TileEntityElectricBlock.isInstance(te)) { tag.setDouble("stored", IC2Module.eBlockStored.getDouble(te)); tag.setLong("capacity", IC2Module.eBlockCapacity.getLong(te)); tag.setInteger("input", 0); tag.setInteger("output", IC2Module.eBlockOutput.getInt(te)); tag.setInteger("tier", IC2Module.eBlockTier.getInt(te)); - } else if (IC2Module.eMachine.isInstance(te)) { + } else if (IC2Module.TileEntityElecMachine.isInstance(te)) { tag.setDouble("stored", 0); tag.setLong("capacity", 0); tag.setInteger("input", IC2Module.eMachineInput.getInt(te)); diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java index 601b7c3d..7a46c3f3 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java @@ -12,102 +12,141 @@ @WailaPlugin public class IC2Module implements IWailaPlugin { - public static Class generator = null; - public static Field generatorStored = null; - public static Field generatorCapacity = null; - public static Field generatorOutput = null; - public static Field generatorTier = null; - - public static Class eBlock = null; - public static Field eBlockStored = null; - public static Field eBlockCapacity = null; - public static Field eBlockOutput = null; - public static Field eBlockTier = null; - - public static Class eMachine = null; - public static Field eMachineStored = null; - public static Field eMachineCapacity = null; - public static Field eMachineInput = null; - public static Field eMachineTier = null; - - public static Class crops = null; - public static Method cropsStorageNutrients = null; - public static Method cropsStorageWater = null; - public static Method cropsStorageWeedEX = null; - public static Method cropsTerrainNutrients = null; - public static Method cropsTerrainHumidity = null; - public static Method cropsTerrainAirQuality = null; - public static Method cropsLightLevel = null; - public static Method cropsScanLevel = null; - public static Method cropsCurrentSize = null; - public static Method cropsGrowthPoints = null; - public static Method cropsStatGrowth = null; - public static Method cropsStatGain = null; - public static Method cropsStatResistance = null; + protected static Class + TileEntityGeneratorBase, + TileEntityElectricBlock, + TileEntityElecMachine, + TileEntityCrop, + CropCard, + ICropTile, + Ic2Crops; + + protected static Field + generatorStored, + generatorCapacity, + generatorOutput, + generatorTier, + eBlockStored, + eBlockCapacity, + eBlockOutput, + eBlockTier, + eMachineStored, + eMachineCapacity, + eMachineInput, + eMachineTier, + ic2cropsInstance; + + protected static Method + ic2cropsDisplayItem, + cCardMaxSize, + cCardMaxPoints, + teCropGetCropCard, + teCropStorageNutrients, + teCropStorageWater, + teCropStorageWeedEX, + teCropTerrainNutrients, + teCropTerrainHumidity, + teCropTerrainAirQuality, + teCropLightLevel, + teCropScanLevel, + teCropCurrentSize, + teCropGrowthPoints, + teCropStatGrowth, + teCropStatGain, + teCropStatResistance; + + + private IWailaRegistrar registrar; @Override public void register(IWailaRegistrar registrar) { if (!Loader.isModLoaded("ic2")) return; - try { - /* Generators */ - generator = Class.forName("ic2.core.block.base.tile.TileEntityGeneratorBase"); - generatorStored = generator.getDeclaredField("storage"); - generatorCapacity = generator.getDeclaredField("maxStorage"); - generatorOutput = generator.getDeclaredField("production"); - generatorTier = generator.getDeclaredField("tier"); - - registrar.registerBodyProvider(HUDHandlerMachines.INSTANCE, generator); - registrar.registerNBTProvider(HUDHandlerMachines.INSTANCE, generator); - - /* EU Storages */ - eBlock = Class.forName("ic2.core.block.base.tile.TileEntityElectricBlock"); - eBlockStored = eBlock.getDeclaredField("energy"); - eBlockCapacity = eBlock.getDeclaredField("maxEnergy"); - eBlockOutput = eBlock.getDeclaredField("output"); - eBlockTier = eBlock.getDeclaredField("tier"); - - registrar.registerBodyProvider(HUDHandlerMachines.INSTANCE, eBlock); - registrar.registerNBTProvider(HUDHandlerMachines.INSTANCE, eBlock); - - /* Machines */ - eMachine = Class.forName("ic2.core.block.base.tile.TileEntityElecMachine"); - eMachineStored = eMachine.getDeclaredField("energy"); - eMachineCapacity = eMachine.getDeclaredField("maxEnergy"); - eMachineInput = eMachine.getDeclaredField("maxInput"); - eMachineTier = eMachine.getDeclaredField("tier"); - - registrar.registerBodyProvider(HUDHandlerMachines.INSTANCE, eMachine); - registrar.registerNBTProvider(HUDHandlerMachines.INSTANCE, eMachine); - - /* Crops */ - crops = Class.forName("ic2.core.block.crop.TileEntityCrop"); - - cropsStorageNutrients = crops.getDeclaredMethod("getStorageNutrients"); - cropsStorageWater = crops.getDeclaredMethod("getStorageWater"); - cropsStorageWeedEX = crops.getDeclaredMethod("getStorageWeedEX"); - cropsTerrainNutrients = crops.getDeclaredMethod("getTerrainNutrients"); - cropsTerrainHumidity = crops.getDeclaredMethod("getTerrainHumidity"); - cropsTerrainAirQuality = crops.getDeclaredMethod("getTerrainAirQuality"); - cropsLightLevel = crops.getDeclaredMethod("getLightLevel"); - cropsScanLevel = crops.getDeclaredMethod("getScanLevel"); - cropsCurrentSize = crops.getDeclaredMethod("getCurrentSize"); - cropsGrowthPoints = crops.getDeclaredMethod("getGrowthPoints"); - cropsStatGrowth = crops.getDeclaredMethod("getStatGrowth"); - cropsStatGain = crops.getDeclaredMethod("getStatGain"); - cropsStatResistance = crops.getDeclaredMethod("getStatResistance"); - - registrar.registerBodyProvider(HUDHandlerCrops.INSTANCE, crops); - registrar.registerNBTProvider(HUDHandlerCrops.INSTANCE, crops); - - /* Config */ - registrar.addConfig("Industrial Craft 2", "ic2.storage", true); - registrar.addConfig("Industrial Craft 2", "ic2.percentage", true); - registrar.addConfig("Industrial Craft 2", "ic2.inouteu", true); - registrar.addConfig("Industrial Craft 2", "ic2.tier", true); - registrar.addConfig("Industrial Craft 2", "ic2.crops", true); + this.registrar = registrar; + try { + registerGenerators(); + registerEUStorages(); + registerMachines(); + registerCrops(); + registerConfigs(); } catch (Exception e) { - Waila.LOGGER.warn("[Industrial Craft 2] Error while loading generator hooks.", e); + Waila.LOGGER.warn("[Industrial Craft 2] Error while loading hooks.", e); } + + } + + private void registerCrops() throws Exception { + TileEntityCrop = Class.forName("ic2.core.block.crop.TileEntityCrop"); + CropCard = Class.forName("ic2.api.crops.CropCard"); + ICropTile = Class.forName("ic2.api.crops.ICropTile"); + Ic2Crops = Class.forName("ic2.core.block.crop.Ic2Crops"); + + ic2cropsInstance = IC2Module.Ic2Crops.getField("instance"); + ic2cropsDisplayItem = IC2Module.Ic2Crops.getMethod("getDisplayItem", IC2Module.CropCard); + + cCardMaxPoints = CropCard.getMethod("getGrowthDuration", ICropTile); + cCardMaxSize = CropCard.getMethod("getMaxSize"); + + teCropGetCropCard = TileEntityCrop.getMethod("getCrop"); + teCropStorageNutrients = TileEntityCrop.getMethod("getStorageNutrients"); + teCropStorageWater = TileEntityCrop.getMethod("getStorageWater"); + teCropStorageWeedEX = TileEntityCrop.getMethod("getStorageWeedEX"); + teCropTerrainNutrients = TileEntityCrop.getMethod("getTerrainNutrients"); + teCropTerrainHumidity = TileEntityCrop.getMethod("getTerrainHumidity"); + teCropTerrainAirQuality = TileEntityCrop.getMethod("getTerrainAirQuality"); + teCropLightLevel = TileEntityCrop.getMethod("getLightLevel"); + teCropScanLevel = TileEntityCrop.getMethod("getScanLevel"); + teCropCurrentSize = TileEntityCrop.getMethod("getCurrentSize"); + teCropGrowthPoints = TileEntityCrop.getMethod("getGrowthPoints"); + teCropStatGrowth = TileEntityCrop.getMethod("getStatGrowth"); + teCropStatGain = TileEntityCrop.getMethod("getStatGain"); + teCropStatResistance = TileEntityCrop.getMethod("getStatResistance"); + + this.registrar.registerStackProvider(HUDHandlerCrops.INSTANCE, TileEntityCrop); + this.registrar.registerHeadProvider(HUDHandlerCrops.INSTANCE, TileEntityCrop); + this.registrar.registerBodyProvider(HUDHandlerCrops.INSTANCE, TileEntityCrop); + this.registrar.registerNBTProvider(HUDHandlerCrops.INSTANCE, TileEntityCrop); + } + + private void registerMachines() throws Exception{ + TileEntityElecMachine = Class.forName("ic2.core.block.base.tile.TileEntityElecMachine"); + eMachineStored = TileEntityElecMachine.getDeclaredField("energy"); + eMachineCapacity = TileEntityElecMachine.getDeclaredField("maxEnergy"); + eMachineInput = TileEntityElecMachine.getDeclaredField("maxInput"); + eMachineTier = TileEntityElecMachine.getDeclaredField("tier"); + + this.registrar.registerBodyProvider(HUDHandlerMachines.INSTANCE, TileEntityElecMachine); + this.registrar.registerNBTProvider(HUDHandlerMachines.INSTANCE, TileEntityElecMachine); + } + + private void registerEUStorages() throws Exception{ + TileEntityElectricBlock = Class.forName("ic2.core.block.base.tile.TileEntityElectricBlock"); + eBlockStored = TileEntityElectricBlock.getDeclaredField("energy"); + eBlockCapacity = TileEntityElectricBlock.getDeclaredField("maxEnergy"); + eBlockOutput = TileEntityElectricBlock.getDeclaredField("output"); + eBlockTier = TileEntityElectricBlock.getDeclaredField("tier"); + + this.registrar.registerBodyProvider(HUDHandlerMachines.INSTANCE, TileEntityElectricBlock); + this.registrar.registerNBTProvider(HUDHandlerMachines.INSTANCE, TileEntityElectricBlock); + } + + private void registerGenerators() throws Exception{ + TileEntityGeneratorBase = Class.forName("ic2.core.block.base.tile.TileEntityGeneratorBase"); + generatorStored = TileEntityGeneratorBase.getDeclaredField("storage"); + generatorCapacity = TileEntityGeneratorBase.getDeclaredField("maxStorage"); + generatorOutput = TileEntityGeneratorBase.getDeclaredField("production"); + generatorTier = TileEntityGeneratorBase.getDeclaredField("tier"); + + this.registrar.registerBodyProvider(HUDHandlerMachines.INSTANCE, TileEntityGeneratorBase); + this.registrar.registerNBTProvider(HUDHandlerMachines.INSTANCE, TileEntityGeneratorBase); + } + + private void registerConfigs() { + this.registrar.addConfig("Industrial Craft 2", "ic2.storage", true); + this.registrar.addConfig("Industrial Craft 2", "ic2.percentage", true); + this.registrar.addConfig("Industrial Craft 2", "ic2.inouteu", true); + this.registrar.addConfig("Industrial Craft 2", "ic2.tier", true); + this.registrar.addConfig("IC2 Crops", "ic2.crops", true); + this.registrar.addConfig("IC2 Crops", "ic2.crops.sheakshow", true); } } diff --git a/src/main/resources/assets/waila/lang/en_US.lang b/src/main/resources/assets/waila/lang/en_US.lang index 784d8126..9f4e3916 100644 --- a/src/main/resources/assets/waila/lang/en_US.lang +++ b/src/main/resources/assets/waila/lang/en_US.lang @@ -70,6 +70,8 @@ hud.ic2.msg.input=Input hud.ic2.msg.output=Output hud.ic2.msg.tier=Tier +hud.ic2.msg.sneaktip=Sneak for more details +hud.ic2.msg.scanlevel=Scan level hud.ic2.msg.growthtitile=Growth hud.ic2.msg.currentsize=Stage hud.ic2.msg.growthpoints=Points diff --git a/src/main/resources/assets/waila/lang/ru_RU.lang b/src/main/resources/assets/waila/lang/ru_RU.lang index b15e6148..cb810316 100644 --- a/src/main/resources/assets/waila/lang/ru_RU.lang +++ b/src/main/resources/assets/waila/lang/ru_RU.lang @@ -70,6 +70,8 @@ hud.ic2.msg.input=Вход hud.ic2.msg.output=Выход hud.ic2.msg.tier=Энергоуровень +hud.ic2.msg.sneaktip=Присесть для подробной информации +hud.ic2.msg.scanlevel=Сканер hud.ic2.msg.growthtitile=Рост hud.ic2.msg.currentsize=Этап hud.ic2.msg.growthpoints=Очки From 4ee4c138b51b9808fbfa7f1a94e35a00fcd06bb5 Mon Sep 17 00:00:00 2001 From: Ognev Anton Date: Fri, 21 Feb 2025 23:40:54 +0700 Subject: [PATCH 12/16] [feature] Gui elements positions change --- .../waila/addons/core/HUDHandlerBlocks.java | 18 +++++++++++------- .../waila/addons/core/HUDHandlerEntities.java | 7 ++++--- .../waila/addons/core/HUDHandlerFluids.java | 18 ++++++++++-------- .../mobius/waila/overlay/OverlayRenderer.java | 4 ++-- 4 files changed, 27 insertions(+), 20 deletions(-) diff --git a/src/main/java/mcp/mobius/waila/addons/core/HUDHandlerBlocks.java b/src/main/java/mcp/mobius/waila/addons/core/HUDHandlerBlocks.java index fba83dd0..40ac0ec6 100644 --- a/src/main/java/mcp/mobius/waila/addons/core/HUDHandlerBlocks.java +++ b/src/main/java/mcp/mobius/waila/addons/core/HUDHandlerBlocks.java @@ -36,6 +36,7 @@ public List getWailaHead(ItemStack itemStack, List currenttip, I String displayName = DisplayUtil.itemDisplayNameShort(itemStack); if (displayName != null && !displayName.endsWith("Unnamed")) name = displayName; + if (name != null) currenttip.add(name); @@ -46,10 +47,10 @@ public List getWailaHead(ItemStack itemStack, List currenttip, I redstoneMeta = " " + redstoneMeta; currenttip.set(currenttip.size() - 1, name + " " + redstoneMeta); } - if (currenttip.size() == 0) - currenttip.add("\u00a7r" + String.format(FormattingConfig.blockFormat, "< Unnamed >")); - else if (ConfigHandler.instance().getConfig(Configuration.CATEGORY_GENERAL, Constants.CFG_WAILA_METADATA, true) && !Strings.isNullOrEmpty(FormattingConfig.metaFormat)) - currenttip.add("\u00a7r" + String.format(FormattingConfig.metaFormat, accessor.getBlock().getRegistryName().toString(), accessor.getMetadata())); + + String modName = ModIdentification.nameFromStack(itemStack); + if (!Strings.isNullOrEmpty(FormattingConfig.modNameFormat)) + currenttip.add(String.format(FormattingConfig.modNameFormat, modName)); return currenttip; } @@ -74,9 +75,12 @@ public List getWailaBody(ItemStack itemStack, List tooltip, IWai public List getWailaTail(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { if (accessor.getBlockState().getMaterial().isLiquid()) return currenttip; - String modName = ModIdentification.nameFromStack(itemStack); - if (!Strings.isNullOrEmpty(FormattingConfig.modNameFormat)) - currenttip.add(String.format(FormattingConfig.modNameFormat, modName)); + + String displayName = DisplayUtil.itemDisplayNameShort(itemStack); + if (displayName == null || displayName.endsWith("Unnamed")) + currenttip.add("§r" + String.format(FormattingConfig.blockFormat, "< Unnamed >")); + else if (ConfigHandler.instance().getConfig(Configuration.CATEGORY_GENERAL, Constants.CFG_WAILA_METADATA, true) && !Strings.isNullOrEmpty(FormattingConfig.metaFormat)) + currenttip.add("§r" + String.format(FormattingConfig.metaFormat, accessor.getBlock().getRegistryName().toString(), accessor.getMetadata())); return currenttip; } diff --git a/src/main/java/mcp/mobius/waila/addons/core/HUDHandlerEntities.java b/src/main/java/mcp/mobius/waila/addons/core/HUDHandlerEntities.java index 3cc57b9a..844a824a 100644 --- a/src/main/java/mcp/mobius/waila/addons/core/HUDHandlerEntities.java +++ b/src/main/java/mcp/mobius/waila/addons/core/HUDHandlerEntities.java @@ -36,6 +36,9 @@ public List getWailaHead(Entity entity, List currenttip, IWailaE } } else currenttip.add("Unknown"); + if (!Strings.isNullOrEmpty(FormattingConfig.modNameFormat) && !Strings.isNullOrEmpty(getEntityMod(entity))) + currenttip.add(String.format(FormattingConfig.modNameFormat, getEntityMod(entity))); + return currenttip; } @@ -59,8 +62,6 @@ public List getWailaBody(Entity entity, List currenttip, IWailaE @Nonnull @Override public List getWailaTail(Entity entity, List currenttip, IWailaEntityAccessor accessor, IWailaConfigHandler config) { - if (!Strings.isNullOrEmpty(FormattingConfig.modNameFormat) && !Strings.isNullOrEmpty(getEntityMod(entity))) - currenttip.add(String.format(FormattingConfig.modNameFormat, getEntityMod(entity))); return currenttip; } @@ -73,4 +74,4 @@ private static String getEntityMod(Entity entity) { ModContainer container = ModIdentification.findModContainer(entityEntry.getRegistryName().getResourceDomain()); return container.getName(); } -} \ No newline at end of file +} diff --git a/src/main/java/mcp/mobius/waila/addons/core/HUDHandlerFluids.java b/src/main/java/mcp/mobius/waila/addons/core/HUDHandlerFluids.java index 8a6a7ee2..6770d267 100644 --- a/src/main/java/mcp/mobius/waila/addons/core/HUDHandlerFluids.java +++ b/src/main/java/mcp/mobius/waila/addons/core/HUDHandlerFluids.java @@ -45,12 +45,11 @@ public List getWailaHead(ItemStack itemStack, List currenttip, I name = displayName; if (name != null) - currenttip.add("\u00a7r" + name); + currenttip.add("§r" + name); - if (currenttip.isEmpty()) - currenttip.add("\u00a7r" + String.format(FormattingConfig.fluidFormat, "< Unnamed >")); - else if (ConfigHandler.instance().getConfig(Configuration.CATEGORY_GENERAL, Constants.CFG_WAILA_METADATA, true) && !Strings.isNullOrEmpty(FormattingConfig.metaFormat)) - currenttip.add(String.format(FormattingConfig.metaFormat, accessor.getBlock().getRegistryName().toString(), accessor.getMetadata())); + String modName = ModIdentification.findModContainer(FluidRegistry.getDefaultFluidName(fluid).split(":")[0]).getName(); + if (!Strings.isNullOrEmpty(FormattingConfig.modNameFormat) && !Strings.isNullOrEmpty(modName)) + currenttip.add(String.format(FormattingConfig.modNameFormat, modName)); return currenttip; } @@ -62,9 +61,12 @@ public List getWailaTail(ItemStack itemStack, List currenttip, I if (fluid == null) return currenttip; - String modName = ModIdentification.findModContainer(FluidRegistry.getDefaultFluidName(fluid).split(":")[0]).getName(); - if (!Strings.isNullOrEmpty(FormattingConfig.modNameFormat) && !Strings.isNullOrEmpty(modName)) - currenttip.add(String.format(FormattingConfig.modNameFormat, modName)); + String displayName = String.format(FormattingConfig.fluidFormat, fluid.getLocalizedName(new FluidStack(fluid, 1000))); + + if (displayName == null || displayName.endsWith("Unnamed")) + currenttip.add("§r" + String.format(FormattingConfig.fluidFormat, "< Unnamed >")); + else if (ConfigHandler.instance().getConfig(Configuration.CATEGORY_GENERAL, Constants.CFG_WAILA_METADATA, true) && !Strings.isNullOrEmpty(FormattingConfig.metaFormat)) + currenttip.add(String.format(FormattingConfig.metaFormat, accessor.getBlock().getRegistryName().toString(), accessor.getMetadata())); return currenttip; } diff --git a/src/main/java/mcp/mobius/waila/overlay/OverlayRenderer.java b/src/main/java/mcp/mobius/waila/overlay/OverlayRenderer.java index 41fddd12..ead85b5e 100644 --- a/src/main/java/mcp/mobius/waila/overlay/OverlayRenderer.java +++ b/src/main/java/mcp/mobius/waila/overlay/OverlayRenderer.java @@ -91,7 +91,7 @@ public static void renderOverlay(Tooltip tooltip) { GlStateManager.enableRescaleNormal(); if (tooltip.hasIcon() && !tooltip.stack.isEmpty()) - DisplayUtil.renderStack(event.getX() + 5, event.getY() + event.getHeight() / 2 - 8, tooltip.stack); + DisplayUtil.renderStack(event.getX() + 5, event.getY() + 5, tooltip.stack); MinecraftForge.EVENT_BUS.post(new WailaRenderEvent.Post(event.getX(), event.getY(), event.getWidth(), event.getHeight())); @@ -163,4 +163,4 @@ public static void drawTooltipBox(int x, int y, int w, int h, int bg, int grad1, DisplayUtil.drawGradientRect(x + 1, y + 1, w - 1, 1, grad1, grad1); DisplayUtil.drawGradientRect(x + 1, y + h - 1, w - 1, 1, grad2, grad2); } -} \ No newline at end of file +} From 1687832f559f59684e38335a8b84baf42e989f68 Mon Sep 17 00:00:00 2001 From: Ognev Anton Date: Sun, 23 Feb 2025 17:15:58 +0700 Subject: [PATCH 13/16] [feature] Add crop icon MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлено отображении иконки посева - Добавлены методы-хэлперы --- .../waila/addons/ic2/HUDHandlerCrops.java | 57 +++++---- .../mobius/waila/addons/ic2/IC2Module.java | 120 +++++++++--------- .../resources/assets/waila/lang/en_US.lang | 3 + .../resources/assets/waila/lang/ru_RU.lang | 3 + 4 files changed, 102 insertions(+), 81 deletions(-) diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java index 3ea46a32..eaf735aa 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java @@ -29,20 +29,29 @@ public class HUDHandlerCrops implements IWailaDataProvider { @Nonnull @Override public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler config) { + NBTTagCompound tag = accessor.getNBTData(); ItemStack result = accessor.getStack(); TileEntity te = accessor.getTileEntity(); + try { - if (!IC2Module.TileEntityCrop.isInstance(te)) return result; + if (!IC2Module.classes.get("TileEntityCrop").isInstance(te)) return result; - Object cropCard = IC2Module.teCropGetCropCard.invoke(te); + Object cropCard = IC2Module.methods.get("TileEntityCrop.getCrop").invoke(te); if (cropCard == null) return result; - Object instance = IC2Module.ic2cropsInstance.get(null); - ItemStack displayItem = (ItemStack) IC2Module.ic2cropsDisplayItem.invoke(instance, cropCard); - if (displayItem == null) return result; - result = displayItem; + if (tag.getInteger("scanLevel") < 1) { + result.setStackDisplayName(LangUtil.translateG("hud.ic2.msg.unknown")); + return result; + } + Object instance = IC2Module.fields.get("Ic2Crops.instance").get(null); + ItemStack displayItem = (ItemStack) IC2Module.methods.get("Ic2Crops.getDisplayItem").invoke(instance, cropCard); + if (displayItem == null) return result; + + Object LocaleContext = IC2Module.methods.get("Ic2Crops.getCropName").invoke(instance, cropCard); + displayItem.setStackDisplayName((String) IC2Module.methods.get("LocaleComp.getLocalized").invoke(LocaleContext)); + result = displayItem; } catch (Exception e) { LOGGER.error("Failed to get crop data", e); } @@ -64,7 +73,7 @@ public List getWailaBody(ItemStack itemStack, List currenttip, I NBTTagCompound tag = accessor.getNBTData(); int scanLevel = tag.getInteger("scanLevel"); - if (!accessor.getPlayer().isSneaking() && config.getConfig("ic2.crops.sheakshow")) { + if (!accessor.getPlayer().isSneaking() && config.getConfig("ic2.crops.sneakshow")) { currenttip.add(String.format(FORMAT_PARAMS_TITLE, LangUtil.translateG("hud.ic2.msg.sneaktip"))); } else { if (scanLevel < 4) { @@ -117,26 +126,26 @@ private void addTerrainInfo(List currenttip, NBTTagCompound tag) { @Override public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { try { - if (IC2Module.TileEntityCrop.isInstance(te)) { - Object cropCard = IC2Module.teCropGetCropCard.invoke(te); + if (IC2Module.classes.get("TileEntityCrop").isInstance(te)) { + Object cropCard = IC2Module.methods.get("TileEntityCrop.getCrop").invoke(te); if (cropCard != null) { - tag.setInteger("maxSize", (Integer) IC2Module.cCardMaxSize.invoke(cropCard)); - tag.setInteger("maxPoints", (Integer) IC2Module.cCardMaxPoints.invoke(cropCard, IC2Module.ICropTile.cast(te))); + tag.setInteger("maxSize", (Integer) IC2Module.methods.get("CropCard.getMaxSize").invoke(cropCard)); + tag.setInteger("maxPoints", (Integer) IC2Module.methods.get("CropCard.getGrowthDuration").invoke(cropCard, IC2Module.classes.get("ICropTile").cast(te))); } - tag.setInteger("scanLevel", (Integer) IC2Module.teCropScanLevel.invoke(te)); - tag.setInteger("storageNutrients", (Integer) IC2Module.teCropStorageNutrients.invoke(te)); - tag.setInteger("storageWater", (Integer) IC2Module.teCropStorageWater.invoke(te)); - tag.setInteger("storageWeedEX", (Integer) IC2Module.teCropStorageWeedEX.invoke(te)); - tag.setInteger("terrainNutrients", (Integer) IC2Module.teCropTerrainNutrients.invoke(te)); - tag.setInteger("terrainHumidity", (Integer) IC2Module.teCropTerrainHumidity.invoke(te)); - tag.setInteger("terrainAirQuality", (Integer) IC2Module.teCropTerrainAirQuality.invoke(te)); - tag.setInteger("lightLevel", (Integer) IC2Module.teCropLightLevel.invoke(te)); - tag.setInteger("currentSize", (Integer) IC2Module.teCropCurrentSize.invoke(te)); - tag.setInteger("growthPoints", (Integer) IC2Module.teCropGrowthPoints.invoke(te)); - tag.setInteger("statGrowth", (Integer) IC2Module.teCropStatGrowth.invoke(te)); - tag.setInteger("statGain", (Integer) IC2Module.teCropStatGain.invoke(te)); - tag.setInteger("statResistance", (Integer) IC2Module.teCropStatResistance.invoke(te)); + tag.setInteger("scanLevel", (Integer) IC2Module.methods.get("TileEntityCrop.getScanLevel").invoke(te)); + tag.setInteger("storageNutrients", (Integer) IC2Module.methods.get("TileEntityCrop.getStorageNutrients").invoke(te)); + tag.setInteger("storageWater", (Integer) IC2Module.methods.get("TileEntityCrop.getStorageWater").invoke(te)); + tag.setInteger("storageWeedEX", (Integer) IC2Module.methods.get("TileEntityCrop.getStorageWeedEX").invoke(te)); + tag.setInteger("terrainNutrients", (Integer) IC2Module.methods.get("TileEntityCrop.getTerrainNutrients").invoke(te)); + tag.setInteger("terrainHumidity", (Integer) IC2Module.methods.get("TileEntityCrop.getTerrainHumidity").invoke(te)); + tag.setInteger("terrainAirQuality", (Integer) IC2Module.methods.get("TileEntityCrop.getTerrainAirQuality").invoke(te)); + tag.setInteger("lightLevel", (Integer) IC2Module.methods.get("TileEntityCrop.getLightLevel").invoke(te)); + tag.setInteger("currentSize", (Integer) IC2Module.methods.get("TileEntityCrop.getCurrentSize").invoke(te)); + tag.setInteger("growthPoints", (Integer) IC2Module.methods.get("TileEntityCrop.getGrowthPoints").invoke(te)); + tag.setInteger("statGrowth", (Integer) IC2Module.methods.get("TileEntityCrop.getStatGrowth").invoke(te)); + tag.setInteger("statGain", (Integer) IC2Module.methods.get("TileEntityCrop.getStatGain").invoke(te)); + tag.setInteger("statResistance", (Integer) IC2Module.methods.get("TileEntityCrop.getStatResistance").invoke(te)); } } catch (Exception e) { LOGGER.error("Failed to get crop data", e); diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java index 7a46c3f3..83f60ec6 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java @@ -8,18 +8,20 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; @WailaPlugin public class IC2Module implements IWailaPlugin { + protected static Map> classes = new HashMap<>(); + protected static Map fields = new HashMap<>(); + protected static Map methods = new HashMap<>(); + protected static Class TileEntityGeneratorBase, TileEntityElectricBlock, - TileEntityElecMachine, - TileEntityCrop, - CropCard, - ICropTile, - Ic2Crops; + TileEntityElecMachine; protected static Field generatorStored, @@ -33,27 +35,7 @@ public class IC2Module implements IWailaPlugin { eMachineStored, eMachineCapacity, eMachineInput, - eMachineTier, - ic2cropsInstance; - - protected static Method - ic2cropsDisplayItem, - cCardMaxSize, - cCardMaxPoints, - teCropGetCropCard, - teCropStorageNutrients, - teCropStorageWater, - teCropStorageWeedEX, - teCropTerrainNutrients, - teCropTerrainHumidity, - teCropTerrainAirQuality, - teCropLightLevel, - teCropScanLevel, - teCropCurrentSize, - teCropGrowthPoints, - teCropStatGrowth, - teCropStatGain, - teCropStatResistance; + eMachineTier; private IWailaRegistrar registrar; @@ -76,36 +58,43 @@ public void register(IWailaRegistrar registrar) { } private void registerCrops() throws Exception { - TileEntityCrop = Class.forName("ic2.core.block.crop.TileEntityCrop"); - CropCard = Class.forName("ic2.api.crops.CropCard"); - ICropTile = Class.forName("ic2.api.crops.ICropTile"); - Ic2Crops = Class.forName("ic2.core.block.crop.Ic2Crops"); - - ic2cropsInstance = IC2Module.Ic2Crops.getField("instance"); - ic2cropsDisplayItem = IC2Module.Ic2Crops.getMethod("getDisplayItem", IC2Module.CropCard); - - cCardMaxPoints = CropCard.getMethod("getGrowthDuration", ICropTile); - cCardMaxSize = CropCard.getMethod("getMaxSize"); - - teCropGetCropCard = TileEntityCrop.getMethod("getCrop"); - teCropStorageNutrients = TileEntityCrop.getMethod("getStorageNutrients"); - teCropStorageWater = TileEntityCrop.getMethod("getStorageWater"); - teCropStorageWeedEX = TileEntityCrop.getMethod("getStorageWeedEX"); - teCropTerrainNutrients = TileEntityCrop.getMethod("getTerrainNutrients"); - teCropTerrainHumidity = TileEntityCrop.getMethod("getTerrainHumidity"); - teCropTerrainAirQuality = TileEntityCrop.getMethod("getTerrainAirQuality"); - teCropLightLevel = TileEntityCrop.getMethod("getLightLevel"); - teCropScanLevel = TileEntityCrop.getMethod("getScanLevel"); - teCropCurrentSize = TileEntityCrop.getMethod("getCurrentSize"); - teCropGrowthPoints = TileEntityCrop.getMethod("getGrowthPoints"); - teCropStatGrowth = TileEntityCrop.getMethod("getStatGrowth"); - teCropStatGain = TileEntityCrop.getMethod("getStatGain"); - teCropStatResistance = TileEntityCrop.getMethod("getStatResistance"); - - this.registrar.registerStackProvider(HUDHandlerCrops.INSTANCE, TileEntityCrop); - this.registrar.registerHeadProvider(HUDHandlerCrops.INSTANCE, TileEntityCrop); - this.registrar.registerBodyProvider(HUDHandlerCrops.INSTANCE, TileEntityCrop); - this.registrar.registerNBTProvider(HUDHandlerCrops.INSTANCE, TileEntityCrop); + + registerClass("ic2.core.platform.lang.components.base.LocaleComp"); + registerClass("ic2.api.crops.ICropTile"); + registerClass("ic2.api.crops.CropCard"); + registerClass("ic2.core.block.crop.Ic2Crops"); + registerClass("ic2.core.block.crop.TileEntityCrop"); + + registerMethod("LocaleComp","getLocalized"); + + registerMethod("CropCard", "getGrowthDuration", classes.get("ICropTile")); + registerMethod("CropCard", "getSeeds", classes.get("ICropTile")); + registerMethod("CropCard", "getMaxSize"); + + registerField("Ic2Crops", "instance"); + registerMethod("Ic2Crops", "getCropName", classes.get("CropCard")); + registerMethod("Ic2Crops", "getDisplayItem", classes.get("CropCard")); + + registerMethod("TileEntityCrop", "getCrop"); + registerMethod("TileEntityCrop", "getScanLevel"); + registerMethod("TileEntityCrop", "getStorageNutrients"); + registerMethod("TileEntityCrop", "getStorageWater"); + registerMethod("TileEntityCrop", "getStorageWeedEX"); + registerMethod("TileEntityCrop", "getTerrainNutrients"); + registerMethod("TileEntityCrop", "getTerrainHumidity"); + registerMethod("TileEntityCrop", "getTerrainAirQuality"); + registerMethod("TileEntityCrop", "getLightLevel"); + registerMethod("TileEntityCrop", "getCurrentSize"); + registerMethod("TileEntityCrop", "getGrowthPoints"); + registerMethod("TileEntityCrop", "getStatGrowth"); + registerMethod("TileEntityCrop", "getStatGain"); + registerMethod("TileEntityCrop", "getStatResistance"); + + + this.registrar.registerStackProvider(HUDHandlerCrops.INSTANCE, classes.get("TileEntityCrop")); + this.registrar.registerHeadProvider(HUDHandlerCrops.INSTANCE, classes.get("TileEntityCrop")); + this.registrar.registerBodyProvider(HUDHandlerCrops.INSTANCE, classes.get("TileEntityCrop")); + this.registrar.registerNBTProvider(HUDHandlerCrops.INSTANCE, classes.get("TileEntityCrop")); } private void registerMachines() throws Exception{ @@ -147,6 +136,23 @@ private void registerConfigs() { this.registrar.addConfig("Industrial Craft 2", "ic2.inouteu", true); this.registrar.addConfig("Industrial Craft 2", "ic2.tier", true); this.registrar.addConfig("IC2 Crops", "ic2.crops", true); - this.registrar.addConfig("IC2 Crops", "ic2.crops.sheakshow", true); + this.registrar.addConfig("IC2 Crops", "ic2.crops.sneakshow", true); + } + + + protected void registerClass(String className) throws Exception { + Class clazz = Class.forName(className); + classes.put(clazz.getSimpleName(), clazz); + } + + protected void registerField(String className, String fieldName) throws Exception { + Class clazz = classes.get(className); + Field field = clazz.getField(fieldName); + fields.put(clazz.getSimpleName() + "." + fieldName, field); + } + protected void registerMethod(String className, String methodName, Class... parameterTypes) throws Exception { + Class clazz = classes.get(className); + Method method = clazz.getMethod(methodName, parameterTypes); + methods.put(clazz.getSimpleName() + "." + methodName, method); } } diff --git a/src/main/resources/assets/waila/lang/en_US.lang b/src/main/resources/assets/waila/lang/en_US.lang index 9f4e3916..896a3a11 100644 --- a/src/main/resources/assets/waila/lang/en_US.lang +++ b/src/main/resources/assets/waila/lang/en_US.lang @@ -70,6 +70,7 @@ hud.ic2.msg.input=Input hud.ic2.msg.output=Output hud.ic2.msg.tier=Tier +hud.ic2.msg.unknown=Unknown crop hud.ic2.msg.sneaktip=Sneak for more details hud.ic2.msg.scanlevel=Scan level hud.ic2.msg.growthtitile=Growth @@ -116,6 +117,8 @@ option.general.registry=Show registry data option.capability.tankinfo=Show tank data option.capability.energyinfo=Show energy data +option.ic2.crops.sneakshow=Show while sneak +option.ic2.crops=Show crop info option.ic2.storage=Show EU storage option.ic2.percentage=EU percentage option.ic2.inouteu=Input/Output EU diff --git a/src/main/resources/assets/waila/lang/ru_RU.lang b/src/main/resources/assets/waila/lang/ru_RU.lang index cb810316..9a129729 100644 --- a/src/main/resources/assets/waila/lang/ru_RU.lang +++ b/src/main/resources/assets/waila/lang/ru_RU.lang @@ -70,6 +70,7 @@ hud.ic2.msg.input=Вход hud.ic2.msg.output=Выход hud.ic2.msg.tier=Энергоуровень +hud.ic2.msg.unknown=Неизвестный посев hud.ic2.msg.sneaktip=Присесть для подробной информации hud.ic2.msg.scanlevel=Сканер hud.ic2.msg.growthtitile=Рост @@ -116,6 +117,8 @@ option.general.registry=Показать данные реестра option.capability.tankinfo=Показать данные резервуара option.capability.energyinfo=Показать данные энергии +option.ic2.crops.sneakshow=Присесть для информации +option.ic2.crops=Показывать информацию о семенах option.ic2.storage=Заряд EU option.ic2.percentage=EU в процентах option.ic2.inouteu=Макс. вход/выход EU From a34acb236406bd7d3d89ee4cd3b4be76665204fc Mon Sep 17 00:00:00 2001 From: Ognev Anton Date: Fri, 28 Feb 2025 13:17:26 +0700 Subject: [PATCH 14/16] [feature] Extended ic2 support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Модуль разбит на отдельные классы - Доработано отображение информации --- .../waila/addons/ic2/HUDHandlerCrops.java | 46 ++-- .../addons/ic2/HUDHandlerEUStorages.java | 77 ++++++ .../addons/ic2/HUDHandlerGenerators.java | 83 ++++++ .../waila/addons/ic2/HUDHandlerMachines.java | 109 +++----- .../addons/ic2/HUDHandlerTransformers.java | 75 ++++++ .../mobius/waila/addons/ic2/IC2Module.java | 245 +++++++++++------- .../resources/assets/waila/lang/en_US.lang | 6 +- .../resources/assets/waila/lang/ru_RU.lang | 10 +- 8 files changed, 452 insertions(+), 199 deletions(-) create mode 100644 src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerEUStorages.java create mode 100644 src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerGenerators.java create mode 100644 src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTransformers.java diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java index eaf735aa..ed043db5 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerCrops.java @@ -34,9 +34,9 @@ public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler TileEntity te = accessor.getTileEntity(); try { - if (!IC2Module.classes.get("TileEntityCrop").isInstance(te)) return result; + if (!IC2Module.getClass("TileEntityCrop").isInstance(te)) return result; - Object cropCard = IC2Module.methods.get("TileEntityCrop.getCrop").invoke(te); + Object cropCard = IC2Module.invokeMethod("TileEntityCrop.getCrop", te); if (cropCard == null) return result; @@ -45,12 +45,12 @@ public ItemStack getWailaStack(IWailaDataAccessor accessor, IWailaConfigHandler return result; } - Object instance = IC2Module.fields.get("Ic2Crops.instance").get(null); - ItemStack displayItem = (ItemStack) IC2Module.methods.get("Ic2Crops.getDisplayItem").invoke(instance, cropCard); + Object instance = IC2Module.getField("Ic2Crops.instance", null); + ItemStack displayItem = (ItemStack) IC2Module.invokeMethod("Ic2Crops.getDisplayItem", instance, cropCard); if (displayItem == null) return result; - Object LocaleContext = IC2Module.methods.get("Ic2Crops.getCropName").invoke(instance, cropCard); - displayItem.setStackDisplayName((String) IC2Module.methods.get("LocaleComp.getLocalized").invoke(LocaleContext)); + Object LocaleContext = IC2Module.invokeMethod("Ic2Crops.getCropName", instance, cropCard); + displayItem.setStackDisplayName((String) IC2Module.invokeMethod("LocaleComp.getLocalized", LocaleContext)); result = displayItem; } catch (Exception e) { LOGGER.error("Failed to get crop data", e); @@ -126,26 +126,26 @@ private void addTerrainInfo(List currenttip, NBTTagCompound tag) { @Override public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { try { - if (IC2Module.classes.get("TileEntityCrop").isInstance(te)) { - Object cropCard = IC2Module.methods.get("TileEntityCrop.getCrop").invoke(te); + if (IC2Module.getClass("TileEntityCrop").isInstance(te)) { + Object cropCard = IC2Module.invokeMethod("TileEntityCrop.getCrop", te); if (cropCard != null) { - tag.setInteger("maxSize", (Integer) IC2Module.methods.get("CropCard.getMaxSize").invoke(cropCard)); - tag.setInteger("maxPoints", (Integer) IC2Module.methods.get("CropCard.getGrowthDuration").invoke(cropCard, IC2Module.classes.get("ICropTile").cast(te))); + tag.setInteger("maxSize", (Integer) IC2Module.invokeMethod("CropCard.getMaxSize",cropCard)); + tag.setInteger("maxPoints", (Integer) IC2Module.invokeMethod("CropCard.getGrowthDuration",cropCard, IC2Module.getClass("ICropTile").cast(te))); } - tag.setInteger("scanLevel", (Integer) IC2Module.methods.get("TileEntityCrop.getScanLevel").invoke(te)); - tag.setInteger("storageNutrients", (Integer) IC2Module.methods.get("TileEntityCrop.getStorageNutrients").invoke(te)); - tag.setInteger("storageWater", (Integer) IC2Module.methods.get("TileEntityCrop.getStorageWater").invoke(te)); - tag.setInteger("storageWeedEX", (Integer) IC2Module.methods.get("TileEntityCrop.getStorageWeedEX").invoke(te)); - tag.setInteger("terrainNutrients", (Integer) IC2Module.methods.get("TileEntityCrop.getTerrainNutrients").invoke(te)); - tag.setInteger("terrainHumidity", (Integer) IC2Module.methods.get("TileEntityCrop.getTerrainHumidity").invoke(te)); - tag.setInteger("terrainAirQuality", (Integer) IC2Module.methods.get("TileEntityCrop.getTerrainAirQuality").invoke(te)); - tag.setInteger("lightLevel", (Integer) IC2Module.methods.get("TileEntityCrop.getLightLevel").invoke(te)); - tag.setInteger("currentSize", (Integer) IC2Module.methods.get("TileEntityCrop.getCurrentSize").invoke(te)); - tag.setInteger("growthPoints", (Integer) IC2Module.methods.get("TileEntityCrop.getGrowthPoints").invoke(te)); - tag.setInteger("statGrowth", (Integer) IC2Module.methods.get("TileEntityCrop.getStatGrowth").invoke(te)); - tag.setInteger("statGain", (Integer) IC2Module.methods.get("TileEntityCrop.getStatGain").invoke(te)); - tag.setInteger("statResistance", (Integer) IC2Module.methods.get("TileEntityCrop.getStatResistance").invoke(te)); + tag.setInteger("scanLevel", (Integer) IC2Module.invokeMethod("TileEntityCrop.getScanLevel", te)); + tag.setInteger("storageNutrients", (Integer) IC2Module.invokeMethod("TileEntityCrop.getStorageNutrients", te)); + tag.setInteger("storageWater", (Integer) IC2Module.invokeMethod("TileEntityCrop.getStorageWater", te)); + tag.setInteger("storageWeedEX", (Integer) IC2Module.invokeMethod("TileEntityCrop.getStorageWeedEX", te)); + tag.setInteger("terrainNutrients", (Integer) IC2Module.invokeMethod("TileEntityCrop.getTerrainNutrients", te)); + tag.setInteger("terrainHumidity", (Integer) IC2Module.invokeMethod("TileEntityCrop.getTerrainHumidity", te)); + tag.setInteger("terrainAirQuality", (Integer) IC2Module.invokeMethod("TileEntityCrop.getTerrainAirQuality", te)); + tag.setInteger("lightLevel", (Integer) IC2Module.invokeMethod("TileEntityCrop.getLightLevel", te)); + tag.setInteger("currentSize", (Integer) IC2Module.invokeMethod("TileEntityCrop.getCurrentSize", te)); + tag.setInteger("growthPoints", (Integer) IC2Module.invokeMethod("TileEntityCrop.getGrowthPoints", te)); + tag.setInteger("statGrowth", (Integer) IC2Module.invokeMethod("TileEntityCrop.getStatGrowth", te)); + tag.setInteger("statGain", (Integer) IC2Module.invokeMethod("TileEntityCrop.getStatGain", te)); + tag.setInteger("statResistance", (Integer) IC2Module.invokeMethod("TileEntityCrop.getStatResistance", te)); } } catch (Exception e) { LOGGER.error("Failed to get crop data", e); diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerEUStorages.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerEUStorages.java new file mode 100644 index 00000000..1f1a7632 --- /dev/null +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerEUStorages.java @@ -0,0 +1,77 @@ +package mcp.mobius.waila.addons.ic2; + +import java.util.List; +import javax.annotation.Nonnull; +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; +import mcp.mobius.waila.api.IWailaDataProvider; +import mcp.mobius.waila.cbcore.LangUtil; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class HUDHandlerEUStorages implements IWailaDataProvider { + + private static final Logger LOGGER = LogManager.getLogger(); + static final IWailaDataProvider INSTANCE = new HUDHandlerEUStorages(); + + private static final String TEXT_LINE_FORMAT = "%s: §f%d§r "; + private static final String ENERGY_INOUT_FORMAT = "%s: §f%d§r EU/t"; + private static final String STORAGE_FORMAT = "%s: §f%d/%d§r %s "; + private static final String PERCENTAGE_FORMAT = "(§f%.1f%%§r)"; + + @Nonnull + @Override + public List getWailaBody(ItemStack itemStack, List currentTip, IWailaDataAccessor accessor, IWailaConfigHandler config) { + if (accessor.getTileEntity() == null) return currentTip; + + NBTTagCompound nbtData = accessor.getNBTData(); + int capacity = nbtData.getInteger("capacityEnergy"); + int stored = nbtData.getInteger("storedEnergy"); + + if (config.getConfig("ic2.tier")) { + currentTip.add(String.format(TEXT_LINE_FORMAT, LangUtil.translateG("hud.ic2.msg.tier"), nbtData.getInteger("tier"))); + } + + currentTip.add(String.format(ENERGY_INOUT_FORMAT, LangUtil.translateG("hud.ic2.msg.input"), nbtData.getInteger("input"))); + currentTip.add(String.format(ENERGY_INOUT_FORMAT, LangUtil.translateG("hud.ic2.msg.output"), nbtData.getInteger("output"))); + + + if (capacity > 0 && config.getConfig("ic2.storageenergy")) + addStorageLine(currentTip, config, LangUtil.translateG("hud.ic2.msg.storedenergy"), "EU", stored, capacity); + + return currentTip; + } + + @Nonnull + @Override + public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { + try { + if (IC2Module.getClass("TileEntityElectricBlock").isInstance(te)) { + tag.setInteger("tier", (Integer) IC2Module.invokeMethod("TileEntityElectricBlock.getTier", te)); + tag.setInteger("capacityEnergy", (Integer) IC2Module.invokeMethod("TileEntityElectricBlock.getCapacity", te)); + tag.setInteger("storedEnergy", (Integer) IC2Module.invokeMethod("TileEntityElectricBlock.getStored", te)); + tag.setInteger("output", (Integer) IC2Module.invokeMethod("TileEntityElectricBlock.getOutput", te)); + tag.setInteger("input", (Integer) IC2Module.invokeMethod("TileEntityElectricBlock.getOutput", te)); + } + } catch (Exception e) { + LOGGER.error("Failed to get EU storages data", e); + } + return tag; + } + + + private void addStorageLine(List currentTip, IWailaConfigHandler config, String title, String units, int stored, int capacity) { + String capacityLine = ""; + capacityLine += String.format(STORAGE_FORMAT, title, stored, capacity, units); + if (config.getConfig("ic2.percentage")) + capacityLine += String.format(PERCENTAGE_FORMAT, ((float)stored / capacity) * 100); + + currentTip.add(capacityLine); + } +} diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerGenerators.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerGenerators.java new file mode 100644 index 00000000..5eeaecb2 --- /dev/null +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerGenerators.java @@ -0,0 +1,83 @@ +package mcp.mobius.waila.addons.ic2; + +import java.util.List; +import javax.annotation.Nonnull; +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; +import mcp.mobius.waila.api.IWailaDataProvider; +import mcp.mobius.waila.cbcore.LangUtil; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class HUDHandlerGenerators implements IWailaDataProvider { + + private static final Logger LOGGER = LogManager.getLogger(); + static final IWailaDataProvider INSTANCE = new HUDHandlerGenerators(); + private static final String TEXT_LINE_FORMAT = "%s: §f%d§r "; + private static final String ENERGY_INOUT_FORMAT = "%s: §f%d§r EU/t"; + private static final String STORAGE_FORMAT = "%s: §f%d/%d§r %s "; + private static final String PERCENTAGE_FORMAT = "(§f%.1f%%§r) "; + + @Nonnull + @Override + public List getWailaBody(ItemStack itemStack, List currentTip, IWailaDataAccessor accessor, IWailaConfigHandler config) { + if (accessor.getTileEntity() == null) return currentTip; + NBTTagCompound nbtData = accessor.getNBTData(); + + int maxEU = nbtData.getInteger("maxEU"); + int storedEU = nbtData.getInteger("storedEU"); + + int maxFuel = nbtData.getInteger("maxFuel"); + int storedFuel = nbtData.getInteger("storedFuel"); + + if (config.getConfig("ic2.tier")) { + currentTip.add(String.format(TEXT_LINE_FORMAT, LangUtil.translateG("hud.ic2.msg.tier"), nbtData.getInteger("tier"))); + } + + + currentTip.add(String.format(ENERGY_INOUT_FORMAT, LangUtil.translateG("hud.ic2.msg.output"), nbtData.getInteger("output"))); + + if (maxEU > 0 && config.getConfig("ic2.storageenergy")) { + addStorageLine(currentTip, config, LangUtil.translateG("hud.ic2.msg.storedenergy"), "EU", storedEU, maxEU); + } + + if (maxFuel > 0 && config.getConfig("ic2.storagefuel")) { + addStorageLine(currentTip, config, LangUtil.translateG("hud.ic2.msg.storedfuel"), "", storedFuel, maxFuel); + } + return currentTip; + } + + @Nonnull + @Override + public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { + try { + if (IC2Module.getClass("TileEntityFuelGeneratorBase").isInstance(te)) { + tag.setInteger("tier", (Integer) IC2Module.invokeMethod("TileEntityFuelGeneratorBase.getSourceTier", te)); + tag.setInteger("output", (Integer) IC2Module.invokeMethod("TileEntityFuelGeneratorBase.getOutput", te)); + tag.setInteger("maxEU", (Integer) IC2Module.invokeMethod("TileEntityFuelGeneratorBase.getMaxEU", te)); + tag.setInteger("storedEU", (Integer) IC2Module.invokeMethod("TileEntityFuelGeneratorBase.getStoredEU", te)); + tag.setInteger("maxFuel", Math.round((Float) IC2Module.invokeMethod("TileEntityFuelGeneratorBase.getMaxFuel", te))); + tag.setInteger("storedFuel", Math.round((Float) IC2Module.invokeMethod("TileEntityFuelGeneratorBase.getFuel", te))); + } + } catch (Exception e) { + LOGGER.error("Failed to get generator data", e); + } + return tag; + } + + private void addStorageLine(List currentTip, IWailaConfigHandler config, String title, String units, int stored, int capacity) { + String capacityLine = ""; + capacityLine += String.format(STORAGE_FORMAT, title, stored, capacity, units); + + if (config.getConfig("ic2.percentage")) + capacityLine += String.format(PERCENTAGE_FORMAT, ((float)stored / capacity) * 100); + + currentTip.add(capacityLine); + } +} diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerMachines.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerMachines.java index cb1ede7e..ee298d16 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerMachines.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerMachines.java @@ -1,6 +1,7 @@ package mcp.mobius.waila.addons.ic2; -import mcp.mobius.waila.api.ITaggedList; +import java.util.List; +import javax.annotation.Nonnull; import mcp.mobius.waila.api.IWailaConfigHandler; import mcp.mobius.waila.api.IWailaDataAccessor; import mcp.mobius.waila.api.IWailaDataProvider; @@ -14,105 +15,59 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import javax.annotation.Nonnull; -import java.util.List; - public class HUDHandlerMachines implements IWailaDataProvider { private static final Logger LOGGER = LogManager.getLogger(); static final IWailaDataProvider INSTANCE = new HUDHandlerMachines(); - - private static final String ENERGY_STORAGE_FORMAT = "%s: §f%d§r / §f%d§r EU"; - private static final String PERCENTAGE_FORMAT = " (§f%d%%§r)"; - private static final String INPUT_OUTPUT_FORMAT = "%s: §f%d §r EU/t"; - private static final String TIER_FORMAT = "%s: §f%d §r"; + private static final String TEXT_LINE_FORMAT = "%s: §f%d§r "; + private static final String ENERGY_INOUT_FORMAT = "%s: §f%d§r EU/t"; + private static final String STORAGE_FORMAT = "%s: §f%d/%d§r %s "; + private static final String PERCENTAGE_FORMAT = "(§f%.1f%%§r) "; @Nonnull @Override - public List getWailaBody(ItemStack itemStack, List currenttip, IWailaDataAccessor accessor, IWailaConfigHandler config) { - if (accessor.getTileEntity() == null) { - return currenttip; - } - + public List getWailaBody(ItemStack itemStack, List currentTip, IWailaDataAccessor accessor, IWailaConfigHandler config) { + if (accessor.getTileEntity() == null) return currentTip; NBTTagCompound nbtData = accessor.getNBTData(); - double stored = nbtData.getDouble("stored"); - int input = nbtData.getInteger("input"); - int output = nbtData.getInteger("output"); - long capacity = nbtData.getLong("capacity"); - int tier = nbtData.getInteger("tier"); - - addEnergyStorageInfo(currenttip, config, stored, capacity); - addInputOutputInfo(currenttip, config, input, output); - addTierInfo(currenttip, config, tier); - - return currenttip; - } - - private void addEnergyStorageInfo(List currenttip, IWailaConfigHandler config, double stored, long capacity) { - if (capacity > 0) { - StringBuilder energyLine = new StringBuilder(); - String storedStr = LangUtil.translateG("hud.ic2.msg.stored"); - - if (config.getConfig("ic2.storage")) { - energyLine.append(String.format(ENERGY_STORAGE_FORMAT, storedStr, Math.round(Math.min(stored, capacity)), capacity)); - } - if (config.getConfig("ic2.percentage")) { - energyLine.append(String.format(PERCENTAGE_FORMAT, Math.round((stored / capacity) * 100))); - } + int maxEU = nbtData.getInteger("maxEU"); + int storedEU = nbtData.getInteger("storedEU"); - ((ITaggedList) currenttip).add(energyLine.toString(), "IEnergyStorage"); + if (config.getConfig("ic2.tier")) { + currentTip.add(String.format(TEXT_LINE_FORMAT, LangUtil.translateG("hud.ic2.msg.tier"), nbtData.getInteger("tier"))); } - } - private void addInputOutputInfo(List currenttip, IWailaConfigHandler config, int input, int output) { - String inputStr = LangUtil.translateG("hud.ic2.msg.input"); - String outputStr = LangUtil.translateG("hud.ic2.msg.output"); + currentTip.add(String.format(ENERGY_INOUT_FORMAT, LangUtil.translateG("hud.ic2.msg.input"), nbtData.getInteger("input"))); - if (config.getConfig("ic2.inouteu")) { - if (input > 0) { - currenttip.add(String.format(INPUT_OUTPUT_FORMAT, inputStr, input)); - } - if (output > 0) { - currenttip.add(String.format(INPUT_OUTPUT_FORMAT, outputStr, output)); - } - } - } - - private void addTierInfo(List currenttip, IWailaConfigHandler config, int tier) { - String tierStr = LangUtil.translateG("hud.ic2.msg.tier"); - if (config.getConfig("ic2.tier") && tier > 0) { - currenttip.add(String.format(TIER_FORMAT, tierStr, tier)); + if (maxEU > 0 && config.getConfig("ic2.storageenergy")) { + addStorageLine(currentTip, config, LangUtil.translateG("hud.ic2.msg.storedenergy"), "EU", storedEU, maxEU); } + return currentTip; } @Nonnull @Override public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { try { - if (IC2Module.TileEntityGeneratorBase.isInstance(te)) { - - tag.setDouble("stored", IC2Module.generatorStored.getDouble(te)); - tag.setLong("capacity", IC2Module.generatorCapacity.getLong(te)); - tag.setInteger("input", 0); - tag.setInteger("output", IC2Module.generatorOutput.getInt(te)); - tag.setInteger("tier", IC2Module.generatorTier.getInt(te)); - } else if (IC2Module.TileEntityElectricBlock.isInstance(te)) { - tag.setDouble("stored", IC2Module.eBlockStored.getDouble(te)); - tag.setLong("capacity", IC2Module.eBlockCapacity.getLong(te)); - tag.setInteger("input", 0); - tag.setInteger("output", IC2Module.eBlockOutput.getInt(te)); - tag.setInteger("tier", IC2Module.eBlockTier.getInt(te)); - } else if (IC2Module.TileEntityElecMachine.isInstance(te)) { - tag.setDouble("stored", 0); - tag.setLong("capacity", 0); - tag.setInteger("input", IC2Module.eMachineInput.getInt(te)); - tag.setInteger("output", 0); - tag.setInteger("tier", IC2Module.eMachineTier.getInt(te)); + if (IC2Module.getClass("TileEntityElecMachine").isInstance(te)) { + tag.setInteger("tier", (Integer) IC2Module.invokeMethod("TileEntityElecMachine.getSinkTier", te)); + tag.setInteger("input", (Integer) IC2Module.getField("TileEntityElecMachine.maxInput", te)); + tag.setInteger("maxEU", (Integer) IC2Module.invokeMethod("TileEntityElecMachine.getMaxEU", te)); + tag.setInteger("storedEU", (Integer) IC2Module.invokeMethod("TileEntityElecMachine.getStoredEU", te)); } } catch (Exception e) { - LOGGER.error("Failed to get generator data", e); + LOGGER.error("Failed to get machines data", e); } return tag; } + + private void addStorageLine(List currentTip, IWailaConfigHandler config, String title, String units, int stored, int capacity) { + String capacityLine = ""; + capacityLine += String.format(STORAGE_FORMAT, title, stored, capacity, units); + + if (config.getConfig("ic2.percentage")) + capacityLine += String.format(PERCENTAGE_FORMAT, ((float)stored / capacity) * 100); + + currentTip.add(capacityLine); + } } diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTransformers.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTransformers.java new file mode 100644 index 00000000..c2e169c3 --- /dev/null +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerTransformers.java @@ -0,0 +1,75 @@ +package mcp.mobius.waila.addons.ic2; + +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; +import mcp.mobius.waila.api.IWailaDataProvider; +import mcp.mobius.waila.cbcore.LangUtil; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import javax.annotation.Nonnull; +import java.util.List; + +public class HUDHandlerTransformers implements IWailaDataProvider { + + private static final Logger LOGGER = LogManager.getLogger(); + static final IWailaDataProvider INSTANCE = new HUDHandlerTransformers(); + + private static final String ENERGY_INOUT_FORMAT = "%s: §f%d §r EU/t"; + private static final String TIER_INOUT_FORMAT = "%s: §f%d -> %d §r"; + private static final String TEXT_LINE_FORMAT = "%s: §f%s §r"; + + @Nonnull + @Override + public List getWailaBody(ItemStack itemStack, List currentTip, IWailaDataAccessor accessor, IWailaConfigHandler config) { + if (accessor.getTileEntity() == null) return currentTip; + + NBTTagCompound nbtData = accessor.getNBTData(); + + int tierIn = nbtData.getInteger("tierIn"); + int tierOut = nbtData.getInteger("tierOut"); + + if (nbtData.hasKey("isActive")) + currentTip.add(String.format(TEXT_LINE_FORMAT, LangUtil.translateG("hud.ic2.msg.mode"), nbtData.getBoolean("isActive") ? LangUtil.translateG("hud.ic2.msg.modestepup") : LangUtil.translateG("hud.ic2.msg.modestepdown"))); + + if (tierIn > 0 || tierOut > 0) { + currentTip.add(String.format(TIER_INOUT_FORMAT, LangUtil.translateG("hud.ic2.msg.tier"), tierIn, tierOut)); + } + + currentTip.add(String.format(ENERGY_INOUT_FORMAT, LangUtil.translateG("hud.ic2.msg.input"), nbtData.getInteger("input"))); + currentTip.add(String.format(ENERGY_INOUT_FORMAT, LangUtil.translateG("hud.ic2.msg.output"), nbtData.getInteger("output"))); + + + return currentTip; + } + + @Nonnull + @Override + public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { + try { + if (IC2Module.getClass("TileEntityTransformer").isInstance(te)) { + boolean isActive = (Boolean) IC2Module.invokeMethod("TileEntityTransformer.getActive", te); + tag.setBoolean("isActive", isActive); + + tag.setInteger("input", isActive + ? (Integer) IC2Module.getField("TileEntityTransformer.lowOutput", te) + : (Integer) IC2Module.getField("TileEntityTransformer.highOutput", te)); + + tag.setInteger("output", isActive + ? (Integer) IC2Module.getField("TileEntityTransformer.highOutput", te) + : (Integer) IC2Module.getField("TileEntityTransformer.lowOutput", te)); + + tag.setInteger("tierIn", (Integer) IC2Module.invokeMethod("TileEntityTransformer.getSinkTier", te)); + tag.setInteger("tierOut", (Integer) IC2Module.invokeMethod("TileEntityTransformer.getSourceTier", te)); + } + } catch (Exception e) { + LOGGER.error("Failed to get transformer data", e); + } + return tag; + } +} diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java index 83f60ec6..efc5eb92 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java @@ -5,6 +5,8 @@ import mcp.mobius.waila.api.IWailaRegistrar; import mcp.mobius.waila.api.WailaPlugin; import net.minecraftforge.fml.common.Loader; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; import java.lang.reflect.Field; import java.lang.reflect.Method; @@ -14,28 +16,10 @@ @WailaPlugin public class IC2Module implements IWailaPlugin { - protected static Map> classes = new HashMap<>(); - protected static Map fields = new HashMap<>(); - protected static Map methods = new HashMap<>(); - - protected static Class - TileEntityGeneratorBase, - TileEntityElectricBlock, - TileEntityElecMachine; - - protected static Field - generatorStored, - generatorCapacity, - generatorOutput, - generatorTier, - eBlockStored, - eBlockCapacity, - eBlockOutput, - eBlockTier, - eMachineStored, - eMachineCapacity, - eMachineInput, - eMachineTier; + private static final Logger LOGGER = LogManager.getLogger(); + private static final Map> classes = new HashMap<>(); + private static final Map fields = new HashMap<>(); + private static final Map methods = new HashMap<>(); private IWailaRegistrar registrar; @@ -45,89 +29,130 @@ public void register(IWailaRegistrar registrar) { if (!Loader.isModLoaded("ic2")) return; this.registrar = registrar; + registerCrops(); + registerGenerator(); + registerEUStorage(); + registerTransformer(); + registerMachines(); + registerConfigs(); + + } + + private void registerCrops() { try { - registerGenerators(); - registerEUStorages(); - registerMachines(); - registerCrops(); - registerConfigs(); + String basePackageName = "ic2.core.block.crop"; + String baseClassName = "TileEntityCrop"; + + registerClass("ic2.core.platform.lang.components.base.LocaleComp"); + registerClass("ic2.api.crops.ICropTile"); + registerClass("ic2.api.crops.CropCard"); + registerClass("ic2.core.block.crop.Ic2Crops"); + registerClass(basePackageName + "." + baseClassName); + + registerMethod("LocaleComp", "getLocalized"); + + registerMethod("CropCard", "getGrowthDuration", classes.get("ICropTile")); + registerMethod("CropCard", "getSeeds", classes.get("ICropTile")); + registerMethod("CropCard", "getMaxSize"); + + registerField("Ic2Crops", "instance"); + registerMethod("Ic2Crops", "getCropName", classes.get("CropCard")); + registerMethod("Ic2Crops", "getDisplayItem", classes.get("CropCard")); + + registerMethod(baseClassName, "getCrop"); + registerMethod(baseClassName, "getScanLevel"); + registerMethod(baseClassName, "getStorageNutrients"); + registerMethod(baseClassName, "getStorageWater"); + registerMethod(baseClassName, "getStorageWeedEX"); + registerMethod(baseClassName, "getTerrainNutrients"); + registerMethod(baseClassName, "getTerrainHumidity"); + registerMethod(baseClassName, "getTerrainAirQuality"); + registerMethod(baseClassName, "getLightLevel"); + registerMethod(baseClassName, "getCurrentSize"); + registerMethod(baseClassName, "getGrowthPoints"); + registerMethod(baseClassName, "getStatGrowth"); + registerMethod(baseClassName, "getStatGain"); + registerMethod(baseClassName, "getStatResistance"); + + this.registrar.registerStackProvider(HUDHandlerCrops.INSTANCE, classes.get(baseClassName)); + this.registrar.registerHeadProvider(HUDHandlerCrops.INSTANCE, classes.get(baseClassName)); + this.registrar.registerBodyProvider(HUDHandlerCrops.INSTANCE, classes.get(baseClassName)); + this.registrar.registerNBTProvider(HUDHandlerCrops.INSTANCE, classes.get(baseClassName)); } catch (Exception e) { - Waila.LOGGER.warn("[Industrial Craft 2] Error while loading hooks.", e); + LOGGER.error("[IC2] Error while loading Crops hooks.", e); } - } - private void registerCrops() throws Exception { - - registerClass("ic2.core.platform.lang.components.base.LocaleComp"); - registerClass("ic2.api.crops.ICropTile"); - registerClass("ic2.api.crops.CropCard"); - registerClass("ic2.core.block.crop.Ic2Crops"); - registerClass("ic2.core.block.crop.TileEntityCrop"); - - registerMethod("LocaleComp","getLocalized"); - - registerMethod("CropCard", "getGrowthDuration", classes.get("ICropTile")); - registerMethod("CropCard", "getSeeds", classes.get("ICropTile")); - registerMethod("CropCard", "getMaxSize"); - - registerField("Ic2Crops", "instance"); - registerMethod("Ic2Crops", "getCropName", classes.get("CropCard")); - registerMethod("Ic2Crops", "getDisplayItem", classes.get("CropCard")); - - registerMethod("TileEntityCrop", "getCrop"); - registerMethod("TileEntityCrop", "getScanLevel"); - registerMethod("TileEntityCrop", "getStorageNutrients"); - registerMethod("TileEntityCrop", "getStorageWater"); - registerMethod("TileEntityCrop", "getStorageWeedEX"); - registerMethod("TileEntityCrop", "getTerrainNutrients"); - registerMethod("TileEntityCrop", "getTerrainHumidity"); - registerMethod("TileEntityCrop", "getTerrainAirQuality"); - registerMethod("TileEntityCrop", "getLightLevel"); - registerMethod("TileEntityCrop", "getCurrentSize"); - registerMethod("TileEntityCrop", "getGrowthPoints"); - registerMethod("TileEntityCrop", "getStatGrowth"); - registerMethod("TileEntityCrop", "getStatGain"); - registerMethod("TileEntityCrop", "getStatResistance"); - - - this.registrar.registerStackProvider(HUDHandlerCrops.INSTANCE, classes.get("TileEntityCrop")); - this.registrar.registerHeadProvider(HUDHandlerCrops.INSTANCE, classes.get("TileEntityCrop")); - this.registrar.registerBodyProvider(HUDHandlerCrops.INSTANCE, classes.get("TileEntityCrop")); - this.registrar.registerNBTProvider(HUDHandlerCrops.INSTANCE, classes.get("TileEntityCrop")); + + private void registerGenerator() { + String packageName = "ic2.core.block.base.tile"; + String className = "TileEntityFuelGeneratorBase"; + try { + registerClass(packageName + "." + className); + registerMethod(className, "getStoredEU"); + registerMethod(className, "getMaxEU"); + registerMethod(className, "getOutput"); + registerMethod(className, "getSourceTier"); + registerMethod(className, "getFuel"); + registerMethod(className, "getMaxFuel"); + + this.registrar.registerBodyProvider(HUDHandlerGenerators.INSTANCE, classes.get(className)); + this.registrar.registerNBTProvider(HUDHandlerGenerators.INSTANCE, classes.get(className)); + } catch (Exception e) { + LOGGER.error("[IC2] Error while loading crops hooks.", e); + } } - private void registerMachines() throws Exception{ - TileEntityElecMachine = Class.forName("ic2.core.block.base.tile.TileEntityElecMachine"); - eMachineStored = TileEntityElecMachine.getDeclaredField("energy"); - eMachineCapacity = TileEntityElecMachine.getDeclaredField("maxEnergy"); - eMachineInput = TileEntityElecMachine.getDeclaredField("maxInput"); - eMachineTier = TileEntityElecMachine.getDeclaredField("tier"); + private void registerEUStorage() { + String packageName = "ic2.core.block.base.tile"; + String className = "TileEntityElectricBlock"; + try { + registerClass(packageName + "." + className); + registerMethod(className, "getStored"); + registerMethod(className, "getCapacity"); + registerMethod(className, "getOutput"); + registerMethod(className, "getTier"); - this.registrar.registerBodyProvider(HUDHandlerMachines.INSTANCE, TileEntityElecMachine); - this.registrar.registerNBTProvider(HUDHandlerMachines.INSTANCE, TileEntityElecMachine); - } + this.registrar.registerBodyProvider(HUDHandlerEUStorages.INSTANCE, classes.get(className)); + this.registrar.registerNBTProvider(HUDHandlerEUStorages.INSTANCE, classes.get(className)); - private void registerEUStorages() throws Exception{ - TileEntityElectricBlock = Class.forName("ic2.core.block.base.tile.TileEntityElectricBlock"); - eBlockStored = TileEntityElectricBlock.getDeclaredField("energy"); - eBlockCapacity = TileEntityElectricBlock.getDeclaredField("maxEnergy"); - eBlockOutput = TileEntityElectricBlock.getDeclaredField("output"); - eBlockTier = TileEntityElectricBlock.getDeclaredField("tier"); + } catch (Exception e) { + LOGGER.error("[IC2] Error while loading EU Storage hooks.", e); + } + } - this.registrar.registerBodyProvider(HUDHandlerMachines.INSTANCE, TileEntityElectricBlock); - this.registrar.registerNBTProvider(HUDHandlerMachines.INSTANCE, TileEntityElectricBlock); + private void registerTransformer() { + String packageName = "ic2.core.block.base.tile"; + String className = "TileEntityTransformer"; + try { + registerClass(packageName + "." + className); + registerField(className, "lowOutput"); + registerField(className, "highOutput"); + registerMethod(className, "getActive"); + registerMethod(className, "getSinkTier"); + registerMethod(className, "getSourceTier"); + this.registrar.registerBodyProvider(HUDHandlerTransformers.INSTANCE, classes.get(className)); + this.registrar.registerNBTProvider(HUDHandlerTransformers.INSTANCE, classes.get(className)); + } catch (Exception e) { + LOGGER.error("[IC2] Error while loading Transformer hooks.", e); + } } - private void registerGenerators() throws Exception{ - TileEntityGeneratorBase = Class.forName("ic2.core.block.base.tile.TileEntityGeneratorBase"); - generatorStored = TileEntityGeneratorBase.getDeclaredField("storage"); - generatorCapacity = TileEntityGeneratorBase.getDeclaredField("maxStorage"); - generatorOutput = TileEntityGeneratorBase.getDeclaredField("production"); - generatorTier = TileEntityGeneratorBase.getDeclaredField("tier"); + private void registerMachines() { + String packageName = "ic2.core.block.base.tile"; + String className = "TileEntityElecMachine"; + try { + registerClass(packageName + "." + className); + registerMethod(className, "getSinkTier"); + registerField(className, "maxInput"); + registerMethod(className, "getMaxEU"); + registerMethod(className, "getStoredEU"); + this.registrar.registerBodyProvider(HUDHandlerMachines.INSTANCE, classes.get(className)); + this.registrar.registerNBTProvider(HUDHandlerMachines.INSTANCE, classes.get(className)); + } catch (Exception e) { + LOGGER.error("[IC2] Error while loading Machines hooks.", e); + } - this.registrar.registerBodyProvider(HUDHandlerMachines.INSTANCE, TileEntityGeneratorBase); - this.registrar.registerNBTProvider(HUDHandlerMachines.INSTANCE, TileEntityGeneratorBase); } private void registerConfigs() { @@ -140,19 +165,49 @@ private void registerConfigs() { } - protected void registerClass(String className) throws Exception { + private void registerClass(String className) throws Exception { + if (classes.containsKey(className)) return; Class clazz = Class.forName(className); classes.put(clazz.getSimpleName(), clazz); } - protected void registerField(String className, String fieldName) throws Exception { + private void registerField(String className, String fieldName) throws Exception { + if (fields.containsKey(className + "." + fieldName)) return; Class clazz = classes.get(className); Field field = clazz.getField(fieldName); fields.put(clazz.getSimpleName() + "." + fieldName, field); } - protected void registerMethod(String className, String methodName, Class... parameterTypes) throws Exception { + + private void registerMethod(String className, String methodName, Class... parameterTypes) throws Exception { + if (methods.containsKey("className" + "." + methodName)) return; Class clazz = classes.get(className); Method method = clazz.getMethod(methodName, parameterTypes); methods.put(clazz.getSimpleName() + "." + methodName, method); } + + protected static Object invokeMethod(String methodKey, Object instance, Object... args) throws Exception { + Method method = methods.get(methodKey); + if (method == null) { + throw new IllegalArgumentException("Method " + methodKey + " is not registered."); + } + + return method.invoke(instance, args); + } + + protected static Object getField(String fieldKey, Object instance) throws Exception { + Field field = fields.get(fieldKey); + if (field == null) { + throw new IllegalArgumentException("Field " + fieldKey + " is not registered."); + } + + return field.get(instance); + } + + protected static Class getClass(String className) { + Class clazz = classes.get(className); + if (clazz == null) { + throw new IllegalArgumentException("Class " + className + " is not registered."); + } + return clazz; + } } diff --git a/src/main/resources/assets/waila/lang/en_US.lang b/src/main/resources/assets/waila/lang/en_US.lang index 896a3a11..85bb0f6d 100644 --- a/src/main/resources/assets/waila/lang/en_US.lang +++ b/src/main/resources/assets/waila/lang/en_US.lang @@ -65,7 +65,11 @@ hud.msg.offers=Offers hud.msg.demands=Demands hud.msg.career=Career: %s -hud.ic2.msg.stored=Stored +hud.ic2.msg.storedenergy=Energy +hud.ic2.msg.storedfuel=Fuel +hud.ic2.msg.mode=Mode +hud.ic2.msg.modestepup=Step-up +hud.ic2.msg.modestepdown=Step-down hud.ic2.msg.input=Input hud.ic2.msg.output=Output hud.ic2.msg.tier=Tier diff --git a/src/main/resources/assets/waila/lang/ru_RU.lang b/src/main/resources/assets/waila/lang/ru_RU.lang index 9a129729..554951bf 100644 --- a/src/main/resources/assets/waila/lang/ru_RU.lang +++ b/src/main/resources/assets/waila/lang/ru_RU.lang @@ -65,9 +65,13 @@ hud.msg.offers=Предложения hud.msg.demands=Запросы hud.msg.career=Карьера: %s -hud.ic2.msg.stored=Хранится -hud.ic2.msg.input=Вход -hud.ic2.msg.output=Выход +hud.ic2.msg.storedenergy=Энергия +hud.ic2.msg.storedfuel=Топливо +hud.ic2.msg.mode=Режим +hud.ic2.msg.modestepup=Повышение +hud.ic2.msg.modestepdown=Понижение +hud.ic2.msg.input=Макс. Вход +hud.ic2.msg.output=Макс. Выход hud.ic2.msg.tier=Энергоуровень hud.ic2.msg.unknown=Неизвестный посев From 2ae0d27ffc36103ea10b4b4483c2d3e532b6c235 Mon Sep 17 00:00:00 2001 From: Ognev Anton Date: Tue, 4 Mar 2025 10:10:18 +0700 Subject: [PATCH 15/16] [refactor] Added BaseModule MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлен наследуемый класс модуля - Изменен способ вызова/регистрации классов и их методов --- .../mobius/waila/addons/core/BaseModule.java | 59 ++++++++++++++++++ .../mobius/waila/addons/ic2/IC2Module.java | 60 +------------------ .../thermalexpansion/HUDHandlerCache.java | 12 ++-- .../ThermalExpansionModule.java | 23 +++---- 4 files changed, 75 insertions(+), 79 deletions(-) create mode 100644 src/main/java/mcp/mobius/waila/addons/core/BaseModule.java diff --git a/src/main/java/mcp/mobius/waila/addons/core/BaseModule.java b/src/main/java/mcp/mobius/waila/addons/core/BaseModule.java new file mode 100644 index 00000000..0d4a6141 --- /dev/null +++ b/src/main/java/mcp/mobius/waila/addons/core/BaseModule.java @@ -0,0 +1,59 @@ +package mcp.mobius.waila.addons.core; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.HashMap; +import java.util.Map; + +public class BaseModule { + + protected static final Map> classes = new HashMap<>(); + protected static final Map fields = new HashMap<>(); + protected static final Map methods = new HashMap<>(); + + protected void registerClass(String className) throws Exception { + if (classes.containsKey(className)) return; + Class clazz = Class.forName(className); + classes.put(clazz.getSimpleName(), clazz); + } + + protected void registerField(String className, String fieldName) throws Exception { + if (fields.containsKey(className + "." + fieldName)) return; + Class clazz = classes.get(className); + Field field = clazz.getField(fieldName); + fields.put(clazz.getSimpleName() + "." + fieldName, field); + } + + protected void registerMethod(String className, String methodName, Class... parameterTypes) throws Exception { + if (methods.containsKey(className + "." + methodName)) return; + Class clazz = classes.get(className); + Method method = clazz.getMethod(methodName, parameterTypes); + methods.put(clazz.getSimpleName() + "." + methodName, method); + } + + public static Object invokeMethod(String methodKey, Object instance, Object... args) throws Exception { + Method method = methods.get(methodKey); + if (method == null) { + throw new IllegalArgumentException("Method " + methodKey + " is not registered."); + } + + return method.invoke(instance, args); + } + + public static Object getField(String fieldKey, Object instance) throws Exception { + Field field = fields.get(fieldKey); + if (field == null) { + throw new IllegalArgumentException("Field " + fieldKey + " is not registered."); + } + + return field.get(instance); + } + + public static Class getClass(String className) { + Class clazz = classes.get(className); + if (clazz == null) { + throw new IllegalArgumentException("Class " + className + " is not registered."); + } + return clazz; + } +} diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java index efc5eb92..ad694e5f 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java @@ -1,6 +1,6 @@ package mcp.mobius.waila.addons.ic2; -import mcp.mobius.waila.Waila; +import mcp.mobius.waila.addons.core.BaseModule; import mcp.mobius.waila.api.IWailaPlugin; import mcp.mobius.waila.api.IWailaRegistrar; import mcp.mobius.waila.api.WailaPlugin; @@ -8,19 +8,10 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.Map; - @WailaPlugin -public class IC2Module implements IWailaPlugin { +public class IC2Module extends BaseModule implements IWailaPlugin { private static final Logger LOGGER = LogManager.getLogger(); - private static final Map> classes = new HashMap<>(); - private static final Map fields = new HashMap<>(); - private static final Map methods = new HashMap<>(); - private IWailaRegistrar registrar; @@ -163,51 +154,4 @@ private void registerConfigs() { this.registrar.addConfig("IC2 Crops", "ic2.crops", true); this.registrar.addConfig("IC2 Crops", "ic2.crops.sneakshow", true); } - - - private void registerClass(String className) throws Exception { - if (classes.containsKey(className)) return; - Class clazz = Class.forName(className); - classes.put(clazz.getSimpleName(), clazz); - } - - private void registerField(String className, String fieldName) throws Exception { - if (fields.containsKey(className + "." + fieldName)) return; - Class clazz = classes.get(className); - Field field = clazz.getField(fieldName); - fields.put(clazz.getSimpleName() + "." + fieldName, field); - } - - private void registerMethod(String className, String methodName, Class... parameterTypes) throws Exception { - if (methods.containsKey("className" + "." + methodName)) return; - Class clazz = classes.get(className); - Method method = clazz.getMethod(methodName, parameterTypes); - methods.put(clazz.getSimpleName() + "." + methodName, method); - } - - protected static Object invokeMethod(String methodKey, Object instance, Object... args) throws Exception { - Method method = methods.get(methodKey); - if (method == null) { - throw new IllegalArgumentException("Method " + methodKey + " is not registered."); - } - - return method.invoke(instance, args); - } - - protected static Object getField(String fieldKey, Object instance) throws Exception { - Field field = fields.get(fieldKey); - if (field == null) { - throw new IllegalArgumentException("Field " + fieldKey + " is not registered."); - } - - return field.get(instance); - } - - protected static Class getClass(String className) { - Class clazz = classes.get(className); - if (clazz == null) { - throw new IllegalArgumentException("Class " + className + " is not registered."); - } - return clazz; - } } diff --git a/src/main/java/mcp/mobius/waila/addons/thermalexpansion/HUDHandlerCache.java b/src/main/java/mcp/mobius/waila/addons/thermalexpansion/HUDHandlerCache.java index fd8e39ad..658e36c7 100644 --- a/src/main/java/mcp/mobius/waila/addons/thermalexpansion/HUDHandlerCache.java +++ b/src/main/java/mcp/mobius/waila/addons/thermalexpansion/HUDHandlerCache.java @@ -31,7 +31,7 @@ public List getWailaHead(ItemStack itemStack, List currenttip, I TileEntity te = accessor.getTileEntity(); NBTTagCompound tag = accessor.getNBTData(); if (accessor.getNBTData().hasKey("Item")) - storedItem = (ItemStack) ThermalExpansionModule.readItemStackFromNBT.invoke(te, tag.getCompoundTag("Item")); + storedItem = (ItemStack) ThermalExpansionModule.invokeMethod("ItemHelper.readItemStackFromNBT", te, tag.getCompoundTag("Item")); String name = currenttip.get(0); @@ -65,7 +65,7 @@ public List getWailaBody(ItemStack itemStack, List currenttip, I ItemStack storedItem = null; if (tag.hasKey("Item")) { - storedItem = (ItemStack) ThermalExpansionModule.readItemStackFromNBT.invoke(te, tag.getCompoundTag("Item")); + storedItem = (ItemStack) ThermalExpansionModule.invokeMethod("ItemHelper.readItemStackFromNBT", te, tag.getCompoundTag("Item")); } int stored = 0; @@ -75,9 +75,8 @@ public List getWailaBody(ItemStack itemStack, List currenttip, I if (storedItem != null) { currenttip.add(storedStr + ": " + stored); -// currenttip.add("Stored: " + stored + "/" + maxStored); //TODO: add maxStored value } else currenttip.add(capacityStr + ": " + maxStored); - } catch (ReflectiveOperationException e) { + } catch (Exception e) { e.printStackTrace(); } @@ -91,9 +90,8 @@ public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCom if (te != null) te.writeToNBT(tag); try { - tag.setInteger("MaxStored", 0); //TODO: add maxStored value - tag.setInteger("Stored", (Integer) ThermalExpansionModule.tileCacheGetStored.invoke(te)); - } catch (ReflectiveOperationException e) { + tag.setInteger("Stored", (Integer) ThermalExpansionModule.invokeMethod("TileCache.getStoredCount",te)); + } catch (Exception e) { e.printStackTrace(); } return tag; diff --git a/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java b/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java index 41ccbc26..9f394a74 100644 --- a/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java +++ b/src/main/java/mcp/mobius/waila/addons/thermalexpansion/ThermalExpansionModule.java @@ -1,6 +1,7 @@ package mcp.mobius.waila.addons.thermalexpansion; import mcp.mobius.waila.Waila; +import mcp.mobius.waila.addons.core.BaseModule; import mcp.mobius.waila.api.IWailaPlugin; import mcp.mobius.waila.api.IWailaRegistrar; import mcp.mobius.waila.api.WailaPlugin; @@ -10,27 +11,21 @@ import java.lang.reflect.Method; @WailaPlugin -public class ThermalExpansionModule implements IWailaPlugin { +public class ThermalExpansionModule extends BaseModule implements IWailaPlugin { - public static Class cofhItemHelper = null; - public static Method readItemStackFromNBT = null; - - public static Class tileCache = null; - public static Method tileCacheGetStored = null; public void register(IWailaRegistrar registrar) { if (!Loader.isModLoaded("thermalexpansion") || !Loader.isModLoaded("cofhcore")) return; try { - cofhItemHelper = Class.forName("cofh.core.util.helpers.ItemHelper"); - readItemStackFromNBT = cofhItemHelper.getMethod("readItemStackFromNBT", NBTTagCompound.class); - + registerClass("cofh.core.util.helpers.ItemHelper"); + registerClass("cofh.thermalexpansion.block.storage.TileCache"); + registerMethod("ItemHelper", "readItemStackFromNBT", NBTTagCompound.class); + registerMethod("TileCache", "getStoredCount"); - tileCache = Class.forName("cofh.thermalexpansion.block.storage.TileCache"); - tileCacheGetStored = tileCache.getDeclaredMethod("getStoredCount"); - registrar.registerHeadProvider(HUDHandlerCache.INSTANCE, tileCache); - registrar.registerBodyProvider(HUDHandlerCache.INSTANCE, tileCache); - registrar.registerNBTProvider(HUDHandlerCache.INSTANCE, tileCache); + registrar.registerHeadProvider(HUDHandlerCache.INSTANCE, getClass("TileCache")); + registrar.registerBodyProvider(HUDHandlerCache.INSTANCE, getClass("TileCache")); + registrar.registerNBTProvider(HUDHandlerCache.INSTANCE, getClass("TileCache")); registrar.addConfig("Thermal Expansion", "thermalexpansion.cache"); } catch (Exception e) { From 12fb386bbb95f157873bc39e73b29d72a2a62530 Mon Sep 17 00:00:00 2001 From: Ognev Anton Date: Tue, 4 Mar 2025 10:45:36 +0700 Subject: [PATCH 16/16] [feature] Added solar panels info MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Добавлено отображение инфо о солнечных панелях - Изменен метод получение класса в модуле --- .../addons/ic2/HUDHandlerSolarGenerators.java | 54 +++++++++++++++++++ .../mobius/waila/addons/ic2/IC2Module.java | 52 ++++++++++++------ 2 files changed, 89 insertions(+), 17 deletions(-) create mode 100644 src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerSolarGenerators.java diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerSolarGenerators.java b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerSolarGenerators.java new file mode 100644 index 00000000..9bd1c305 --- /dev/null +++ b/src/main/java/mcp/mobius/waila/addons/ic2/HUDHandlerSolarGenerators.java @@ -0,0 +1,54 @@ +package mcp.mobius.waila.addons.ic2; + +import java.util.List; +import javax.annotation.Nonnull; +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; +import mcp.mobius.waila.api.IWailaDataProvider; +import mcp.mobius.waila.cbcore.LangUtil; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +public class HUDHandlerSolarGenerators implements IWailaDataProvider { + + private static final Logger LOGGER = LogManager.getLogger(); + static final IWailaDataProvider INSTANCE = new HUDHandlerSolarGenerators(); + private static final String TEXT_LINE_FORMAT = "%s: §f%d§r "; + private static final String ENERGY_INOUT_FORMAT = "%s: §f%d§r EU/t"; + + @Nonnull + @Override + public List getWailaBody(ItemStack itemStack, List currentTip, IWailaDataAccessor accessor, IWailaConfigHandler config) { + if (accessor.getTileEntity() == null) return currentTip; + NBTTagCompound nbtData = accessor.getNBTData(); + + + if (config.getConfig("ic2.tier")) { + currentTip.add(String.format(TEXT_LINE_FORMAT, LangUtil.translateG("hud.ic2.msg.tier"), nbtData.getInteger("tier"))); + } + + currentTip.add(String.format(ENERGY_INOUT_FORMAT, LangUtil.translateG("hud.ic2.msg.output"), nbtData.getInteger("output"))); + + return currentTip; + } + + @Nonnull + @Override + public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { + try { + if (IC2Module.getClass("TileEntitySolarPanel").isInstance(te)) { + tag.setInteger("tier", (Integer) IC2Module.invokeMethod("TileEntitySolarPanel.getSourceTier", te)); + tag.setInteger("output", (Integer) IC2Module.invokeMethod("TileEntitySolarPanel.getOutput", te)); + } + } catch (Exception e) { + LOGGER.error("Failed to get generator data", e); + } + return tag; + } +} diff --git a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java index ad694e5f..aea3f1b3 100644 --- a/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java +++ b/src/main/java/mcp/mobius/waila/addons/ic2/IC2Module.java @@ -22,6 +22,7 @@ public void register(IWailaRegistrar registrar) { registerCrops(); registerGenerator(); + registerSolarGenerator(); registerEUStorage(); registerTransformer(); registerMachines(); @@ -42,13 +43,13 @@ private void registerCrops() { registerMethod("LocaleComp", "getLocalized"); - registerMethod("CropCard", "getGrowthDuration", classes.get("ICropTile")); - registerMethod("CropCard", "getSeeds", classes.get("ICropTile")); + registerMethod("CropCard", "getGrowthDuration", getClass("ICropTile")); + registerMethod("CropCard", "getSeeds", getClass("ICropTile")); registerMethod("CropCard", "getMaxSize"); registerField("Ic2Crops", "instance"); - registerMethod("Ic2Crops", "getCropName", classes.get("CropCard")); - registerMethod("Ic2Crops", "getDisplayItem", classes.get("CropCard")); + registerMethod("Ic2Crops", "getCropName", getClass("CropCard")); + registerMethod("Ic2Crops", "getDisplayItem", getClass("CropCard")); registerMethod(baseClassName, "getCrop"); registerMethod(baseClassName, "getScanLevel"); @@ -65,10 +66,10 @@ private void registerCrops() { registerMethod(baseClassName, "getStatGain"); registerMethod(baseClassName, "getStatResistance"); - this.registrar.registerStackProvider(HUDHandlerCrops.INSTANCE, classes.get(baseClassName)); - this.registrar.registerHeadProvider(HUDHandlerCrops.INSTANCE, classes.get(baseClassName)); - this.registrar.registerBodyProvider(HUDHandlerCrops.INSTANCE, classes.get(baseClassName)); - this.registrar.registerNBTProvider(HUDHandlerCrops.INSTANCE, classes.get(baseClassName)); + this.registrar.registerStackProvider(HUDHandlerCrops.INSTANCE, getClass(baseClassName)); + this.registrar.registerHeadProvider(HUDHandlerCrops.INSTANCE, getClass(baseClassName)); + this.registrar.registerBodyProvider(HUDHandlerCrops.INSTANCE, getClass(baseClassName)); + this.registrar.registerNBTProvider(HUDHandlerCrops.INSTANCE, getClass(baseClassName)); } catch (Exception e) { LOGGER.error("[IC2] Error while loading Crops hooks.", e); } @@ -87,13 +88,30 @@ private void registerGenerator() { registerMethod(className, "getFuel"); registerMethod(className, "getMaxFuel"); - this.registrar.registerBodyProvider(HUDHandlerGenerators.INSTANCE, classes.get(className)); - this.registrar.registerNBTProvider(HUDHandlerGenerators.INSTANCE, classes.get(className)); + this.registrar.registerBodyProvider(HUDHandlerGenerators.INSTANCE, getClass(className)); + this.registrar.registerNBTProvider(HUDHandlerGenerators.INSTANCE, getClass(className)); } catch (Exception e) { - LOGGER.error("[IC2] Error while loading crops hooks.", e); + LOGGER.error("[IC2] Error while loading Generator hooks.", e); } } + + private void registerSolarGenerator() { + String packageName = "ic2.core.block.generator.tile"; + String className = "TileEntitySolarPanel"; + try { + registerClass(packageName + "." + className); + registerMethod(className, "getOutput"); + registerMethod(className, "getSourceTier"); + + this.registrar.registerBodyProvider(HUDHandlerSolarGenerators.INSTANCE, getClass(className)); + this.registrar.registerNBTProvider(HUDHandlerSolarGenerators.INSTANCE, getClass(className)); + } catch (Exception e) { + LOGGER.error("[IC2] Error while loading Solar Generator hooks.", e); + } + } + + private void registerEUStorage() { String packageName = "ic2.core.block.base.tile"; String className = "TileEntityElectricBlock"; @@ -104,8 +122,8 @@ private void registerEUStorage() { registerMethod(className, "getOutput"); registerMethod(className, "getTier"); - this.registrar.registerBodyProvider(HUDHandlerEUStorages.INSTANCE, classes.get(className)); - this.registrar.registerNBTProvider(HUDHandlerEUStorages.INSTANCE, classes.get(className)); + this.registrar.registerBodyProvider(HUDHandlerEUStorages.INSTANCE, getClass(className)); + this.registrar.registerNBTProvider(HUDHandlerEUStorages.INSTANCE, getClass(className)); } catch (Exception e) { LOGGER.error("[IC2] Error while loading EU Storage hooks.", e); @@ -122,8 +140,8 @@ private void registerTransformer() { registerMethod(className, "getActive"); registerMethod(className, "getSinkTier"); registerMethod(className, "getSourceTier"); - this.registrar.registerBodyProvider(HUDHandlerTransformers.INSTANCE, classes.get(className)); - this.registrar.registerNBTProvider(HUDHandlerTransformers.INSTANCE, classes.get(className)); + this.registrar.registerBodyProvider(HUDHandlerTransformers.INSTANCE, getClass(className)); + this.registrar.registerNBTProvider(HUDHandlerTransformers.INSTANCE, getClass(className)); } catch (Exception e) { LOGGER.error("[IC2] Error while loading Transformer hooks.", e); } @@ -138,8 +156,8 @@ private void registerMachines() { registerField(className, "maxInput"); registerMethod(className, "getMaxEU"); registerMethod(className, "getStoredEU"); - this.registrar.registerBodyProvider(HUDHandlerMachines.INSTANCE, classes.get(className)); - this.registrar.registerNBTProvider(HUDHandlerMachines.INSTANCE, classes.get(className)); + this.registrar.registerBodyProvider(HUDHandlerMachines.INSTANCE, getClass(className)); + this.registrar.registerNBTProvider(HUDHandlerMachines.INSTANCE, getClass(className)); } catch (Exception e) { LOGGER.error("[IC2] Error while loading Machines hooks.", e); }