diff --git a/src/main/java/gregtech/api/render/Textures.java b/src/main/java/gregtech/api/render/Textures.java index fd800669e3d..c8c56a93797 100644 --- a/src/main/java/gregtech/api/render/Textures.java +++ b/src/main/java/gregtech/api/render/Textures.java @@ -166,6 +166,10 @@ public class Textures { public static final SimpleOverlayRenderer ENERGY_IN = new SimpleOverlayRenderer("overlay/machine/overlay_energy_in"); public static final SimpleOverlayRenderer ENERGY_OUT_MULTI = new SimpleOverlayRenderer("overlay/machine/overlay_energy_out_multi"); public static final SimpleOverlayRenderer ENERGY_IN_MULTI = new SimpleOverlayRenderer("overlay/machine/overlay_energy_in_multi"); + public static final SimpleOverlayRenderer ENERGY_OUT_HI = new SimpleOverlayRenderer("overlay/machine/overlay_energy_out_hi"); + public static final SimpleOverlayRenderer ENERGY_IN_HI = new SimpleOverlayRenderer("overlay/machine/overlay_energy_in_hi"); + public static final SimpleOverlayRenderer ENERGY_OUT_ULTRA = new SimpleOverlayRenderer("overlay/machine/overlay_energy_out_ultra"); + public static final SimpleOverlayRenderer ENERGY_IN_ULTRA = new SimpleOverlayRenderer("overlay/machine/overlay_energy_in_ultra"); public static final SimpleOverlayRenderer CONVEYOR_OVERLAY = new SimpleOverlayRenderer("cover/overlay_conveyor"); public static final SimpleOverlayRenderer ARM_OVERLAY = new SimpleOverlayRenderer("cover/overlay_arm"); public static final SimpleOverlayRenderer PUMP_OVERLAY = new SimpleOverlayRenderer("cover/overlay_pump"); diff --git a/src/main/java/gregtech/common/metatileentities/MetaTileEntities.java b/src/main/java/gregtech/common/metatileentities/MetaTileEntities.java index fd8da94a703..c77dcf84211 100644 --- a/src/main/java/gregtech/common/metatileentities/MetaTileEntities.java +++ b/src/main/java/gregtech/common/metatileentities/MetaTileEntities.java @@ -11,10 +11,7 @@ import gregtech.api.unification.material.Materials; import gregtech.api.util.GTLog; import gregtech.common.metatileentities.electric.*; -import gregtech.common.metatileentities.electric.multiblockpart.MetaTileEntityEnergyHatch; -import gregtech.common.metatileentities.electric.multiblockpart.MetaTileEntityFluidHatch; -import gregtech.common.metatileentities.electric.multiblockpart.MetaTileEntityItemBus; -import gregtech.common.metatileentities.electric.multiblockpart.MetaTileEntityRotorHolder; +import gregtech.common.metatileentities.electric.multiblockpart.*; import gregtech.common.metatileentities.multi.*; import gregtech.common.metatileentities.multi.MetaTileEntityLargeBoiler.BoilerType; import gregtech.common.metatileentities.multi.electric.*; @@ -41,6 +38,7 @@ public class MetaTileEntities { //HULLS public static final MetaTileEntityHull[] HULL = new MetaTileEntityHull[GTValues.V.length]; public static final MetaTileEntityTransformer[] TRANSFORMER = new MetaTileEntityTransformer[GTValues.V.length - 1]; // no ULV, no MAX + public static final MetaTileEntityAdjustableTransformer[] ADJUSTABLE_TRANSFORMER = new MetaTileEntityAdjustableTransformer[GTValues.V.length - 1]; // no ULV, no MAX public static final MetaTileEntityBatteryBuffer[][] BATTERY_BUFFER = new MetaTileEntityBatteryBuffer[GTValues.V.length][]; public static final MetaTileEntityCharger[] CHARGER = new MetaTileEntityCharger[GTValues.V.length]; @@ -120,12 +118,14 @@ public class MetaTileEntities { public static final MetaTileEntityFluidHatch[] FLUID_IMPORT_HATCH = new MetaTileEntityFluidHatch[GTValues.UHV + 1]; public static final MetaTileEntityFluidHatch[] FLUID_EXPORT_HATCH = new MetaTileEntityFluidHatch[GTValues.UHV + 1]; public static final MetaTileEntityEnergyHatch[] ENERGY_INPUT_HATCH = new MetaTileEntityEnergyHatch[GTValues.V.length]; + public static final MetaTileEntityAdjustableEnergyHatch[] ENERGY_INPUT_HATCH_ADJUSTABLE = new MetaTileEntityAdjustableEnergyHatch[GTValues.V.length]; public static final MetaTileEntityEnergyHatch[] ENERGY_OUTPUT_HATCH = new MetaTileEntityEnergyHatch[GTValues.V.length]; - public static final MetaTileEntityRotorHolder[] ROTOR_HOLDER = new MetaTileEntityRotorHolder[3]; //HV, LuV, MAX + public static final MetaTileEntityAdjustableEnergyHatch[] ENERGY_OUTPUT_HATCH_ADJUSTABLE = new MetaTileEntityAdjustableEnergyHatch[GTValues.V.length]; public static MetaTileEntityCokeOvenHatch COKE_OVEN_HATCH; public static MetaTileEntitySteamItemBus STEAM_EXPORT_BUS; public static MetaTileEntitySteamItemBus STEAM_IMPORT_BUS; public static MetaTileEntitySteamHatch STEAM_HATCH; + public static final MetaTileEntityRotorHolder[] ROTOR_HOLDER = new MetaTileEntityRotorHolder[3]; //HV, LuV, MAX //MULTIBLOCKS SECTION public static MetaTileEntityPrimitiveBlastFurnace PRIMITIVE_BLAST_FURNACE; @@ -429,13 +429,17 @@ public static void init() { STEAM_OVEN = GregTechAPI.registerMetaTileEntity(1023, new MetaTileEntitySteamOven(gregtechId("steam_oven"))); STEAM_GRINDER = GregTechAPI.registerMetaTileEntity(1024, new MetaTileEntitySteamGrinder(gregtechId("steam_grinder"))); - // MISC MTE's START: IDs 1300-2000 - // Transformer, IDs 1300-1314 + // MISC MTE's START: IDs 1285-2000 + + + // Transformer, IDs 1285-1314 endPos = GTValues.HT ? TRANSFORMER.length - 1 : Math.min(TRANSFORMER.length - 1, GTValues.UV); for (int i = 0; i <= endPos; i++) { MetaTileEntityTransformer transformer = new MetaTileEntityTransformer(gregtechId("transformer." + GTValues.VN[i].toLowerCase()), i); - TRANSFORMER[i] = GregTechAPI.registerMetaTileEntity(1300 + (i), transformer); + TRANSFORMER[i] = GregTechAPI.registerMetaTileEntity(1285 + (i), transformer); + MetaTileEntityAdjustableTransformer adjustableTransformer = new MetaTileEntityAdjustableTransformer(gregtechId("transformer.adjustable." + GTValues.VN[i].toLowerCase()), i); + ADJUSTABLE_TRANSFORMER[i] = GregTechAPI.registerMetaTileEntity(1300 + (i), adjustableTransformer); } // Battery Buffer, IDs 1315-1374 @@ -492,38 +496,32 @@ public static void init() { GregTechAPI.registerMetaTileEntity(1420 + 9, FLUID_IMPORT_HATCH[9]); GregTechAPI.registerMetaTileEntity(1435 + 9, FLUID_EXPORT_HATCH[9]); - // Energy Input/Output Hatches, IDs 1450-1479 + // Energy Input/Output Hatches, IDs 1450-1509 endPos = GTValues.HT ? ENERGY_INPUT_HATCH.length - 1 : Math.min(ENERGY_INPUT_HATCH.length - 1, GTValues.UV + 1); for (int i = 0; i < endPos; i++) { String voltageName = GTValues.VN[i].toLowerCase(); ENERGY_INPUT_HATCH[i] = new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.input." + voltageName), i, false); + ENERGY_INPUT_HATCH_ADJUSTABLE[i] = new MetaTileEntityAdjustableEnergyHatch(gregtechId("energy_hatch.adjustable.input." + voltageName), i, false); ENERGY_OUTPUT_HATCH[i] = new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.output." + voltageName), i, true); + ENERGY_OUTPUT_HATCH_ADJUSTABLE[i] = new MetaTileEntityAdjustableEnergyHatch(gregtechId("energy_hatch.adjustable.output." + voltageName), i, true); GregTechAPI.registerMetaTileEntity(1450 + i, ENERGY_INPUT_HATCH[i]); - GregTechAPI.registerMetaTileEntity(1465 + i, ENERGY_OUTPUT_HATCH[i]); + GregTechAPI.registerMetaTileEntity(1465 + i, ENERGY_INPUT_HATCH_ADJUSTABLE[i]); + GregTechAPI.registerMetaTileEntity(1480 + i, ENERGY_OUTPUT_HATCH[i]); + GregTechAPI.registerMetaTileEntity(1495 + i, ENERGY_OUTPUT_HATCH_ADJUSTABLE[i]); } // MAX Hatches ENERGY_INPUT_HATCH[ENERGY_INPUT_HATCH.length - 1] = new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.input.max"), ENERGY_INPUT_HATCH.length - 1, false); + ENERGY_INPUT_HATCH_ADJUSTABLE[ENERGY_INPUT_HATCH_ADJUSTABLE.length - 1] = new MetaTileEntityAdjustableEnergyHatch(gregtechId("energy_hatch.hi_amp.input.max"), ENERGY_INPUT_HATCH_ADJUSTABLE.length - 1, false); ENERGY_OUTPUT_HATCH[ENERGY_OUTPUT_HATCH.length - 1] = new MetaTileEntityEnergyHatch(gregtechId("energy_hatch.output.max"), ENERGY_OUTPUT_HATCH.length - 1, true); + ENERGY_OUTPUT_HATCH_ADJUSTABLE[ENERGY_OUTPUT_HATCH_ADJUSTABLE.length - 1] = new MetaTileEntityAdjustableEnergyHatch(gregtechId("energy_hatch.hi_amp.output.max"), ENERGY_OUTPUT_HATCH_ADJUSTABLE.length - 1, true); GregTechAPI.registerMetaTileEntity(1450 + ENERGY_INPUT_HATCH.length - 1, ENERGY_INPUT_HATCH[ENERGY_INPUT_HATCH.length - 1]); - GregTechAPI.registerMetaTileEntity(1465 + ENERGY_OUTPUT_HATCH.length - 1, ENERGY_OUTPUT_HATCH[ENERGY_OUTPUT_HATCH.length - 1]); - - // Rotor Holder, IDs 1480-1484 - ROTOR_HOLDER[0] = GregTechAPI.registerMetaTileEntity(1480, new MetaTileEntityRotorHolder(gregtechId("rotor_holder.hv"), GTValues.HV, 1.0f)); - ROTOR_HOLDER[1] = GregTechAPI.registerMetaTileEntity(1481, new MetaTileEntityRotorHolder(gregtechId("rotor_holder.luv"), GTValues.LuV, 1.15f)); - ROTOR_HOLDER[2] = GregTechAPI.registerMetaTileEntity(1482, new MetaTileEntityRotorHolder(gregtechId("rotor_holder.uhv"), GTValues.UHV, 1.25f)); - - // Free Range, IDs 1485-1499 + GregTechAPI.registerMetaTileEntity(1465 + ENERGY_INPUT_HATCH_ADJUSTABLE.length - 1, ENERGY_INPUT_HATCH_ADJUSTABLE[ENERGY_INPUT_HATCH_ADJUSTABLE.length - 1]); + GregTechAPI.registerMetaTileEntity(1480 + ENERGY_INPUT_HATCH.length - 1, ENERGY_INPUT_HATCH[ENERGY_INPUT_HATCH.length - 1]); + GregTechAPI.registerMetaTileEntity(1495 + ENERGY_OUTPUT_HATCH_ADJUSTABLE.length - 1, ENERGY_OUTPUT_HATCH_ADJUSTABLE[ENERGY_OUTPUT_HATCH_ADJUSTABLE.length - 1]); - // Tanks, IDs 1500-1514 - WOODEN_TANK = GregTechAPI.registerMetaTileEntity(1500, new MetaTileEntityTank(gregtechId("wooden_tank"), Materials.Wood, 4000, 1, 3)); - BRONZE_TANK = GregTechAPI.registerMetaTileEntity(1501, new MetaTileEntityTank(gregtechId("bronze_tank"), Materials.Bronze, 8000, 4, 3)); - STEEL_TANK = GregTechAPI.registerMetaTileEntity(1502, new MetaTileEntityTank(gregtechId("steel_tank"), Materials.Steel, 16000, 7, 5)); - ALUMINIUM_TANK = GregTechAPI.registerMetaTileEntity(1503, new MetaTileEntityTank(gregtechId("aluminium_tank"), Materials.Aluminium, 32000, 8, 5)); - STAINLESS_STEEL_TANK = GregTechAPI.registerMetaTileEntity(1504, new MetaTileEntityTank(gregtechId("stainless_steel_tank"), Materials.StainlessSteel, 64000, 9, 7)); - TITANIUM_TANK = GregTechAPI.registerMetaTileEntity(1505, new MetaTileEntityTank(gregtechId("titanium_tank"), Materials.Titanium, 128000, 12, 9)); - TUNGSTENSTEEL_TANK = GregTechAPI.registerMetaTileEntity(1506, new MetaTileEntityTank(gregtechId("tungstensteel_tank"), Materials.TungstenSteel, 512000, 16, 9)); + // Free Range: 1510-1514 // Fishers, IDs 1515-1529 FISHER[0] = GregTechAPI.registerMetaTileEntity(1515, new MetaTileEntityFisher(gregtechId("fisher.lv"), 1)); @@ -572,35 +570,49 @@ public static void init() { GregTechAPI.registerMetaTileEntity(1590 + i, BLOCK_BREAKER[i]); } - // Drums, IDs 1595-1609 - WOODEN_DRUM = GregTechAPI.registerMetaTileEntity(1595, new MetaTileEntityDrum(gregtechId("drum.wood"), Materials.Wood, 4000)); - BRONZE_DRUM = GregTechAPI.registerMetaTileEntity(1596, new MetaTileEntityDrum(gregtechId("drum.bronze"), Materials.Bronze, 8000)); - STEEL_DRUM = GregTechAPI.registerMetaTileEntity(1597, new MetaTileEntityDrum(gregtechId("drum.steel"), Materials.Steel, 16000)); - ALUMINIUM_DRUM = GregTechAPI.registerMetaTileEntity(1598, new MetaTileEntityDrum(gregtechId("drum.aluminium"), Materials.Aluminium, 32000)); - STAINLESS_STEEL_DRUM = GregTechAPI.registerMetaTileEntity(1599, new MetaTileEntityDrum(gregtechId("drum.stainless_steel"), Materials.StainlessSteel, 64000)); - TITANIUM_DRUM = GregTechAPI.registerMetaTileEntity(1600, new MetaTileEntityDrum(gregtechId("drum.titanium"), Materials.Titanium, 128000)); - TUNGSTENSTEEL_DRUM = GregTechAPI.registerMetaTileEntity(1601, new MetaTileEntityDrum(gregtechId("drum.tungstensteel"), Materials.TungstenSteel, 512000)); - - // Crates, IDs 1610-1624 - WOODEN_CRATE = GregTechAPI.registerMetaTileEntity(1610, new MetaTileEntityCrate(gregtechId("crate.wood"), Materials.Wood, 27)); - BRONZE_CRATE = GregTechAPI.registerMetaTileEntity(1611, new MetaTileEntityCrate(gregtechId("crate.bronze"), Materials.Bronze, 54)); - STEEL_CRATE = GregTechAPI.registerMetaTileEntity(1612, new MetaTileEntityCrate(gregtechId("crate.steel"), Materials.Steel, 72)); - ALUMINIUM_CRATE = GregTechAPI.registerMetaTileEntity(1613, new MetaTileEntityCrate(gregtechId("crate.aluminium"), Materials.Aluminium, 90)); - STAINLESS_STEEL_CRATE = GregTechAPI.registerMetaTileEntity(1614, new MetaTileEntityCrate(gregtechId("crate.stainless_steel"), Materials.StainlessSteel, 108)); - TITANIUM_CRATE = GregTechAPI.registerMetaTileEntity(1615, new MetaTileEntityCrate(gregtechId("crate.titanium"), Materials.Titanium, 126)); - TUNGSTENSTEEL_CRATE = GregTechAPI.registerMetaTileEntity(1616, new MetaTileEntityCrate(gregtechId("crate.tungstensteel"), Materials.TungstenSteel, 144)); - - // Misc, IDs 1625-1999 - LOCKED_SAFE = GregTechAPI.registerMetaTileEntity(1626, new MetaTileEntityLockedSafe(gregtechId("locked_safe"))); - WORKBENCH = GregTechAPI.registerMetaTileEntity(1627, new MetaTileEntityWorkbench(gregtechId("workbench"))); - PRIMITIVE_WATER_PUMP = GregTechAPI.registerMetaTileEntity(1628, new MetaTileEntityPrimitiveWaterPump(gregtechId("primitive_water_pump"))); - PUMP_OUTPUT_HATCH = GregTechAPI.registerMetaTileEntity(1629, new MetaTileEntityPumpHatch(gregtechId("pump_hatch"))); - - INFINITE_EMITTER = GregTechAPI.registerMetaTileEntity(1630, new MetaTileEntityInfiniteEmitter(gregtechId("infinite_emitter"))); + // Tanks, IDs 1595-1609 + WOODEN_TANK = GregTechAPI.registerMetaTileEntity(1595, new MetaTileEntityTank(gregtechId("wooden_tank"), Materials.Wood, 4000, 1, 3)); + BRONZE_TANK = GregTechAPI.registerMetaTileEntity(1596, new MetaTileEntityTank(gregtechId("bronze_tank"), Materials.Bronze, 8000, 4, 3)); + STEEL_TANK = GregTechAPI.registerMetaTileEntity(1597, new MetaTileEntityTank(gregtechId("steel_tank"), Materials.Steel, 16000, 7, 5)); + ALUMINIUM_TANK = GregTechAPI.registerMetaTileEntity(1598, new MetaTileEntityTank(gregtechId("aluminium_tank"), Materials.Aluminium, 32000, 8, 5)); + STAINLESS_STEEL_TANK = GregTechAPI.registerMetaTileEntity(1599, new MetaTileEntityTank(gregtechId("stainless_steel_tank"), Materials.StainlessSteel, 64000, 9, 7)); + TITANIUM_TANK = GregTechAPI.registerMetaTileEntity(1600, new MetaTileEntityTank(gregtechId("titanium_tank"), Materials.Titanium, 128000, 12, 9)); + TUNGSTENSTEEL_TANK = GregTechAPI.registerMetaTileEntity(1601, new MetaTileEntityTank(gregtechId("tungstensteel_tank"), Materials.TungstenSteel, 512000, 16, 9)); + + // Drums, IDs 1610-1624 + WOODEN_DRUM = GregTechAPI.registerMetaTileEntity(1610, new MetaTileEntityDrum(gregtechId("drum.wood"), Materials.Wood, 4000)); + BRONZE_DRUM = GregTechAPI.registerMetaTileEntity(1611, new MetaTileEntityDrum(gregtechId("drum.bronze"), Materials.Bronze, 8000)); + STEEL_DRUM = GregTechAPI.registerMetaTileEntity(1612, new MetaTileEntityDrum(gregtechId("drum.steel"), Materials.Steel, 16000)); + ALUMINIUM_DRUM = GregTechAPI.registerMetaTileEntity(1613, new MetaTileEntityDrum(gregtechId("drum.aluminium"), Materials.Aluminium, 32000)); + STAINLESS_STEEL_DRUM = GregTechAPI.registerMetaTileEntity(1614, new MetaTileEntityDrum(gregtechId("drum.stainless_steel"), Materials.StainlessSteel, 64000)); + TITANIUM_DRUM = GregTechAPI.registerMetaTileEntity(1615, new MetaTileEntityDrum(gregtechId("drum.titanium"), Materials.Titanium, 128000)); + TUNGSTENSTEEL_DRUM = GregTechAPI.registerMetaTileEntity(1616, new MetaTileEntityDrum(gregtechId("drum.tungstensteel"), Materials.TungstenSteel, 512000)); + + // Crates, IDs 1625-1639 + WOODEN_CRATE = GregTechAPI.registerMetaTileEntity(1625, new MetaTileEntityCrate(gregtechId("crate.wood"), Materials.Wood, 27)); + BRONZE_CRATE = GregTechAPI.registerMetaTileEntity(1626, new MetaTileEntityCrate(gregtechId("crate.bronze"), Materials.Bronze, 54)); + STEEL_CRATE = GregTechAPI.registerMetaTileEntity(1627, new MetaTileEntityCrate(gregtechId("crate.steel"), Materials.Steel, 72)); + ALUMINIUM_CRATE = GregTechAPI.registerMetaTileEntity(1628, new MetaTileEntityCrate(gregtechId("crate.aluminium"), Materials.Aluminium, 90)); + STAINLESS_STEEL_CRATE = GregTechAPI.registerMetaTileEntity(1629, new MetaTileEntityCrate(gregtechId("crate.stainless_steel"), Materials.StainlessSteel, 108)); + TITANIUM_CRATE = GregTechAPI.registerMetaTileEntity(1630, new MetaTileEntityCrate(gregtechId("crate.titanium"), Materials.Titanium, 126)); + TUNGSTENSTEEL_CRATE = GregTechAPI.registerMetaTileEntity(1631, new MetaTileEntityCrate(gregtechId("crate.tungstensteel"), Materials.TungstenSteel, 144)); + + // Rotor Holder, IDs 1640-1644 + ROTOR_HOLDER[0] = GregTechAPI.registerMetaTileEntity(1640, new MetaTileEntityRotorHolder(gregtechId("rotor_holder.hv"), GTValues.HV, 1.0f)); + ROTOR_HOLDER[1] = GregTechAPI.registerMetaTileEntity(1641, new MetaTileEntityRotorHolder(gregtechId("rotor_holder.luv"), GTValues.LuV, 1.15f)); + ROTOR_HOLDER[2] = GregTechAPI.registerMetaTileEntity(1642, new MetaTileEntityRotorHolder(gregtechId("rotor_holder.uhv"), GTValues.UHV, 1.25f)); + + // Misc, IDs 1645-1999 + LOCKED_SAFE = GregTechAPI.registerMetaTileEntity(1645, new MetaTileEntityLockedSafe(gregtechId("locked_safe"))); + WORKBENCH = GregTechAPI.registerMetaTileEntity(1646, new MetaTileEntityWorkbench(gregtechId("workbench"))); + PRIMITIVE_WATER_PUMP = GregTechAPI.registerMetaTileEntity(1647, new MetaTileEntityPrimitiveWaterPump(gregtechId("primitive_water_pump"))); + PUMP_OUTPUT_HATCH = GregTechAPI.registerMetaTileEntity(1648, new MetaTileEntityPumpHatch(gregtechId("pump_hatch"))); + + INFINITE_EMITTER = GregTechAPI.registerMetaTileEntity(1649, new MetaTileEntityInfiniteEmitter(gregtechId("infinite_emitter"))); // Steam Hatches/Buses - STEAM_EXPORT_BUS = GregTechAPI.registerMetaTileEntity(1631, new MetaTileEntitySteamItemBus(gregtechId("steam_export_bus"), true)); - STEAM_IMPORT_BUS = GregTechAPI.registerMetaTileEntity(1632, new MetaTileEntitySteamItemBus(gregtechId("steam_import_bus"), false)); - STEAM_HATCH = GregTechAPI.registerMetaTileEntity(1633, new MetaTileEntitySteamHatch(gregtechId("steam_hatch"))); + STEAM_EXPORT_BUS = GregTechAPI.registerMetaTileEntity(1650, new MetaTileEntitySteamItemBus(gregtechId("steam_export_bus"), true)); + STEAM_IMPORT_BUS = GregTechAPI.registerMetaTileEntity(1651, new MetaTileEntitySteamItemBus(gregtechId("steam_import_bus"), false)); + STEAM_HATCH = GregTechAPI.registerMetaTileEntity(1652, new MetaTileEntitySteamHatch(gregtechId("steam_hatch"))); /* * FOR ADDON DEVELOPERS: diff --git a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityAdjustableTransformer.java b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityAdjustableTransformer.java new file mode 100644 index 00000000000..607c5947e38 --- /dev/null +++ b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityAdjustableTransformer.java @@ -0,0 +1,195 @@ +package gregtech.common.metatileentities.electric; + +import codechicken.lib.raytracer.CuboidRayTraceResult; +import codechicken.lib.render.CCRenderState; +import codechicken.lib.render.pipeline.IVertexOperation; +import codechicken.lib.vec.Matrix4; +import gregtech.api.GTValues; +import gregtech.api.capability.GregtechCapabilities; +import gregtech.api.capability.impl.EnergyContainerHandler; +import gregtech.api.capability.tool.ISoftHammerItem; +import gregtech.api.metatileentity.MetaTileEntity; +import gregtech.api.metatileentity.MetaTileEntityHolder; +import gregtech.api.render.SimpleOverlayRenderer; +import gregtech.api.render.Textures; +import gregtech.api.util.PipelineUtil; +import gregtech.common.tools.DamageValues; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.PacketBuffer; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.text.TextComponentTranslation; +import net.minecraft.world.World; + +import javax.annotation.Nullable; +import java.util.Arrays; +import java.util.List; + +public class MetaTileEntityAdjustableTransformer extends MetaTileEntityTransformer { + + private static final int[] hiAmpsRange = {1, 2, 4, 16}; + private static final int[] loAmpsRange = {4, 8, 16, 64}; + private int ampIndex; + + public MetaTileEntityAdjustableTransformer(ResourceLocation metaTileEntityId, int tier) { + super(metaTileEntityId, tier); + this.ampIndex = 2; + } + + @Override + public MetaTileEntity createMetaTileEntity(MetaTileEntityHolder holder) { + return new MetaTileEntityAdjustableTransformer(metaTileEntityId, getTier()); + } + + @Override + public NBTTagCompound writeToNBT(NBTTagCompound data) { + super.writeToNBT(data); + data.setInteger("ampIndex", ampIndex); + return data; + } + + @Override + public void readFromNBT(NBTTagCompound data) { + super.readFromNBT(data); + this.ampIndex = data.getInteger("ampIndex"); + reinitializeEnergyContainer(); + } + + @Override + public void writeInitialSyncData(PacketBuffer buf) { + super.writeInitialSyncData(buf); + buf.writeInt(ampIndex); + } + + @Override + public void receiveInitialSyncData(PacketBuffer buf) { + super.receiveInitialSyncData(buf); + this.ampIndex = buf.readInt(); + } + + @Override + public void receiveCustomData(int dataId, PacketBuffer buf) { + super.receiveCustomData(dataId, buf); + if (dataId == 101) { + this.ampIndex = buf.readInt(); + scheduleRenderUpdate(); + } + } + + protected void incrementAmpIndex() { + this.ampIndex = (this.ampIndex + 1) % hiAmpsRange.length; + if (!getWorld().isRemote) { + reinitializeEnergyContainer(); + writeCustomData(101, b -> b.writeInt(ampIndex)); + getHolder().notifyBlockUpdate(); + markDirty(); + } + } + + @Override + protected void reinitializeEnergyContainer() { + long tierVoltage = GTValues.V[getTier()]; + if (isInverted()) { + //storage = 1 amp high; input = tier / 4; amperage = loAmpsRange[ampIndex]; output = tier; amperage = hiAmpsRange[ampIndex] + this.energyContainer = new EnergyContainerHandler(this, tierVoltage * 128L, tierVoltage, loAmpsRange[ampIndex], tierVoltage * 4, hiAmpsRange[ampIndex]); + ((EnergyContainerHandler) this.energyContainer).setSideInputCondition(s -> s != getFrontFacing()); + ((EnergyContainerHandler) this.energyContainer).setSideOutputCondition(s -> s == getFrontFacing()); + } else { + //storage = 1 amp high; input = tier; amperage = hiAmpsRange[ampIndex]; output = tier / 4; amperage = loAmpsRange[ampIndex] + this.energyContainer = new EnergyContainerHandler(this, tierVoltage * 128L, tierVoltage * 4, hiAmpsRange[ampIndex], tierVoltage, loAmpsRange[ampIndex]); + ((EnergyContainerHandler) this.energyContainer).setSideInputCondition(s -> s == getFrontFacing()); + ((EnergyContainerHandler) this.energyContainer).setSideOutputCondition(s -> s != getFrontFacing()); + } + } + + @Override + public void renderMetaTileEntity(CCRenderState renderState, Matrix4 translation, IVertexOperation[] pipeline) { + super.renderMetaTileEntity(renderState, translation, pipeline); + + SimpleOverlayRenderer otherFaceTexture; + SimpleOverlayRenderer frontFaceTexture; + switch (this.ampIndex) { + case 1: + otherFaceTexture = isInverted() ? Textures.ENERGY_IN_MULTI : Textures.ENERGY_OUT_MULTI; + frontFaceTexture = isInverted() ? Textures.ENERGY_IN_HI : Textures.ENERGY_IN_HI; + break; + case 2: + otherFaceTexture = isInverted() ? Textures.ENERGY_IN_HI : Textures.ENERGY_OUT_HI; + frontFaceTexture = isInverted() ? Textures.ENERGY_OUT_ULTRA : Textures.ENERGY_IN_ULTRA; + break; + case 3: + otherFaceTexture = isInverted() ? Textures.ENERGY_IN_ULTRA : Textures.ENERGY_OUT_ULTRA; + frontFaceTexture = isInverted() ? Textures.ENERGY_OUT_ULTRA : Textures.ENERGY_IN_ULTRA; + break; + default: + otherFaceTexture = isInverted() ? Textures.ENERGY_IN : Textures.ENERGY_OUT; + frontFaceTexture = isInverted() ? Textures.ENERGY_OUT_MULTI : Textures.ENERGY_IN_MULTI; + } + + frontFaceTexture.renderSided(frontFacing, renderState, translation, PipelineUtil.color(pipeline, GTValues.VC[getTier() + 1])); + Arrays.stream(EnumFacing.values()).filter(f -> f != frontFacing) + .forEach((f -> otherFaceTexture.renderSided(f, renderState, translation, PipelineUtil.color(pipeline, GTValues.VC[getTier()])))); + } + + @Override + public boolean onRightClick(EntityPlayer playerIn, EnumHand hand, EnumFacing facing, CuboidRayTraceResult hitResult) { + ItemStack itemStack = playerIn.getHeldItem(hand); + if (!itemStack.isEmpty() && itemStack.hasCapability(GregtechCapabilities.CAPABILITY_MALLET, null)) { + ISoftHammerItem softHammerItem = itemStack.getCapability(GregtechCapabilities.CAPABILITY_MALLET, null); + + if (getWorld().isRemote) { + scheduleRenderUpdate(); + return true; + } + if (!softHammerItem.damageItem(DamageValues.DAMAGE_FOR_SOFT_HAMMER, false)) { + return false; + } + + if (isInverted()) { + setTransformUp(false); + playerIn.sendMessage(new TextComponentTranslation("gregtech.machine.transformer.message_transform_down", + energyContainer.getInputVoltage(), energyContainer.getInputAmperage(), energyContainer.getOutputVoltage(), energyContainer.getOutputAmperage())); + } else { + setTransformUp(true); + playerIn.sendMessage(new TextComponentTranslation("gregtech.machine.transformer.message_transform_up", + energyContainer.getInputVoltage(), energyContainer.getInputAmperage(), energyContainer.getOutputVoltage(), energyContainer.getOutputAmperage())); + } + return true; + } + return false; + } + + @Override + public boolean onScrewdriverClick(EntityPlayer playerIn, EnumHand hand, EnumFacing facing, CuboidRayTraceResult hitResult) { + if (getWorld().isRemote) { + scheduleRenderUpdate(); + return true; + } + + incrementAmpIndex(); + playerIn.sendMessage(new TextComponentTranslation("gregtech.machine.transformer_adjustable.message_adjust", + energyContainer.getInputVoltage(), energyContainer.getInputAmperage(), energyContainer.getOutputVoltage(), energyContainer.getOutputAmperage())); + + return true; + } + + @Override + public void addInformation(ItemStack stack, @Nullable World player, List tooltip, boolean advanced) { + String lowerTierName = GTValues.VN[getTier()]; + String higherTierName = GTValues.VN[getTier() + 1]; + long lowerVoltage = energyContainer.getOutputVoltage(); + long higherVoltage = energyContainer.getInputVoltage(); + long lowerAmperage = energyContainer.getInputAmperage(); + long higherAmperage = energyContainer.getOutputAmperage(); + + tooltip.add(I18n.format("gregtech.machine.transformer.tooltip_tool_usage")); + tooltip.add(I18n.format("gregtech.machine.transformer_adjustable.tooltip_tool_usage")); + tooltip.add(I18n.format("gregtech.universal.tooltip.energy_storage_capacity", energyContainer.getEnergyCapacity())); + tooltip.add(I18n.format("gregtech.machine.transformer.tooltip_transform_down", lowerAmperage, higherVoltage, higherTierName, higherAmperage, lowerVoltage, lowerTierName)); + tooltip.add(I18n.format("gregtech.machine.transformer.tooltip_transform_up", higherAmperage, lowerVoltage, lowerTierName, lowerAmperage, higherVoltage, higherTierName)); + } +} diff --git a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityTransformer.java b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityTransformer.java index 6a33cac60f1..cce722986e4 100644 --- a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityTransformer.java +++ b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityTransformer.java @@ -175,15 +175,7 @@ public void addInformation(ItemStack stack, @Nullable World player, List tooltip.add(I18n.format("gregtech.machine.transformer.tooltip_tool_usage")); tooltip.add(I18n.format("gregtech.universal.tooltip.energy_storage_capacity", energyContainer.getEnergyCapacity())); - tooltip.add(I18n.format("gregtech.machine.transformer.tooltip_transform_down")); - tooltip.add(I18n.format("gregtech.universal.tooltip.voltage_in", higherVoltage, higherTierName)); - tooltip.add(I18n.format("gregtech.universal.tooltip.voltage_out", lowerVoltage, lowerTierName)); - tooltip.add(I18n.format("gregtech.universal.tooltip.amperage_in", lowerAmperage)); - tooltip.add(I18n.format("gregtech.universal.tooltip.amperage_out", higherAmperage)); - tooltip.add(I18n.format("gregtech.machine.transformer.tooltip_transform_up")); - tooltip.add(I18n.format("gregtech.universal.tooltip.voltage_in", lowerVoltage, lowerTierName)); - tooltip.add(I18n.format("gregtech.universal.tooltip.voltage_out", higherVoltage, higherTierName)); - tooltip.add(I18n.format("gregtech.universal.tooltip.amperage_in", higherAmperage)); - tooltip.add(I18n.format("gregtech.universal.tooltip.amperage_out", lowerAmperage)); + tooltip.add(I18n.format("gregtech.machine.transformer.tooltip_transform_down", lowerAmperage, higherVoltage, higherTierName, higherAmperage, lowerVoltage, lowerTierName)); + tooltip.add(I18n.format("gregtech.machine.transformer.tooltip_transform_up", higherAmperage, lowerVoltage, lowerTierName, lowerAmperage, higherVoltage, higherTierName)); } } diff --git a/src/main/java/gregtech/common/metatileentities/electric/multiblockpart/MetaTileEntityAdjustableEnergyHatch.java b/src/main/java/gregtech/common/metatileentities/electric/multiblockpart/MetaTileEntityAdjustableEnergyHatch.java new file mode 100644 index 00000000000..d70f7d75be1 --- /dev/null +++ b/src/main/java/gregtech/common/metatileentities/electric/multiblockpart/MetaTileEntityAdjustableEnergyHatch.java @@ -0,0 +1,188 @@ +package gregtech.common.metatileentities.electric.multiblockpart; + +import codechicken.lib.raytracer.CuboidRayTraceResult; +import codechicken.lib.render.CCRenderState; +import codechicken.lib.render.pipeline.IVertexOperation; +import codechicken.lib.vec.Matrix4; +import gregtech.api.GTValues; +import gregtech.api.capability.IEnergyContainer; +import gregtech.api.capability.impl.EnergyContainerHandler; +import gregtech.api.gui.ModularUI; +import gregtech.api.metatileentity.MetaTileEntity; +import gregtech.api.metatileentity.MetaTileEntityHolder; +import gregtech.api.metatileentity.multiblock.IMultiblockAbilityPart; +import gregtech.api.metatileentity.multiblock.MultiblockAbility; +import gregtech.api.render.SimpleOverlayRenderer; +import gregtech.api.render.Textures; +import gregtech.api.util.PipelineUtil; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.PacketBuffer; +import net.minecraft.util.EnumFacing; +import net.minecraft.util.EnumHand; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.text.TextComponentTranslation; +import net.minecraft.world.World; + +import javax.annotation.Nullable; +import java.util.List; + +public class MetaTileEntityAdjustableEnergyHatch extends MetaTileEntityMultiblockPart implements IMultiblockAbilityPart { + + private static final int[] ampRange = {2, 4, 8, 16}; + private int ampIndex; + + private final boolean isExportHatch; + private IEnergyContainer energyContainer; + + public MetaTileEntityAdjustableEnergyHatch(ResourceLocation metaTileEntityId, int tier, boolean isExportHatch) { + super(metaTileEntityId, tier); + this.isExportHatch = isExportHatch; + this.ampIndex = 1; + if (isExportHatch) { + this.energyContainer = EnergyContainerHandler.emitterContainer(this, GTValues.V[tier] * 32L, GTValues.V[tier], 2); + ((EnergyContainerHandler) this.energyContainer).setSideOutputCondition(s -> s == getFrontFacing()); + } else { + this.energyContainer = EnergyContainerHandler.receiverContainer(this, GTValues.V[tier] * 32L, GTValues.V[tier], 2); + } + } + + @Override + public MetaTileEntity createMetaTileEntity(MetaTileEntityHolder holder) { + return new MetaTileEntityAdjustableEnergyHatch(metaTileEntityId, getTier(), isExportHatch); + } + + @Override + public void renderMetaTileEntity(CCRenderState renderState, Matrix4 translation, IVertexOperation[] pipeline) { + super.renderMetaTileEntity(renderState, translation, pipeline); + if (shouldRenderOverlay()) { + SimpleOverlayRenderer renderer; + switch (ampIndex) { + case 1: + renderer = isExportHatch ? Textures.ENERGY_OUT_MULTI : Textures.ENERGY_IN_MULTI; + break; + + case 2: + renderer = isExportHatch ? Textures.ENERGY_OUT_HI : Textures.ENERGY_IN_HI; + break; + case 3: + renderer = isExportHatch ? Textures.ENERGY_OUT_ULTRA : Textures.ENERGY_IN_ULTRA; + break; + default: + renderer = isExportHatch ? Textures.ENERGY_OUT : Textures.ENERGY_IN; + } + + renderer.renderSided(getFrontFacing(), renderState, translation, PipelineUtil.color(pipeline, GTValues.VC[getTier()])); + } + } + + @Override + public NBTTagCompound writeToNBT(NBTTagCompound data) { + super.writeToNBT(data); + data.setInteger("ampIndex", ampIndex); + return data; + } + + @Override + public void readFromNBT(NBTTagCompound data) { + super.readFromNBT(data); + this.ampIndex = data.getInteger("ampIndex"); + reinitializeEnergyContainer(); + } + + @Override + public void writeInitialSyncData(PacketBuffer buf) { + super.writeInitialSyncData(buf); + buf.writeInt(ampIndex); + } + + @Override + public void receiveInitialSyncData(PacketBuffer buf) { + super.receiveInitialSyncData(buf); + this.ampIndex = buf.readInt(); + } + + @Override + public void receiveCustomData(int dataId, PacketBuffer buf) { + super.receiveCustomData(dataId, buf); + if (dataId == 101) { + this.ampIndex = buf.readInt(); + scheduleRenderUpdate(); + } + } + + protected void incrementAmpIndex() { + this.ampIndex = (this.ampIndex + 1) % ampRange.length; + if (!getWorld().isRemote) { + reinitializeEnergyContainer(); + writeCustomData(101, b -> b.writeInt(ampIndex)); + getHolder().notifyBlockUpdate(); + markDirty(); + } + } + + protected void reinitializeEnergyContainer() { + long tierVoltage = GTValues.V[getTier()]; + if (isExportHatch) { + this.energyContainer = EnergyContainerHandler.emitterContainer(this, tierVoltage * 32L, tierVoltage, ampRange[ampIndex]); + ((EnergyContainerHandler) this.energyContainer).setSideOutputCondition(s -> s == getFrontFacing()); + } else { + this.energyContainer = EnergyContainerHandler.receiverContainer(this, tierVoltage * 32L, tierVoltage, ampRange[ampIndex]); + } + } + + @Override + public boolean onScrewdriverClick(EntityPlayer playerIn, EnumHand hand, EnumFacing facing, CuboidRayTraceResult hitResult) { + if (getWorld().isRemote) { + scheduleRenderUpdate(); + return true; + } + + incrementAmpIndex(); + playerIn.sendMessage(new TextComponentTranslation("gregtech.machine.energy_hatch_adjustable.message_adjust", + isExportHatch ? energyContainer.getOutputAmperage() : energyContainer.getInputAmperage())); + + return true; + } + + @Override + public MultiblockAbility getAbility() { + return isExportHatch ? MultiblockAbility.OUTPUT_ENERGY : MultiblockAbility.INPUT_ENERGY; + } + + @Override + public void registerAbilities(List abilityList) { + abilityList.add(energyContainer); + } + + @Override + protected boolean openGUIOnRightClick() { + return false; + } + + @Override + protected ModularUI createUI(EntityPlayer entityPlayer) { + return null; + } + + @Override + public void addInformation(ItemStack stack, @Nullable World player, List tooltip, boolean advanced) { + String tierName = GTValues.VN[getTier()]; + + tooltip.add(I18n.format("gregtech.machine.transformer_adjustable.tooltip_tool_usage")); + + if (isExportHatch) { + tooltip.add(I18n.format("gregtech.machine.energy_hatch.adjustable.output.tooltip")); + tooltip.add(I18n.format("gregtech.universal.tooltip.voltage_out", energyContainer.getOutputVoltage(), tierName)); + tooltip.add(I18n.format("gregtech.universal.tooltip.amperage_out_till", energyContainer.getOutputAmperage())); + } else { + tooltip.add(I18n.format("gregtech.machine.energy_hatch.adjustable.input.tooltip")); + tooltip.add(I18n.format("gregtech.universal.tooltip.voltage_in", energyContainer.getInputVoltage(), tierName)); + tooltip.add(I18n.format("gregtech.universal.tooltip.amperage_in_till", energyContainer.getInputAmperage())); + } + tooltip.add(I18n.format("gregtech.universal.tooltip.energy_storage_capacity", energyContainer.getEnergyCapacity())); + tooltip.add(I18n.format("gregtech.universal.enabled")); + } +} diff --git a/src/main/resources/assets/gregtech/lang/en_us.lang b/src/main/resources/assets/gregtech/lang/en_us.lang index 0a1c10f150c..b84ec194fb7 100644 --- a/src/main/resources/assets/gregtech/lang/en_us.lang +++ b/src/main/resources/assets/gregtech/lang/en_us.lang @@ -2980,11 +2980,14 @@ gregtech.machine.battery_buffer.max.16.name=MAX Voltage Battery Buffer # Transformers gregtech.machine.transformer.tooltip_tool_usage=Use Soft Hammer to invert (Starts as Transform Down) -gregtech.machine.transformer.tooltip_transform_down=Transform Down: +gregtech.machine.transformer.tooltip_transform_down=Transform Down: §a%dA %dV (%d)§7 -> §a%dA %dV (%d) gregtech.machine.transformer.message_transform_down=Transforming Down, In: %dV %dA, Out: %dV %dA -gregtech.machine.transformer.tooltip_transform_up=Transform Up: +gregtech.machine.transformer.tooltip_transform_up=Transform Up: §a%dA %dV (%d)§7 -> §a%dA %dV (%d) gregtech.machine.transformer.message_transform_up=Transforming Up, In: %dV %dA, Out: %dV %dA +gregtech.machine.transformer_adjustable.tooltip_tool_usage=Use Screwdriver to cycle amperage (Starts as 4 Amps) +gregtech.machine.transformer_adjustable.message_adjust=Adjusted Hi-Amp to %dV %dA, Lo-Amp to %dV %dA + gregtech.machine.transformer.ulv.name=Ultra Low Voltage Transformer gregtech.machine.transformer.lv.name=Low Voltage Transformer gregtech.machine.transformer.mv.name=Medium Voltage Transformer @@ -3000,6 +3003,21 @@ gregtech.machine.transformer.uiv.name=UIV Voltage Transformer gregtech.machine.transformer.umv.name=UMV Voltage Transformer gregtech.machine.transformer.uxv.name=UXV Voltage Transformer +gregtech.machine.transformer.adjustable.ulv.name=Ultra Low Voltage Adjustable Transformer +gregtech.machine.transformer.adjustable.lv.name=Low Voltage Adjustable Transformer +gregtech.machine.transformer.adjustable.mv.name=Medium Voltage Adjustable Transformer +gregtech.machine.transformer.adjustable.hv.name=High Voltage Adjustable Transformer +gregtech.machine.transformer.adjustable.ev.name=Extreme Voltage Adjustable Transformer +gregtech.machine.transformer.adjustable.iv.name=Insane Voltage Adjustable Transformer +gregtech.machine.transformer.adjustable.luv.name=Ludicrous Voltage Adjustable Transformer +gregtech.machine.transformer.adjustable.zpm.name=ZPM Voltage Adjustable Transformer +gregtech.machine.transformer.adjustable.uv.name=Ultimate Voltage Adjustable Transformer +gregtech.machine.transformer.adjustable.uhv.name=UHV Voltage Adjustable Transformer +gregtech.machine.transformer.adjustable.uev.name=UEV Voltage Adjustable Transformer +gregtech.machine.transformer.adjustable.uiv.name=UIV Voltage Adjustable Transformer +gregtech.machine.transformer.adjustable.umv.name=UMV Voltage Adjustable Transformer +gregtech.machine.transformer.adjustable.uxv.name=UXV Voltage Adjustable Transformer + # Chargers gregtech.machine.charger.ulv.name=Ultra Low Voltage Battery Charger gregtech.machine.charger.lv.name=Low Voltage Battery Charger @@ -3428,6 +3446,24 @@ gregtech.machine.energy_hatch.input.umv.name=UMV Energy Hatch gregtech.machine.energy_hatch.input.uxv.name=UXV Energy Hatch gregtech.machine.energy_hatch.input.max.name=MAX Energy Hatch +gregtech.machine.energy_hatch.adjustable.input.tooltip=Adjustable Ampere Energy Input for Multiblocks + +gregtech.machine.energy_hatch.adjustable.input.ulv.name=ULV Adjustable Energy Hatch +gregtech.machine.energy_hatch.adjustable.input.lv.name=LV Adjustable Energy Hatch +gregtech.machine.energy_hatch.adjustable.input.mv.name=MV Adjustable Energy Hatch +gregtech.machine.energy_hatch.adjustable.input.hv.name=HV Adjustable Energy Hatch +gregtech.machine.energy_hatch.adjustable.input.ev.name=EV Adjustable Energy Hatch +gregtech.machine.energy_hatch.adjustable.input.iv.name=IV Adjustable Energy Hatch +gregtech.machine.energy_hatch.adjustable.input.luv.name=LuV Adjustable Energy Hatch +gregtech.machine.energy_hatch.adjustable.input.zpm.name=ZPM Adjustable Energy Hatch +gregtech.machine.energy_hatch.adjustable.input.uv.name=UV Adjustable Energy Hatch +gregtech.machine.energy_hatch.adjustable.input.uhv.name=UHV Adjustable Energy Hatch +gregtech.machine.energy_hatch.adjustable.input.uev.name=UEV Adjustable Energy Hatch +gregtech.machine.energy_hatch.adjustable.input.uiv.name=UIV Adjustable Energy Hatch +gregtech.machine.energy_hatch.adjustable.input.umv.name=UMV Adjustable Energy Hatch +gregtech.machine.energy_hatch.adjustable.input.uxv.name=UXV Adjustable Energy Hatch +gregtech.machine.energy_hatch.adjustable.input.max.name=MAX Adjustable Energy Hatch + gregtech.machine.energy_hatch.output.tooltip=Energy Output for Multiblocks gregtech.machine.energy_hatch.output.ulv.name=ULV Dynamo Hatch @@ -3446,6 +3482,26 @@ gregtech.machine.energy_hatch.output.umv.name=UMV Dynamo Hatch gregtech.machine.energy_hatch.output.uxv.name=UXV Dynamo Hatch gregtech.machine.energy_hatch.output.max.name=MAX Dynamo Hatch +gregtech.machine.energy_hatch.adjustable.output.tooltip=Adjustable Ampere Energy Output for Multiblocks + +gregtech.machine.energy_hatch.adjustable.output.ulv.name=ULV Adjustable Dynamo Hatch +gregtech.machine.energy_hatch.adjustable.output.lv.name=LV Adjustable Dynamo Hatch +gregtech.machine.energy_hatch.adjustable.output.mv.name=MV Adjustable Dynamo Hatch +gregtech.machine.energy_hatch.adjustable.output.hv.name=HV Adjustable Dynamo Hatch +gregtech.machine.energy_hatch.adjustable.output.ev.name=EV Adjustable Dynamo Hatch +gregtech.machine.energy_hatch.adjustable.output.iv.name=IV Adjustable Dynamo Hatch +gregtech.machine.energy_hatch.adjustable.output.luv.name=LuV Adjustable Dynamo Hatch +gregtech.machine.energy_hatch.adjustable.output.zpm.name=ZPM Adjustable Dynamo Hatch +gregtech.machine.energy_hatch.adjustable.output.uv.name=UV Adjustable Dynamo Hatch +gregtech.machine.energy_hatch.adjustable.output.uhv.name=UHV Adjustable Dynamo Hatch +gregtech.machine.energy_hatch.adjustable.output.uev.name=UEV Adjustable Dynamo Hatch +gregtech.machine.energy_hatch.adjustable.output.uiv.name=UIV Adjustable Dynamo Hatch +gregtech.machine.energy_hatch.adjustable.output.umv.name=UMV Adjustable Dynamo Hatch +gregtech.machine.energy_hatch.adjustable.output.uxv.name=UXV Adjustable Dynamo Hatch +gregtech.machine.energy_hatch.adjustable.output.max.name=MAX Adjustable Dynamo Hatch + +gregtech.machine.energy_hatch_adjustable.message_adjust=Adjusted Amperage to %dA + gregtech.machine.rotor_holder.tooltip1=Rotor Holder for Multiblocks gregtech.machine.rotor_holder.tooltip2=Holds Rotor in place so it will not fly away diff --git a/src/main/resources/assets/gregtech/textures/blocks/overlay/machine/overlay_energy_in_hi.png b/src/main/resources/assets/gregtech/textures/blocks/overlay/machine/overlay_energy_in_hi.png new file mode 100644 index 00000000000..02393fe829a Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/overlay/machine/overlay_energy_in_hi.png differ diff --git a/src/main/resources/assets/gregtech/textures/blocks/overlay/machine/overlay_energy_in_ultra.png b/src/main/resources/assets/gregtech/textures/blocks/overlay/machine/overlay_energy_in_ultra.png new file mode 100644 index 00000000000..56b02d1914e Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/overlay/machine/overlay_energy_in_ultra.png differ diff --git a/src/main/resources/assets/gregtech/textures/blocks/overlay/machine/overlay_energy_out_hi.png b/src/main/resources/assets/gregtech/textures/blocks/overlay/machine/overlay_energy_out_hi.png new file mode 100644 index 00000000000..399b32696d3 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/overlay/machine/overlay_energy_out_hi.png differ diff --git a/src/main/resources/assets/gregtech/textures/blocks/overlay/machine/overlay_energy_out_ultra.png b/src/main/resources/assets/gregtech/textures/blocks/overlay/machine/overlay_energy_out_ultra.png new file mode 100644 index 00000000000..6989d706e74 Binary files /dev/null and b/src/main/resources/assets/gregtech/textures/blocks/overlay/machine/overlay_energy_out_ultra.png differ