From a43e04598e201d317201e75352813323d0b686d3 Mon Sep 17 00:00:00 2001 From: alongstringofnumbers Date: Wed, 29 Jan 2025 10:24:54 -0700 Subject: [PATCH 1/4] Show required energy in Quantum controller when out of power --- .../theoneprobe/provider/QuantumStorageProvider.java | 11 +++++------ src/main/resources/assets/gregtech/lang/en_us.lang | 1 + 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/gregtech/integration/theoneprobe/provider/QuantumStorageProvider.java b/src/main/java/gregtech/integration/theoneprobe/provider/QuantumStorageProvider.java index 792be0ac4e5..16bf6ba538f 100644 --- a/src/main/java/gregtech/integration/theoneprobe/provider/QuantumStorageProvider.java +++ b/src/main/java/gregtech/integration/theoneprobe/provider/QuantumStorageProvider.java @@ -31,13 +31,14 @@ public void addProbeInfo(ProbeMode mode, IProbeInfo probeInfo, EntityPlayer play if (blockState.getBlock().hasTileEntity(blockState) && world.getTileEntity(data.getPos()) instanceof IGregTechTileEntity gtte) { if (gtte.getMetaTileEntity() instanceof IQuantumController controller) { + String eutText = configureEnergyUsage(controller.getEnergyUsage() / 10); if (controller.getCount(IQuantumStorage.Type.ENERGY) == 0) { probeInfo.text("{*gregtech.top.quantum_controller.no_hatches*}"); } else if (!controller.isPowered()) { probeInfo.text("{*gregtech.top.quantum_controller.no_power*}"); + probeInfo.text(TextStyleClass.INFO + "{*gregtech.top.energy_required*} " + eutText); } else { - long usage = controller.getEnergyUsage(); - configureEnergyUsage(usage / 10, probeInfo); + probeInfo.text(TextStyleClass.INFO + "{*gregtech.top.energy_consumption*} " + eutText); } } else if (gtte.getMetaTileEntity() instanceof IQuantumStoragestorage && (storage.getType() == IQuantumStorage.Type.ITEM || @@ -59,10 +60,8 @@ public void addProbeInfo(ProbeMode mode, IProbeInfo probeInfo, EntityPlayer play "{*" + status + "*}"; } - public void configureEnergyUsage(long EUs, IProbeInfo probeInfo) { - if (EUs == 0) return; - String text = TextFormatting.RED.toString() + EUs + TextStyleClass.INFO + " EU/t" + TextFormatting.GREEN + + public String configureEnergyUsage(long EUs) { + return TextFormatting.RED.toString() + EUs + TextStyleClass.INFO + " EU/t" + TextFormatting.GREEN + " (" + GTValues.VNF[GTUtility.getTierByVoltage(EUs)] + TextFormatting.GREEN + ")"; - probeInfo.text(TextStyleClass.INFO + "{*gregtech.top.energy_consumption*} " + text); } } diff --git a/src/main/resources/assets/gregtech/lang/en_us.lang b/src/main/resources/assets/gregtech/lang/en_us.lang index eef80763ada..c282f52c966 100644 --- a/src/main/resources/assets/gregtech/lang/en_us.lang +++ b/src/main/resources/assets/gregtech/lang/en_us.lang @@ -68,6 +68,7 @@ gregtech.top.working_disabled=Working Disabled gregtech.top.energy_consumption=Using gregtech.top.energy_production=Producing +gregtech.top.energy_required=Requires gregtech.top.transform_up=Step Up gregtech.top.transform_down=Step Down From 03e2469011ac33c3853add7a84a11a420dd023cf Mon Sep 17 00:00:00 2001 From: alongstringofnumbers Date: Wed, 29 Jan 2025 10:29:39 -0700 Subject: [PATCH 2/4] Add to no hatch case as well --- .../integration/theoneprobe/provider/QuantumStorageProvider.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/gregtech/integration/theoneprobe/provider/QuantumStorageProvider.java b/src/main/java/gregtech/integration/theoneprobe/provider/QuantumStorageProvider.java index 16bf6ba538f..c831488cc9c 100644 --- a/src/main/java/gregtech/integration/theoneprobe/provider/QuantumStorageProvider.java +++ b/src/main/java/gregtech/integration/theoneprobe/provider/QuantumStorageProvider.java @@ -34,6 +34,7 @@ public void addProbeInfo(ProbeMode mode, IProbeInfo probeInfo, EntityPlayer play String eutText = configureEnergyUsage(controller.getEnergyUsage() / 10); if (controller.getCount(IQuantumStorage.Type.ENERGY) == 0) { probeInfo.text("{*gregtech.top.quantum_controller.no_hatches*}"); + probeInfo.text(TextStyleClass.INFO + "{*gregtech.top.energy_required*} " + eutText); } else if (!controller.isPowered()) { probeInfo.text("{*gregtech.top.quantum_controller.no_power*}"); probeInfo.text(TextStyleClass.INFO + "{*gregtech.top.energy_required*} " + eutText); From ed9bdc26254c689a56be576a025888d2a32252d3 Mon Sep 17 00:00:00 2001 From: alongstringofnumbers Date: Wed, 29 Jan 2025 12:32:26 -0700 Subject: [PATCH 3/4] Add HWYLA support for Quantum Storage --- .../integration/hwyla/HWYLAModule.java | 19 ++- .../provider/QuantumStorageProvider.java | 113 ++++++++++++++++++ 2 files changed, 131 insertions(+), 1 deletion(-) create mode 100644 src/main/java/gregtech/integration/hwyla/provider/QuantumStorageProvider.java diff --git a/src/main/java/gregtech/integration/hwyla/HWYLAModule.java b/src/main/java/gregtech/integration/hwyla/HWYLAModule.java index a604d6331e1..f93bdf6ee1a 100644 --- a/src/main/java/gregtech/integration/hwyla/HWYLAModule.java +++ b/src/main/java/gregtech/integration/hwyla/HWYLAModule.java @@ -4,7 +4,23 @@ import gregtech.api.modules.GregTechModule; import gregtech.api.util.Mods; import gregtech.integration.IntegrationSubmodule; -import gregtech.integration.hwyla.provider.*; +import gregtech.integration.hwyla.provider.ActiveTransformerDataProvider; +import gregtech.integration.hwyla.provider.BatteryBufferDataProvider; +import gregtech.integration.hwyla.provider.BlockOreDataProvider; +import gregtech.integration.hwyla.provider.ControllableDataProvider; +import gregtech.integration.hwyla.provider.ConverterDataProvider; +import gregtech.integration.hwyla.provider.DiodeDataProvider; +import gregtech.integration.hwyla.provider.ElectricContainerDataProvider; +import gregtech.integration.hwyla.provider.LampDataProvider; +import gregtech.integration.hwyla.provider.MaintenanceDataProvider; +import gregtech.integration.hwyla.provider.MultiRecipeMapDataProvider; +import gregtech.integration.hwyla.provider.MultiblockDataProvider; +import gregtech.integration.hwyla.provider.PrimitivePumpDataProvider; +import gregtech.integration.hwyla.provider.QuantumStorageProvider; +import gregtech.integration.hwyla.provider.RecipeLogicDataProvider; +import gregtech.integration.hwyla.provider.SteamBoilerDataProvider; +import gregtech.integration.hwyla.provider.TransformerDataProvider; +import gregtech.integration.hwyla.provider.WorkableDataProvider; import gregtech.modules.GregTechModules; import net.minecraft.item.ItemStack; @@ -42,6 +58,7 @@ public void register(IWailaRegistrar registrar) { LampDataProvider.INSTANCE.register(registrar); ActiveTransformerDataProvider.INSTANCE.register(registrar); BatteryBufferDataProvider.INSTANCE.register(registrar); + QuantumStorageProvider.INSTANCE.register(registrar); } /** Render an ItemStack. */ diff --git a/src/main/java/gregtech/integration/hwyla/provider/QuantumStorageProvider.java b/src/main/java/gregtech/integration/hwyla/provider/QuantumStorageProvider.java new file mode 100644 index 00000000000..218d79a4278 --- /dev/null +++ b/src/main/java/gregtech/integration/hwyla/provider/QuantumStorageProvider.java @@ -0,0 +1,113 @@ +package gregtech.integration.hwyla.provider; + +import gregtech.api.GTValues; +import gregtech.api.capability.IQuantumController; +import gregtech.api.capability.IQuantumStorage; +import gregtech.api.metatileentity.interfaces.IGregTechTileEntity; +import gregtech.api.util.GTUtility; + +import net.minecraft.client.resources.I18n; +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.util.text.TextFormatting; +import net.minecraft.world.World; + +import mcp.mobius.waila.api.IWailaConfigHandler; +import mcp.mobius.waila.api.IWailaDataAccessor; +import mcp.mobius.waila.api.IWailaDataProvider; +import mcp.mobius.waila.api.IWailaRegistrar; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class QuantumStorageProvider implements IWailaDataProvider { + + public static final QuantumStorageProvider INSTANCE = new QuantumStorageProvider(); + + public void register(@NotNull IWailaRegistrar registrar) { + registrar.registerBodyProvider(this, IGregTechTileEntity.class); + registrar.registerNBTProvider(this, IGregTechTileEntity.class); + registrar.addConfig(GTValues.MOD_NAME, "gregtech.quantum_storage"); + } + + @NotNull + @Override + public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, + BlockPos pos) { + if (te instanceof IGregTechTileEntity gtte) { + if (gtte.getMetaTileEntity() instanceof IQuantumStorage storage && + (storage.getType() == IQuantumStorage.Type.ITEM || + storage.getType() == IQuantumStorage.Type.FLUID)) { + var controller = storage.getQuantumController(); + int status = 0; + + if (controller != null) { + if (controller.isPowered()) { + status = 1; + } else { + status = 2; + } + } + + NBTTagCompound subTag = new NBTTagCompound(); + subTag.setInteger("Connection", status); + tag.setTag("gregtech.IQuantumStorageController", subTag); + } + } + + return tag; + } + + @NotNull + @Override + public List getWailaBody(ItemStack itemStack, List tooltip, IWailaDataAccessor accessor, + IWailaConfigHandler config) { + if (!config.getConfig("gregtech.quantum_storage") || + !(accessor.getTileEntity() instanceof IGregTechTileEntity gtte)) { + return tooltip; + } + + if (gtte.getMetaTileEntity() instanceof IQuantumController controller) { + String eutText = configureEnergyUsage(controller.getEnergyUsage() / 10); + if (controller.getCount(IQuantumStorage.Type.ENERGY) == 0) { + tooltip.add(I18n.format("gregtech.top.quantum_controller.no_hatches")); + tooltip.add(I18n.format("gregtech.top.energy_required") + eutText); + } else if (!controller.isPowered()) { + tooltip.add(I18n.format("gregtech.top.quantum_controller.no_power")); + tooltip.add(I18n.format("gregtech.top.energy_required") + eutText); + } else { + tooltip.add(I18n.format("gregtech.top.energy_consumption") + eutText); + } + } else if (gtte.getMetaTileEntity() instanceof IQuantumStorage storage && + (storage.getType() == IQuantumStorage.Type.ITEM || + storage.getType() == IQuantumStorage.Type.FLUID)) { + if (accessor.getNBTData().hasKey("gregtech.IQuantumStorageController")) { + NBTTagCompound tag = accessor.getNBTData() + .getCompoundTag("gregtech.IQuantumStorageController"); + int connection = tag.getInteger("Connection"); + String status; + + switch (connection) { + case 1 -> status = I18n.format("gregtech.top.quantum_status.powered"); + case 2 -> status = I18n.format("gregtech.top.quantum_status.connected"); + default -> status = I18n.format("gregtech.top.quantum_status.disconnected"); + } + + status = I18n.format("gregtech.top.quantum_status.label") + + status; + + tooltip.add(status); + } + } + + return tooltip; + } + + public String configureEnergyUsage(long EUs) { + return TextFormatting.RED.toString() + EUs + " EU/t" + TextFormatting.GREEN + + " (" + GTValues.VNF[GTUtility.getTierByVoltage(EUs)] + TextFormatting.GREEN + ")"; + } +} From dea60bf2f7ecafb735a0724ea5838ef20f0dc459 Mon Sep 17 00:00:00 2001 From: M-W-K <31022105+M-W-K@users.noreply.github.com> Date: Wed, 29 Jan 2025 18:26:25 -0700 Subject: [PATCH 4/4] spotless assist --- .../provider/QuantumStorageProvider.java | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/main/java/gregtech/integration/hwyla/provider/QuantumStorageProvider.java b/src/main/java/gregtech/integration/hwyla/provider/QuantumStorageProvider.java index 218d79a4278..509c890405d 100644 --- a/src/main/java/gregtech/integration/hwyla/provider/QuantumStorageProvider.java +++ b/src/main/java/gregtech/integration/hwyla/provider/QuantumStorageProvider.java @@ -38,7 +38,7 @@ public void register(@NotNull IWailaRegistrar registrar) { public NBTTagCompound getNBTData(EntityPlayerMP player, TileEntity te, NBTTagCompound tag, World world, BlockPos pos) { if (te instanceof IGregTechTileEntity gtte) { - if (gtte.getMetaTileEntity() instanceof IQuantumStorage storage && + if (gtte.getMetaTileEntity() instanceof IQuantumStoragestorage && (storage.getType() == IQuantumStorage.Type.ITEM || storage.getType() == IQuantumStorage.Type.FLUID)) { var controller = storage.getQuantumController(); @@ -81,27 +81,27 @@ public List getWailaBody(ItemStack itemStack, List tooltip, IWai } else { tooltip.add(I18n.format("gregtech.top.energy_consumption") + eutText); } - } else if (gtte.getMetaTileEntity() instanceof IQuantumStorage storage && + } else if (gtte.getMetaTileEntity() instanceof IQuantumStoragestorage && (storage.getType() == IQuantumStorage.Type.ITEM || storage.getType() == IQuantumStorage.Type.FLUID)) { - if (accessor.getNBTData().hasKey("gregtech.IQuantumStorageController")) { - NBTTagCompound tag = accessor.getNBTData() - .getCompoundTag("gregtech.IQuantumStorageController"); - int connection = tag.getInteger("Connection"); - String status; - - switch (connection) { - case 1 -> status = I18n.format("gregtech.top.quantum_status.powered"); - case 2 -> status = I18n.format("gregtech.top.quantum_status.connected"); - default -> status = I18n.format("gregtech.top.quantum_status.disconnected"); - } - - status = I18n.format("gregtech.top.quantum_status.label") + - status; - - tooltip.add(status); - } - } + if (accessor.getNBTData().hasKey("gregtech.IQuantumStorageController")) { + NBTTagCompound tag = accessor.getNBTData() + .getCompoundTag("gregtech.IQuantumStorageController"); + int connection = tag.getInteger("Connection"); + String status; + + switch (connection) { + case 1 -> status = I18n.format("gregtech.top.quantum_status.powered"); + case 2 -> status = I18n.format("gregtech.top.quantum_status.connected"); + default -> status = I18n.format("gregtech.top.quantum_status.disconnected"); + } + + status = I18n.format("gregtech.top.quantum_status.label") + + status; + + tooltip.add(status); + } + } return tooltip; }