diff --git a/src/main/java/gregtech/api/capability/impl/EnergyContainerBatteryBuffer.java b/src/main/java/gregtech/api/capability/impl/EnergyContainerBatteryBuffer.java index 9d8e17215f4..4a7c28a5fd0 100644 --- a/src/main/java/gregtech/api/capability/impl/EnergyContainerBatteryBuffer.java +++ b/src/main/java/gregtech/api/capability/impl/EnergyContainerBatteryBuffer.java @@ -1,218 +1,187 @@ package gregtech.api.capability.impl; -import gnu.trove.list.TIntList; -import gnu.trove.list.array.TIntArrayList; +import java.util.List; +import java.util.ArrayList; import gregtech.api.GTValues; import gregtech.api.capability.GregtechCapabilities; import gregtech.api.capability.IElectricItem; import gregtech.api.capability.IEnergyContainer; -import gregtech.api.capability.impl.EnergyContainerHandler.IEnergyChangeListener; -import gregtech.api.metatileentity.MTETrait; import gregtech.api.metatileentity.MetaTileEntity; import gregtech.api.util.GTUtility; import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumFacing; -import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.items.IItemHandlerModifiable; -import java.util.BitSet; +public class EnergyContainerBatteryBuffer extends EnergyContainerHandler { -public class EnergyContainerBatteryBuffer extends MTETrait implements IEnergyContainer { - - private final BitSet batterySlotsUsedThisTick = new BitSet(); private final int tier; - private long amps = 0; - private long lastEnergyInputPerSec = 0; - private long lastEnergyOutputPerSec = 0; - private long energyInputPerSec = 0; - private long energyOutputPerSec = 0; - - public EnergyContainerBatteryBuffer(MetaTileEntity metaTileEntity, int tier) { - super(metaTileEntity); + + public EnergyContainerBatteryBuffer(MetaTileEntity metaTileEntity, int tier, int inventorySize) { + super(metaTileEntity, GTValues.V[tier] * inventorySize * 32L, GTValues.V[tier], inventorySize * 2L, GTValues.V[tier], inventorySize); this.tier = tier; } @Override public long acceptEnergyFromNetwork(EnumFacing side, long voltage, long amperage) { - long usedAmps = 0; - amperage -= amps; - if(amperage <= 0) + if (amperage <= 0 || voltage <= 0) + return 0; + + List batteries = getNonFullBatteries(); + long maxAmps = batteries.size() * 2L - amps; + long usedAmps = Math.min(maxAmps, amperage); + if (maxAmps <= 0) return 0; + if (side == null || inputsEnergy(side)) { if (voltage > getInputVoltage()) { GTUtility.doOvervoltageExplosion(metaTileEntity, voltage); - return Math.min(amperage, getInputAmperage() - amps); - } - IItemHandlerModifiable inventory = getInventory(); - for (int i = 0; i < inventory.getSlots(); i++) { - if (batterySlotsUsedThisTick.get(i)) continue; - ItemStack batteryStack = inventory.getStackInSlot(i); - IElectricItem electricItem = getBatteryContainer(batteryStack); - if (electricItem == null) continue; - if (chargeItemWithVoltage(electricItem, voltage, getTier(), true)) { - chargeItemWithVoltage(electricItem, voltage, getTier(), false); - inventory.setStackInSlot(i, batteryStack); - this.batterySlotsUsedThisTick.set(i); - if(++usedAmps == amperage) break; - } + return usedAmps; } - } - if (usedAmps > 0L) { - notifyEnergyListener(false); - } - amps += usedAmps; - energyInputPerSec += voltage * usedAmps; - return usedAmps; - } - @Override - public long getInputPerSec() { - return lastEnergyInputPerSec; - } + //Prioritizes as many packets as available from the buffer + long internalAmps = Math.min(maxAmps, Math.max(0, getInternalStorage() / voltage)); - @Override - public long getOutputPerSec() { - return lastEnergyOutputPerSec; - } + usedAmps = Math.min(usedAmps, maxAmps - internalAmps); + amps += usedAmps; + energyInputPerSec += usedAmps * voltage; - private static boolean chargeItemWithVoltage(IElectricItem electricItem, long voltage, int tier, boolean simulate) { - long charged = electricItem.charge(voltage, tier, false, simulate); - return charged > 0; - } + long energy = (usedAmps + internalAmps) * voltage; + long distributed = energy / batteries.size(); + + for (IElectricItem electricItem : batteries) { + energy -= electricItem.charge(Math.min(distributed, GTValues.V[electricItem.getTier()] * 2L), getTier(), true, false); + } - private static long chargeItem(IElectricItem electricItem, long amount, int tier, boolean discharge) { - if (!discharge) { - return electricItem.charge(amount, tier, false, false); - } else { - return electricItem.discharge(amount, tier, true, true, false); + //Remove energy used and then transfer overflow energy into the internal buffer + setEnergyStored(getInternalStorage() - internalAmps * voltage + energy); + return usedAmps; } + return 0; } @Override public void update() { amps = 0; - if (!metaTileEntity.getWorld().isRemote) { - if (metaTileEntity.getOffsetTimer() % 20 == 0) { - lastEnergyInputPerSec = energyInputPerSec; - lastEnergyOutputPerSec = energyOutputPerSec; - energyInputPerSec = 0; - energyOutputPerSec = 0; - } - this.batterySlotsUsedThisTick.clear(); - EnumFacing outFacing = metaTileEntity.getFrontFacing(); - TileEntity tileEntity = metaTileEntity.getWorld().getTileEntity(metaTileEntity.getPos().offset(outFacing)); - if (tileEntity == null) { - return; - } - IEnergyContainer energyContainer = tileEntity.getCapability(GregtechCapabilities.CAPABILITY_ENERGY_CONTAINER, outFacing.getOpposite()); - if (energyContainer == null) { - return; - } + if (metaTileEntity.getWorld().isRemote) { + return; + } + if (metaTileEntity.getOffsetTimer() % 20 == 0) { + lastEnergyInputPerSec = energyInputPerSec; + lastEnergyOutputPerSec = energyOutputPerSec; + energyInputPerSec = 0; + energyOutputPerSec = 0; + } + + EnumFacing outFacing = metaTileEntity.getFrontFacing(); + TileEntity tileEntity = metaTileEntity.getWorld().getTileEntity(metaTileEntity.getPos().offset(outFacing)); + if (tileEntity == null) { + return; + } + IEnergyContainer energyContainer = tileEntity.getCapability(GregtechCapabilities.CAPABILITY_ENERGY_CONTAINER, outFacing.getOpposite()); + if (energyContainer == null) { + return; + } - IItemHandlerModifiable inventory = getInventory(); - long voltage = getOutputVoltage(); - long maxAmperage = 0L; - TIntList slotsList = new TIntArrayList(); - for (int i = 0; i < inventory.getSlots(); i++) { - ItemStack batteryStack = inventory.getStackInSlot(i); - IElectricItem electricItem = getBatteryContainer(batteryStack); - if (electricItem == null) continue; - if (electricItem.discharge(voltage, getTier(), true, true, true) == voltage) { - slotsList.add(i); - maxAmperage++; - } + long voltage = getOutputVoltage(); + List batteries = getNonEmptyBatteries(); + if (batteries.size() > 0) { + //Prioritize as many packets as available of energy created + long internalAmps = Math.abs(Math.min(0, getInternalStorage() / voltage)); + long genAmps = Math.max(0, batteries.size() - internalAmps); + long outAmps = 0L; + + if (genAmps > 0) { + outAmps = energyContainer.acceptEnergyFromNetwork(outFacing.getOpposite(), voltage, genAmps); + if (outAmps == 0 && internalAmps == 0) + return; + energyOutputPerSec += outAmps * voltage; } - if (maxAmperage == 0) return; - long amperageUsed = energyContainer.acceptEnergyFromNetwork(outFacing.getOpposite(), voltage, maxAmperage); - if (amperageUsed == 0) return; - energyOutputPerSec += amperageUsed * voltage; - for (int i : slotsList.toArray()) { - ItemStack batteryStack = inventory.getStackInSlot(i); - IElectricItem electricItem = getBatteryContainer(batteryStack); - if (electricItem == null) continue; - electricItem.discharge(voltage, getTier(), true, true, false); - inventory.setStackInSlot(i, batteryStack); - if (--amperageUsed == 0) break; + + long energy = (outAmps + internalAmps) * voltage; + long distributed = energy / batteries.size(); + + for (IElectricItem electricItem : batteries) { + energy -= electricItem.discharge(distributed, getTier(), false, true, false); } - notifyEnergyListener(false); + + //Subtract energy created out of thin air from the buffer + setEnergyStored(getInternalStorage() + internalAmps * voltage - energy); } } - @Override - public long getEnergyCapacity() { - long energyCapacity = 0L; + private long getInternalStorage() { + return energyStored; + } + + private List getNonFullBatteries() { IItemHandlerModifiable inventory = getInventory(); + List batteries = new ArrayList<>(); for (int i = 0; i < inventory.getSlots(); i++) { ItemStack batteryStack = inventory.getStackInSlot(i); IElectricItem electricItem = getBatteryContainer(batteryStack); if (electricItem == null) continue; - energyCapacity += electricItem.getMaxCharge(); + if (electricItem.getCharge() < electricItem.getMaxCharge()) { + batteries.add(electricItem); + } } - return energyCapacity; + return batteries; } - @Override - public long getEnergyStored() { - long energyStored = 0L; + private List getNonEmptyBatteries() { IItemHandlerModifiable inventory = getInventory(); + List batteries = new ArrayList<>(); for (int i = 0; i < inventory.getSlots(); i++) { ItemStack batteryStack = inventory.getStackInSlot(i); IElectricItem electricItem = getBatteryContainer(batteryStack); if (electricItem == null) continue; - energyStored += electricItem.getCharge(); + if (electricItem.canProvideChargeExternally() && electricItem.getCharge() > 0) { + batteries.add(electricItem); + } } - return energyStored; + return batteries; } @Override - public long getInputAmperage() { - long inputAmperage = 0L; + public long getEnergyCapacity() { + long energyCapacity = 0L; IItemHandlerModifiable inventory = getInventory(); for (int i = 0; i < inventory.getSlots(); i++) { ItemStack batteryStack = inventory.getStackInSlot(i); IElectricItem electricItem = getBatteryContainer(batteryStack); if (electricItem == null) continue; - inputAmperage++; + energyCapacity += electricItem.getMaxCharge(); } - return inputAmperage; - } - - public IElectricItem getBatteryContainer(ItemStack itemStack) { - IElectricItem electricItem = itemStack.getCapability(GregtechCapabilities.CAPABILITY_ELECTRIC_ITEM, null); - if (electricItem != null && getTier() >= electricItem.getTier() && - electricItem.canProvideChargeExternally()) - return electricItem; - return null; + return energyCapacity; } @Override - public long changeEnergy(long energyToAdd) { - boolean isDischarge = energyToAdd < 0L; - energyToAdd = Math.abs(energyToAdd); - long initialEnergyToAdd = energyToAdd; + public long getEnergyStored() { + long energyStored = 0L; IItemHandlerModifiable inventory = getInventory(); for (int i = 0; i < inventory.getSlots(); i++) { ItemStack batteryStack = inventory.getStackInSlot(i); IElectricItem electricItem = getBatteryContainer(batteryStack); if (electricItem == null) continue; - long charged = chargeItem(electricItem, energyToAdd, getTier(), isDischarge); - energyToAdd -= charged; - if (energyToAdd == 0L) break; + energyStored += electricItem.getCharge(); } - long energyAdded = initialEnergyToAdd - energyToAdd; - if (energyAdded > 0L) { + return energyStored; + } + + @Override + public void setEnergyStored(long energyStored) { + this.energyStored = energyStored; + if (!metaTileEntity.getWorld().isRemote) { + metaTileEntity.markDirty(); notifyEnergyListener(false); } - energyInputPerSec += energyAdded; - return energyAdded; } - @Override - public void deserializeNBT(NBTTagCompound compound) { - super.deserializeNBT(compound); - notifyEnergyListener(true); + public IElectricItem getBatteryContainer(ItemStack itemStack) { + IElectricItem electricItem = itemStack.getCapability(GregtechCapabilities.CAPABILITY_ELECTRIC_ITEM, null); + if (electricItem != null && getTier() >= electricItem.getTier()) + return electricItem; + return null; } public void notifyEnergyListener(boolean isInitialChange) { @@ -221,21 +190,6 @@ public void notifyEnergyListener(boolean isInitialChange) { } } - @Override - public long getInputVoltage() { - return GTValues.V[getTier()]; - } - - @Override - public long getOutputVoltage() { - return getInputVoltage(); - } - - @Override - public long getOutputAmperage() { - return getInputAmperage(); - } - @Override public boolean inputsEnergy(EnumFacing side) { return getMetaTileEntity().getFrontFacing() != side; @@ -251,19 +205,6 @@ public String getName() { return "BatteryEnergyContainer"; } - @Override - public int getNetworkID() { - return TraitNetworkIds.TRAIT_ID_ENERGY_CONTAINER; - } - - @Override - public T getCapability(Capability capability) { - if (capability == GregtechCapabilities.CAPABILITY_ENERGY_CONTAINER) { - return GregtechCapabilities.CAPABILITY_ENERGY_CONTAINER.cast(this); - } - return null; - } - protected IItemHandlerModifiable getInventory() { return metaTileEntity.getImportItems(); } diff --git a/src/main/java/gregtech/api/capability/impl/EnergyContainerBatteryCharger.java b/src/main/java/gregtech/api/capability/impl/EnergyContainerBatteryCharger.java new file mode 100644 index 00000000000..02ba773b22d --- /dev/null +++ b/src/main/java/gregtech/api/capability/impl/EnergyContainerBatteryCharger.java @@ -0,0 +1,147 @@ +package gregtech.api.capability.impl; + +import gregtech.api.GTValues; +import gregtech.api.capability.GregtechCapabilities; +import gregtech.api.capability.IElectricItem; +import gregtech.api.metatileentity.MetaTileEntity; +import gregtech.api.util.GTUtility; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumFacing; +import net.minecraftforge.items.IItemHandlerModifiable; + +import java.util.ArrayList; +import java.util.List; + +public class EnergyContainerBatteryCharger extends EnergyContainerHandler { + + private final int tier; + + public EnergyContainerBatteryCharger(MetaTileEntity metaTileEntity, int tier, int inventorySize) { + super(metaTileEntity, GTValues.V[tier] * 128L, GTValues.V[tier], inventorySize * 4L, 0L, 0L); + this. tier = tier; + } + + @Override + public long acceptEnergyFromNetwork(EnumFacing side, long voltage, long amperage) { + if (amperage <= 0 || voltage <= 0) + return 0; + + List batteries = getNonFullBatteries(); + long maxAmps = batteries.size() * 4L - amps; + long usedAmps = Math.min(maxAmps, amperage); + if (maxAmps <= 0) + return 0; + + if (side == null || inputsEnergy(side)) { + if (voltage > getInputVoltage()) { + GTUtility.doOvervoltageExplosion(metaTileEntity, voltage); + return usedAmps; + } + + //Prioritizes as many packets as available from the buffer + long internalAmps = Math.min(maxAmps, Math.max(0, getInternalStorage() / voltage)); + + usedAmps = Math.min(usedAmps, maxAmps - internalAmps); + amps += usedAmps; + energyInputPerSec += usedAmps * voltage; + + long energy = (usedAmps + internalAmps) * voltage; + long distributed = energy / batteries.size(); + + for (IElectricItem electricItem : batteries) { + energy -= electricItem.charge(Math.min(distributed, GTValues.V[electricItem.getTier()] * 4L), getTier(), true, false); + } + + //Remove energy used and then transfer overflow energy into the internal buffer + setEnergyStored(getInternalStorage() - internalAmps * voltage + energy); + return usedAmps; + } + return 0; + } + + @Override + public void update() { + amps = 0; + if (metaTileEntity.getWorld().isRemote) { + return; + } + if (metaTileEntity.getOffsetTimer() % 20 == 0) { + lastEnergyInputPerSec = energyInputPerSec; + energyInputPerSec = 0; + } + } + + private long getInternalStorage() { + return energyStored; + } + + private List getNonFullBatteries() { + IItemHandlerModifiable inventory = getInventory(); + List batteries = new ArrayList<>(); + for (int i = 0; i < inventory.getSlots(); i++) { + ItemStack batteryStack = inventory.getStackInSlot(i); + IElectricItem electricItem = getBatteryContainer(batteryStack); + if (electricItem == null) continue; + if (electricItem.getCharge() < electricItem.getMaxCharge()) { + batteries.add(electricItem); + } + } + return batteries; + } + + @Override + public long getEnergyCapacity() { + long energyCapacity = 0L; + IItemHandlerModifiable inventory = getInventory(); + for (int i = 0; i < inventory.getSlots(); i++) { + ItemStack batteryStack = inventory.getStackInSlot(i); + IElectricItem electricItem = getBatteryContainer(batteryStack); + if (electricItem == null) continue; + energyCapacity += electricItem.getMaxCharge(); + } + return energyCapacity; + } + + @Override + public long getEnergyStored() { + long energyStored = 0L; + IItemHandlerModifiable inventory = getInventory(); + for (int i = 0; i < inventory.getSlots(); i++) { + ItemStack batteryStack = inventory.getStackInSlot(i); + IElectricItem electricItem = getBatteryContainer(batteryStack); + if (electricItem == null) continue; + energyStored += electricItem.getCharge(); + } + return energyStored; + } + + @Override + public void setEnergyStored(long energyStored) { + this.energyStored = energyStored; + if (!metaTileEntity.getWorld().isRemote) { + metaTileEntity.markDirty(); + notifyEnergyListener(false); + } + } + + public IElectricItem getBatteryContainer(ItemStack itemStack) { + IElectricItem electricItem = itemStack.getCapability(GregtechCapabilities.CAPABILITY_ELECTRIC_ITEM, null); + if (electricItem != null && getTier() >= electricItem.getTier()) + return electricItem; + return null; + } + + public void notifyEnergyListener(boolean isInitialChange) { + if (metaTileEntity instanceof IEnergyChangeListener) { + ((IEnergyChangeListener) metaTileEntity).onEnergyChanged(this, isInitialChange); + } + } + + protected IItemHandlerModifiable getInventory() { + return metaTileEntity.getImportItems(); + } + + protected int getTier() { + return tier; + } +} diff --git a/src/main/java/gregtech/api/capability/impl/EnergyContainerHandler.java b/src/main/java/gregtech/api/capability/impl/EnergyContainerHandler.java index 8c959067602..572548047fa 100644 --- a/src/main/java/gregtech/api/capability/impl/EnergyContainerHandler.java +++ b/src/main/java/gregtech/api/capability/impl/EnergyContainerHandler.java @@ -17,8 +17,8 @@ public class EnergyContainerHandler extends MTETrait implements IEnergyContainer { - private final long maxCapacity; - private long energyStored; + protected final long maxCapacity; + protected long energyStored; private final long maxInputVoltage; private final long maxInputAmperage; @@ -26,15 +26,15 @@ public class EnergyContainerHandler extends MTETrait implements IEnergyContainer private final long maxOutputVoltage; private final long maxOutputAmperage; - private long lastEnergyInputPerSec = 0; - private long lastEnergyOutputPerSec = 0; - private long energyInputPerSec = 0; - private long energyOutputPerSec = 0; + protected long lastEnergyInputPerSec = 0; + protected long lastEnergyOutputPerSec = 0; + protected long energyInputPerSec = 0; + protected long energyOutputPerSec = 0; private Predicate sideInputCondition; private Predicate sideOutputCondition; - private long amps = 0; + protected long amps = 0; public EnergyContainerHandler(MetaTileEntity tileEntity, long maxCapacity, long maxInputVoltage, long maxInputAmperage, long maxOutputVoltage, long maxOutputAmperage) { super(tileEntity); diff --git a/src/main/java/gregtech/api/recipes/ModHandler.java b/src/main/java/gregtech/api/recipes/ModHandler.java index 933ae7c67b0..3f964bdb5c0 100644 --- a/src/main/java/gregtech/api/recipes/ModHandler.java +++ b/src/main/java/gregtech/api/recipes/ModHandler.java @@ -5,6 +5,7 @@ import gregtech.api.items.metaitem.MetaItem; import gregtech.api.recipes.recipes.DummyRecipe; import gregtech.api.unification.OreDictUnifier; +import gregtech.api.unification.material.MarkerMaterial; import gregtech.api.unification.material.Material; import gregtech.api.unification.material.Materials; import gregtech.api.unification.ore.OrePrefix; @@ -427,13 +428,15 @@ public static ItemMaterialInfo getRecyclingIngredients(Object... recipe) { // First try to get ItemMaterialInfo ItemMaterialInfo info = OreDictUnifier.getMaterialInfo(stack); if (info != null) { - for (MaterialStack ms : info.getMaterials()) func.accept(ms, lastChar); + for (MaterialStack ms : info.getMaterials()) { + if (!(ms.material instanceof MarkerMaterial)) func.accept(ms, lastChar); + } continue; } // Then try to get a single Material (UnificationEntry needs this, for example) MaterialStack materialStack = OreDictUnifier.getMaterial(stack); - if (materialStack != null) func.accept(materialStack, lastChar); + if (materialStack != null && !(materialStack.material instanceof MarkerMaterial)) func.accept(materialStack, lastChar); // Gather any secondary materials if this item has an OrePrefix OrePrefix prefix = OreDictUnifier.getPrefix(stack); diff --git a/src/main/java/gregtech/common/metatileentities/MetaTileEntities.java b/src/main/java/gregtech/common/metatileentities/MetaTileEntities.java index 482d8bbf92e..7b2c6fd5eee 100644 --- a/src/main/java/gregtech/common/metatileentities/MetaTileEntities.java +++ b/src/main/java/gregtech/common/metatileentities/MetaTileEntities.java @@ -10,11 +10,11 @@ import gregtech.api.metatileentity.multiblock.MultiblockControllerBase; import gregtech.api.recipes.RecipeMap; import gregtech.api.recipes.RecipeMaps; -import gregtech.client.renderer.ICubeRenderer; -import gregtech.client.renderer.texture.Textures; import gregtech.api.unification.material.Materials; import gregtech.api.util.GTLog; import gregtech.api.util.GTUtility; +import gregtech.client.renderer.ICubeRenderer; +import gregtech.client.renderer.texture.Textures; import gregtech.common.ConfigHolder; import gregtech.common.metatileentities.electric.*; import gregtech.common.metatileentities.electric.multiblockpart.*; @@ -34,16 +34,8 @@ import gregtech.common.metatileentities.steam.boiler.SteamSolarBoiler; import gregtech.common.metatileentities.steam.multiblockpart.MetaTileEntitySteamHatch; import gregtech.common.metatileentities.steam.multiblockpart.MetaTileEntitySteamItemBus; +import gregtech.common.metatileentities.storage.*; import gregtech.integration.jei.multiblock.MultiblockInfoCategory; -import gregtech.common.metatileentities.storage.MetaTileEntityBuffer; -import gregtech.common.metatileentities.storage.MetaTileEntityCrate; -import gregtech.common.metatileentities.storage.MetaTileEntityCreativeEnergy; -import gregtech.common.metatileentities.storage.MetaTileEntityDrum; -import gregtech.common.metatileentities.storage.MetaTileEntityLockedSafe; -import gregtech.common.metatileentities.storage.MetaTileEntityQuantumChest; -import gregtech.common.metatileentities.storage.MetaTileEntityQuantumTank; -import gregtech.common.metatileentities.storage.MetaTileEntityTank; -import gregtech.common.metatileentities.storage.MetaTileEntityWorkbench; import net.minecraft.util.ResourceLocation; import java.util.HashMap; @@ -546,9 +538,9 @@ public static void init() { DIODES[i] = registerMetaTileEntity(1300 + i, diode); } - // Battery Buffer, IDs 1315-1374 - endPos = GTValues.HT ? BATTERY_BUFFER.length - 1 : Math.min(BATTERY_BUFFER.length - 1, GTValues.UV + 2); - int[] batteryBufferSlots = new int[]{1, 4, 9, 16}; + // Battery Buffer, IDs 1315-1360 + endPos = GTValues.HT ? BATTERY_BUFFER.length - 1 : Math.min(BATTERY_BUFFER.length - 1, GTValues.UV + 1); + int[] batteryBufferSlots = new int[]{4, 8, 16}; for (int i = 0; i < endPos; i++) { BATTERY_BUFFER[i] = new MetaTileEntityBatteryBuffer[batteryBufferSlots.length]; for (int slot = 0; slot < batteryBufferSlots.length; slot++) { @@ -559,7 +551,7 @@ public static void init() { } // Charger, IDs 1375-1389 - endPos = GTValues.HT ? CHARGER.length - 1 : Math.min(CHARGER.length - 1, GTValues.UV + 2); + endPos = GTValues.HT ? CHARGER.length - 1 : Math.min(CHARGER.length - 1, GTValues.UV + 1); for (int i = 0; i < endPos; i++) { String chargerId = "charger." + GTValues.VN[i].toLowerCase(); MetaTileEntityCharger charger = new MetaTileEntityCharger(gregtechId(chargerId), i, 4); diff --git a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityBatteryBuffer.java b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityBatteryBuffer.java index 0a2fb0f742d..58c2f22c589 100644 --- a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityBatteryBuffer.java +++ b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityBatteryBuffer.java @@ -4,8 +4,10 @@ import codechicken.lib.render.pipeline.IVertexOperation; import codechicken.lib.vec.Matrix4; import gregtech.api.GTValues; +import gregtech.api.capability.GregtechCapabilities; import gregtech.api.capability.GregtechTileCapabilities; import gregtech.api.capability.IControllable; +import gregtech.api.capability.IElectricItem; import gregtech.api.capability.impl.EnergyContainerBatteryBuffer; import gregtech.api.gui.GuiTextures; import gregtech.api.gui.ModularUI; @@ -58,7 +60,7 @@ public void renderMetaTileEntity(CCRenderState renderState, Matrix4 translation, @Override protected void reinitializeEnergyContainer() { - this.energyContainer = new EnergyContainerBatteryBuffer(this, getTier()); + this.energyContainer = new EnergyContainerBatteryBuffer(this, getTier(), inventorySize); } @Override @@ -101,9 +103,11 @@ protected void onContentsChanged(int slot) { @Nonnull @Override public ItemStack insertItem(int slot, @Nonnull ItemStack stack, boolean simulate) { - if (((EnergyContainerBatteryBuffer) energyContainer).getBatteryContainer(stack) == null) - return stack; //do not allow to insert non-battery items - return super.insertItem(slot, stack, simulate); + IElectricItem electricItem = stack.getCapability(GregtechCapabilities.CAPABILITY_ELECTRIC_ITEM, null); + if (electricItem != null && getTier() >= electricItem.getTier()) { + return super.insertItem(slot, stack, simulate); + } + return stack; } @Override @@ -127,18 +131,24 @@ protected void initializeInventory() { @Override protected ModularUI createUI(EntityPlayer entityPlayer) { int rowSize = (int) Math.sqrt(inventorySize); + int colSize = rowSize; + if (inventorySize == 8) { + rowSize = 4; + colSize = 2; + } Builder builder = ModularUI.builder(GuiTextures.BACKGROUND, 176, - 18 + 18 * rowSize + 94) - .label(10, 5, getMetaFullName()); + 18 + 18 * colSize + 94) + .label(6, 6, getMetaFullName()); - for (int y = 0; y < rowSize; y++) { - for (int x = 0; x < rowSize; x++) { - int index = y * rowSize + x; - builder.widget(new SlotWidget(importItems, index, 89 - rowSize * 9 + x * 18, 18 + y * 18, true, true) + for (int x = 0; x < rowSize; x++) { + for (int y = 0; y < colSize; y++) { + int index = y * colSize + x; + builder.widget(new SlotWidget(importItems, index, 88 - rowSize * 9 + x * 18, 18 + y * 18, true, true) .setBackgroundTexture(GuiTextures.SLOT, GuiTextures.BATTERY_OVERLAY)); } } - builder.bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 7, 18 + 18 * rowSize + 12); + + builder.bindPlayerInventory(entityPlayer.inventory, GuiTextures.SLOT, 7, 18 + 18 * colSize + 12); return builder.build(getHolder(), entityPlayer); } @@ -149,8 +159,8 @@ public void addInformation(ItemStack stack, @Nullable World player, List tooltip.add(I18n.format("gregtech.universal.tooltip.item_storage_capacity", inventorySize)); tooltip.add(I18n.format("gregtech.universal.tooltip.voltage_in", energyContainer.getInputVoltage(), tierName)); tooltip.add(I18n.format("gregtech.universal.tooltip.voltage_out", energyContainer.getOutputVoltage(), tierName)); - tooltip.add(I18n.format("gregtech.universal.tooltip.amperage_out_till", inventorySize)); - tooltip.add(I18n.format("gregtech.universal.tooltip.energy_storage_capacity", energyContainer.getEnergyCapacity())); + tooltip.add(I18n.format("gregtech.universal.tooltip.amperage_in_till", energyContainer.getInputAmperage())); + tooltip.add(I18n.format("gregtech.universal.tooltip.amperage_out_till", energyContainer.getOutputAmperage())); } @Override diff --git a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityCharger.java b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityCharger.java index 9b4e1833ce4..65aaa43ab14 100644 --- a/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityCharger.java +++ b/src/main/java/gregtech/common/metatileentities/electric/MetaTileEntityCharger.java @@ -3,6 +3,7 @@ import gregtech.api.GTValues; import gregtech.api.capability.GregtechCapabilities; import gregtech.api.capability.IElectricItem; +import gregtech.api.capability.impl.EnergyContainerBatteryCharger; import gregtech.api.gui.GuiTextures; import gregtech.api.gui.ModularUI; import gregtech.api.gui.ModularUI.Builder; @@ -30,6 +31,7 @@ public MetaTileEntityCharger(ResourceLocation metaTileEntityId, int tier, int in super(metaTileEntityId, tier); this.inventorySize = inventorySize; initializeInventory(); + reinitializeEnergyContainer(); } @Override @@ -38,22 +40,8 @@ public MetaTileEntity createMetaTileEntity(MetaTileEntityHolder holder) { } @Override - public void update() { - super.update(); - if (!getWorld().isRemote && energyContainer.getEnergyStored() > 0) { - for (int i = 0; i < importItems.getSlots(); i++) { - ItemStack batteryStack = importItems.getStackInSlot(i); - IElectricItem electricItem = batteryStack.getCapability(GregtechCapabilities.CAPABILITY_ELECTRIC_ITEM, null); - if (electricItem != null) { - long inputVoltage = Math.min(energyContainer.getInputVoltage(), energyContainer.getEnergyStored()); - long energyUsed = electricItem.charge(inputVoltage, getTier(), false, false); - if (energyUsed > 0L) { - energyContainer.removeEnergy(energyUsed); - importItems.setStackInSlot(i, batteryStack); - } - } - } - } + protected void reinitializeEnergyContainer() { + this.energyContainer = new EnergyContainerBatteryCharger(this, getTier(), inventorySize); } @Override @@ -109,6 +97,6 @@ protected ModularUI createUI(EntityPlayer entityPlayer) { public void addInformation(ItemStack stack, @Nullable World player, List tooltip, boolean advanced) { tooltip.add(I18n.format("gregtech.universal.tooltip.item_storage_capacity", inventorySize)); tooltip.add(I18n.format("gregtech.universal.tooltip.voltage_in", energyContainer.getInputVoltage(), GTValues.VN[getTier()])); - tooltip.add(I18n.format("gregtech.universal.tooltip.energy_storage_capacity", energyContainer.getEnergyCapacity())); + tooltip.add(I18n.format("gregtech.universal.tooltip.amperage_in_till", energyContainer.getInputAmperage())); } } diff --git a/src/main/java/gregtech/loaders/recipe/MetaTileEntityLoader.java b/src/main/java/gregtech/loaders/recipe/MetaTileEntityLoader.java index 3498f45aceb..0cab101c9eb 100644 --- a/src/main/java/gregtech/loaders/recipe/MetaTileEntityLoader.java +++ b/src/main/java/gregtech/loaders/recipe/MetaTileEntityLoader.java @@ -215,60 +215,45 @@ public static void init() { ModHandler.addShapedRecipe(true, "item_export_bus_uv", MetaTileEntities.ITEM_EXPORT_BUS[GTValues.UV].getStackForm(), "M", "C", 'M', MetaTileEntities.HULL[GTValues.UV].getStackForm(), 'C', OreDictNames.chestWood); ModHandler.addShapedRecipe(true, "item_export_bus_uhv", MetaTileEntities.ITEM_EXPORT_BUS[GTValues.UHV].getStackForm(), "M", "C", 'M', MetaTileEntities.HULL[GTValues.UHV].getStackForm(), 'C', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_ulv_1x1", MetaTileEntities.BATTERY_BUFFER[GTValues.ULV][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.ULV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtSingle, Materials.Lead), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_lv_1x1", MetaTileEntities.BATTERY_BUFFER[GTValues.LV][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.LV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtSingle, Materials.Tin), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_mv_1x1", MetaTileEntities.BATTERY_BUFFER[GTValues.MV][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.MV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtSingle, Materials.Copper), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_hv_1x1", MetaTileEntities.BATTERY_BUFFER[GTValues.HV][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.HV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtSingle, Materials.Gold), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_ev_1x1", MetaTileEntities.BATTERY_BUFFER[GTValues.EV][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.EV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtSingle, Materials.Aluminium), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_iv_1x1", MetaTileEntities.BATTERY_BUFFER[GTValues.IV][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.IV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtSingle, Materials.Tungsten), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_luv_1x1", MetaTileEntities.BATTERY_BUFFER[GTValues.LuV][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.LuV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtSingle, Materials.VanadiumGallium), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_zpm_1x1", MetaTileEntities.BATTERY_BUFFER[GTValues.ZPM][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.ZPM].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtSingle, Materials.Naquadah), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_uv_1x1", MetaTileEntities.BATTERY_BUFFER[GTValues.UV][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.UV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtSingle, Materials.NaquadahAlloy), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_uhv_1x1", MetaTileEntities.BATTERY_BUFFER[GTValues.UHV][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.UHV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtSingle, Materials.Europium), 'T', OreDictNames.chestWood); - - ModHandler.addShapedRecipe(true, "battery_buffer_ulv_2x2", MetaTileEntities.BATTERY_BUFFER[GTValues.ULV][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.ULV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Lead), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_lv_2x2", MetaTileEntities.BATTERY_BUFFER[GTValues.LV][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.LV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Tin), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_mv_2x2", MetaTileEntities.BATTERY_BUFFER[GTValues.MV][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.MV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Copper), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_hv_2x2", MetaTileEntities.BATTERY_BUFFER[GTValues.HV][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.HV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Gold), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_ev_2x2", MetaTileEntities.BATTERY_BUFFER[GTValues.EV][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.EV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Aluminium), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_iv_2x2", MetaTileEntities.BATTERY_BUFFER[GTValues.IV][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.IV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Tungsten), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_luv_2x2", MetaTileEntities.BATTERY_BUFFER[GTValues.LuV][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.LuV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.VanadiumGallium), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_zpm_2x2", MetaTileEntities.BATTERY_BUFFER[GTValues.ZPM][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.ZPM].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Naquadah), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_uv_2x2", MetaTileEntities.BATTERY_BUFFER[GTValues.UV][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.UV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.NaquadahAlloy), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_uhv_2x2", MetaTileEntities.BATTERY_BUFFER[GTValues.UHV][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.UHV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Europium), 'T', OreDictNames.chestWood); - - ModHandler.addShapedRecipe(true, "battery_buffer_ulv_3x3", MetaTileEntities.BATTERY_BUFFER[GTValues.ULV][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.ULV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.Lead), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_lv_3x3", MetaTileEntities.BATTERY_BUFFER[GTValues.LV][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.LV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.Tin), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_mv_3x3", MetaTileEntities.BATTERY_BUFFER[GTValues.MV][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.MV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.Copper), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_hv_3x3", MetaTileEntities.BATTERY_BUFFER[GTValues.HV][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.HV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.Gold), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_ev_3x3", MetaTileEntities.BATTERY_BUFFER[GTValues.EV][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.EV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.Aluminium), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_iv_3x3", MetaTileEntities.BATTERY_BUFFER[GTValues.IV][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.IV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.Tungsten), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_luv_3x3", MetaTileEntities.BATTERY_BUFFER[GTValues.LuV][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.LuV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.VanadiumGallium), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_zpm_3x3", MetaTileEntities.BATTERY_BUFFER[GTValues.ZPM][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.ZPM].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.Naquadah), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_uv_3x3", MetaTileEntities.BATTERY_BUFFER[GTValues.UV][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.UV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.NaquadahAlloy), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_uhv_3x3", MetaTileEntities.BATTERY_BUFFER[GTValues.UHV][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.UHV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.Europium), 'T', OreDictNames.chestWood); - - ModHandler.addShapedRecipe(true, "battery_buffer_ulv_4x4", MetaTileEntities.BATTERY_BUFFER[GTValues.ULV][3].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.ULV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Lead), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_lv_4x4", MetaTileEntities.BATTERY_BUFFER[GTValues.LV][3].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.LV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Tin), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_mv_4x4", MetaTileEntities.BATTERY_BUFFER[GTValues.MV][3].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.MV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Copper), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_hv_4x4", MetaTileEntities.BATTERY_BUFFER[GTValues.HV][3].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.HV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Gold), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_ev_4x4", MetaTileEntities.BATTERY_BUFFER[GTValues.EV][3].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.EV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Aluminium), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_iv_4x4", MetaTileEntities.BATTERY_BUFFER[GTValues.IV][3].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.IV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Tungsten), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_luv_4x4", MetaTileEntities.BATTERY_BUFFER[GTValues.LuV][3].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.LuV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.VanadiumGallium), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_zpm_4x4", MetaTileEntities.BATTERY_BUFFER[GTValues.ZPM][3].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.ZPM].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Naquadah), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_uv_4x4", MetaTileEntities.BATTERY_BUFFER[GTValues.UV][3].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.UV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.NaquadahAlloy), 'T', OreDictNames.chestWood); - ModHandler.addShapedRecipe(true, "battery_buffer_uhv_4x4", MetaTileEntities.BATTERY_BUFFER[GTValues.UHV][3].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.UHV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Europium), 'T', OreDictNames.chestWood); - - ModHandler.addShapedRecipe(true, "charger_ulv", MetaTileEntities.CHARGER[GTValues.ULV].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.ULV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Lead), 'T', OreDictNames.chestWood, 'B', MetaItems.BATTERY_ULV_TANTALUM, 'C', new UnificationEntry(OrePrefix.circuit, MarkerMaterials.Tier.Primitive)); - ModHandler.addShapedRecipe(true, "charger_lv", MetaTileEntities.CHARGER[GTValues.LV].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.LV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Tin), 'T', OreDictNames.chestWood, 'B', MetaItems.BATTERY_LV_LITHIUM, 'C', new UnificationEntry(OrePrefix.circuit, MarkerMaterials.Tier.Basic)); - ModHandler.addShapedRecipe(true, "charger_mv", MetaTileEntities.CHARGER[GTValues.MV].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.MV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Copper), 'T', OreDictNames.chestWood, 'B', MetaItems.BATTERY_MV_LITHIUM, 'C', new UnificationEntry(OrePrefix.circuit, MarkerMaterials.Tier.Good)); - ModHandler.addShapedRecipe(true, "charger_hv", MetaTileEntities.CHARGER[GTValues.HV].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.HV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Gold), 'T', OreDictNames.chestWood, 'B', MetaItems.BATTERY_HV_LITHIUM, 'C', new UnificationEntry(OrePrefix.circuit, MarkerMaterials.Tier.Advanced)); - ModHandler.addShapedRecipe(true, "charger_ev", MetaTileEntities.CHARGER[GTValues.EV].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.EV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Aluminium), 'T', OreDictNames.chestWood, 'B', MetaItems.LAPOTRON_CRYSTAL, 'C', new UnificationEntry(OrePrefix.circuit, MarkerMaterials.Tier.Extreme)); - ModHandler.addShapedRecipe(true, "charger_iv", MetaTileEntities.CHARGER[GTValues.IV].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.IV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Tungsten), 'T', OreDictNames.chestWood, 'B', MetaItems.ENERGY_LAPOTRONIC_ORB, 'C', new UnificationEntry(OrePrefix.circuit, MarkerMaterials.Tier.Elite)); - ModHandler.addShapedRecipe(true, "charger_luv", MetaTileEntities.CHARGER[GTValues.LuV].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.LuV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.VanadiumGallium), 'T', OreDictNames.chestWood, 'B', MetaItems.ENERGY_LAPOTRONIC_ORB_CLUSTER, 'C', new UnificationEntry(OrePrefix.circuit, Tier.Master)); - ModHandler.addShapedRecipe(true, "charger_zpm", MetaTileEntities.CHARGER[GTValues.ZPM].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.ZPM].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Naquadah), 'T', OreDictNames.chestWood, 'B', MetaItems.ENERGY_LAPOTRONIC_MODULE, 'C', new UnificationEntry(OrePrefix.circuit, Tier.Ultimate)); - ModHandler.addShapedRecipe(true, "charger_uv", MetaTileEntities.CHARGER[GTValues.UV].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.UV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.NaquadahAlloy), 'T', OreDictNames.chestWood, 'B', MetaItems.ENERGY_LAPOTRONIC_CLUSTER, 'C', new UnificationEntry(OrePrefix.circuit, Tier.Super)); - ModHandler.addShapedRecipe(true, "charger_uhv", MetaTileEntities.CHARGER[GTValues.UHV].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.UHV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Europium), 'T', OreDictNames.chestWood, 'B', MetaItems.ULTIMATE_BATTERY, 'C', new UnificationEntry(OrePrefix.circuit, MarkerMaterials.Tier.Infinite)); + ModHandler.addShapedRecipe(true, "battery_buffer_ulv_4x", MetaTileEntities.BATTERY_BUFFER[GTValues.ULV][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.ULV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Lead), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_lv_4x", MetaTileEntities.BATTERY_BUFFER[GTValues.LV][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.LV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Tin), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_mv_4x", MetaTileEntities.BATTERY_BUFFER[GTValues.MV][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.MV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Copper), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_hv_4x", MetaTileEntities.BATTERY_BUFFER[GTValues.HV][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.HV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Gold), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_ev_4x", MetaTileEntities.BATTERY_BUFFER[GTValues.EV][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.EV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Aluminium), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_iv_4x", MetaTileEntities.BATTERY_BUFFER[GTValues.IV][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.IV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Tungsten), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_luv_4x", MetaTileEntities.BATTERY_BUFFER[GTValues.LuV][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.LuV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.VanadiumGallium), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_zpm_4x", MetaTileEntities.BATTERY_BUFFER[GTValues.ZPM][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.ZPM].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Naquadah), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_uv_4x", MetaTileEntities.BATTERY_BUFFER[GTValues.UV][0].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.UV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.NaquadahAlloy), 'T', OreDictNames.chestWood); + + ModHandler.addShapedRecipe(true, "battery_buffer_ulv_8x", MetaTileEntities.BATTERY_BUFFER[GTValues.ULV][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.ULV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.Lead), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_lv_8x", MetaTileEntities.BATTERY_BUFFER[GTValues.LV][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.LV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.Tin), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_mv_8x", MetaTileEntities.BATTERY_BUFFER[GTValues.MV][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.MV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.Copper), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_hv_8x", MetaTileEntities.BATTERY_BUFFER[GTValues.HV][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.HV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.Gold), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_ev_8x", MetaTileEntities.BATTERY_BUFFER[GTValues.EV][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.EV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.Aluminium), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_iv_8x", MetaTileEntities.BATTERY_BUFFER[GTValues.IV][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.IV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.Tungsten), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_luv_8x", MetaTileEntities.BATTERY_BUFFER[GTValues.LuV][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.LuV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.VanadiumGallium), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_zpm_8x", MetaTileEntities.BATTERY_BUFFER[GTValues.ZPM][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.ZPM].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.Naquadah), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_uv_8x", MetaTileEntities.BATTERY_BUFFER[GTValues.UV][1].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.UV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtOctal, Materials.NaquadahAlloy), 'T', OreDictNames.chestWood); + + ModHandler.addShapedRecipe(true, "battery_buffer_ulv_16x", MetaTileEntities.BATTERY_BUFFER[GTValues.ULV][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.ULV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Lead), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_lv_16x", MetaTileEntities.BATTERY_BUFFER[GTValues.LV][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.LV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Tin), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_mv_16x", MetaTileEntities.BATTERY_BUFFER[GTValues.MV][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.MV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Copper), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_hv_16x", MetaTileEntities.BATTERY_BUFFER[GTValues.HV][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.HV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Gold), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_ev_16x", MetaTileEntities.BATTERY_BUFFER[GTValues.EV][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.EV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Aluminium), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_iv_16x", MetaTileEntities.BATTERY_BUFFER[GTValues.IV][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.IV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Tungsten), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_luv_16x", MetaTileEntities.BATTERY_BUFFER[GTValues.LuV][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.LuV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.VanadiumGallium), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_zpm_16x", MetaTileEntities.BATTERY_BUFFER[GTValues.ZPM][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.ZPM].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.Naquadah), 'T', OreDictNames.chestWood); + ModHandler.addShapedRecipe(true, "battery_buffer_uv_16x", MetaTileEntities.BATTERY_BUFFER[GTValues.UV][2].getStackForm(), "WTW", "WMW", 'M', MetaTileEntities.HULL[GTValues.UV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtHex, Materials.NaquadahAlloy), 'T', OreDictNames.chestWood); + + ModHandler.addShapedRecipe(true, "charger_ulv", MetaTileEntities.CHARGER[GTValues.ULV].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.ULV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Lead), 'T', OreDictNames.chestWood, 'B', new UnificationEntry(OrePrefix.cableGtSingle, Materials.RedAlloy), 'C', new UnificationEntry(OrePrefix.circuit, MarkerMaterials.Tier.Primitive)); + ModHandler.addShapedRecipe(true, "charger_lv", MetaTileEntities.CHARGER[GTValues.LV].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.LV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Tin), 'T', OreDictNames.chestWood, 'B', new UnificationEntry(OrePrefix.cableGtSingle, Materials.Tin), 'C', new UnificationEntry(OrePrefix.circuit, MarkerMaterials.Tier.Basic)); + ModHandler.addShapedRecipe(true, "charger_mv", MetaTileEntities.CHARGER[GTValues.MV].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.MV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Copper), 'T', OreDictNames.chestWood, 'B', MetaItems.CAPACITOR.getStackForm(), 'C', new UnificationEntry(OrePrefix.circuit, MarkerMaterials.Tier.Good)); + ModHandler.addShapedRecipe(true, "charger_hv", MetaTileEntities.CHARGER[GTValues.HV].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.HV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Gold), 'T', OreDictNames.chestWood, 'B', MetaItems.ULTRA_LOW_POWER_INTEGRATED_CIRCUIT.getStackForm(), 'C', new UnificationEntry(OrePrefix.circuit, MarkerMaterials.Tier.Advanced)); + ModHandler.addShapedRecipe(true, "charger_ev", MetaTileEntities.CHARGER[GTValues.EV].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.EV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Aluminium), 'T', OreDictNames.chestWood, 'B', MetaItems.LOW_POWER_INTEGRATED_CIRCUIT.getStackForm(), 'C', new UnificationEntry(OrePrefix.circuit, MarkerMaterials.Tier.Extreme)); + ModHandler.addShapedRecipe(true, "charger_iv", MetaTileEntities.CHARGER[GTValues.IV].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.IV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Tungsten), 'T', OreDictNames.chestWood, 'B', MetaItems.POWER_INTEGRATED_CIRCUIT.getStackForm(), 'C', new UnificationEntry(OrePrefix.circuit, MarkerMaterials.Tier.Elite)); + ModHandler.addShapedRecipe(true, "charger_luv", MetaTileEntities.CHARGER[GTValues.LuV].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.LuV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.VanadiumGallium), 'T', OreDictNames.chestWood, 'B', MetaItems.HIGH_POWER_INTEGRATED_CIRCUIT.getStackForm(), 'C', new UnificationEntry(OrePrefix.circuit, Tier.Master)); + ModHandler.addShapedRecipe(true, "charger_zpm", MetaTileEntities.CHARGER[GTValues.ZPM].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.ZPM].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.Naquadah), 'T', OreDictNames.chestWood, 'B', MetaItems.HIGH_POWER_INTEGRATED_CIRCUIT.getStackForm(), 'C', new UnificationEntry(OrePrefix.circuit, Tier.Ultimate)); + ModHandler.addShapedRecipe(true, "charger_uv", MetaTileEntities.CHARGER[GTValues.UV].getStackForm(), "WTW", "WMW", "BCB", 'M', MetaTileEntities.HULL[GTValues.UV].getStackForm(), 'W', new UnificationEntry(OrePrefix.wireGtQuadruple, Materials.NaquadahAlloy), 'T', OreDictNames.chestWood, 'B', MetaItems.HIGH_POWER_INTEGRATED_CIRCUIT.getStackForm(), 'C', new UnificationEntry(OrePrefix.circuit, Tier.Super)); ModHandler.addShapedRecipe(true, "rotor_holder_hv", MetaTileEntities.ROTOR_HOLDER[0].getStackForm(), "SGS", "GHG", "SGS", 'H', MetaTileEntities.HULL[GTValues.HV].getStackForm(), 'S', new UnificationEntry(OrePrefix.gearSmall, Materials.StainlessSteel), 'G', new UnificationEntry(OrePrefix.gear, Materials.BlackSteel)); ModHandler.addShapedRecipe(true, "rotor_holder_luv", MetaTileEntities.ROTOR_HOLDER[1].getStackForm(), "SGS", "GHG", "SGS", 'H', MetaTileEntities.HULL[GTValues.LuV].getStackForm(), 'S', new UnificationEntry(OrePrefix.gearSmall, Materials.HSSG), 'G', new UnificationEntry(OrePrefix.gear, Materials.Rhodium)); diff --git a/src/main/resources/assets/gregtech/lang/en_us.lang b/src/main/resources/assets/gregtech/lang/en_us.lang index 083dc3d0d76..8ebf2cc6e74 100644 --- a/src/main/resources/assets/gregtech/lang/en_us.lang +++ b/src/main/resources/assets/gregtech/lang/en_us.lang @@ -3130,80 +3130,65 @@ gregtech.machine.hull.uxv.name=UXV Machine Hull gregtech.machine.hull.max.name=MAX Machine Hull # Battery buffers -gregtech.machine.battery_buffer.ulv.1.name=Ultra Low Voltage Battery Buffer -gregtech.machine.battery_buffer.ulv.4.name=Ultra Low Voltage Battery Buffer -gregtech.machine.battery_buffer.ulv.9.name=Ultra Low Voltage Battery Buffer -gregtech.machine.battery_buffer.ulv.16.name=Ultra Low Voltage Battery Buffer - -gregtech.machine.battery_buffer.lv.1.name=Low Voltage Battery Buffer -gregtech.machine.battery_buffer.lv.4.name=Low Voltage Battery Buffer -gregtech.machine.battery_buffer.lv.9.name=Low Voltage Battery Buffer -gregtech.machine.battery_buffer.lv.16.name=Low Voltage Battery Buffer - -gregtech.machine.battery_buffer.mv.1.name=Medium Voltage Battery Buffer -gregtech.machine.battery_buffer.mv.4.name=Medium Voltage Battery Buffer -gregtech.machine.battery_buffer.mv.9.name=Medium Voltage Battery Buffer -gregtech.machine.battery_buffer.mv.16.name=Medium Voltage Battery Buffer - -gregtech.machine.battery_buffer.hv.1.name=High Voltage Battery Buffer -gregtech.machine.battery_buffer.hv.4.name=High Voltage Battery Buffer -gregtech.machine.battery_buffer.hv.9.name=High Voltage Battery Buffer -gregtech.machine.battery_buffer.hv.16.name=High Voltage Battery Buffer - -gregtech.machine.battery_buffer.ev.1.name=Extreme Voltage Battery Buffer -gregtech.machine.battery_buffer.ev.4.name=Extreme Voltage Battery Buffer -gregtech.machine.battery_buffer.ev.9.name=Extreme Voltage Battery Buffer -gregtech.machine.battery_buffer.ev.16.name=Extreme Voltage Battery Buffer - -gregtech.machine.battery_buffer.iv.1.name=Insane Voltage Battery Buffer -gregtech.machine.battery_buffer.iv.4.name=Insane Voltage Battery Buffer -gregtech.machine.battery_buffer.iv.9.name=Insane Voltage Battery Buffer -gregtech.machine.battery_buffer.iv.16.name=Insane Voltage Battery Buffer - -gregtech.machine.battery_buffer.luv.1.name=Ludicrous Voltage Battery Buffer -gregtech.machine.battery_buffer.luv.4.name=Ludicrous Voltage Battery Buffer -gregtech.machine.battery_buffer.luv.9.name=Ludicrous Voltage Battery Buffer -gregtech.machine.battery_buffer.luv.16.name=Ludicrous Voltage Battery Buffer - -gregtech.machine.battery_buffer.zpm.1.name=ZPM Voltage Battery Buffer -gregtech.machine.battery_buffer.zpm.4.name=ZPM Voltage Battery Buffer -gregtech.machine.battery_buffer.zpm.9.name=ZPM Voltage Battery Buffer -gregtech.machine.battery_buffer.zpm.16.name=ZPM Voltage Battery Buffer - -gregtech.machine.battery_buffer.uv.1.name=Ultimate Voltage Battery Buffer -gregtech.machine.battery_buffer.uv.4.name=Ultimate Voltage Battery Buffer -gregtech.machine.battery_buffer.uv.9.name=Ultimate Voltage Battery Buffer -gregtech.machine.battery_buffer.uv.16.name=Ultimate Voltage Battery Buffer - -gregtech.machine.battery_buffer.uhv.1.name=UHV Voltage Battery Buffer -gregtech.machine.battery_buffer.uhv.4.name=UHV Voltage Battery Buffer -gregtech.machine.battery_buffer.uhv.9.name=UHV Voltage Battery Buffer -gregtech.machine.battery_buffer.uhv.16.name=UHV Voltage Battery Buffer - -gregtech.machine.battery_buffer.uev.1.name=UEV Voltage Battery Buffer -gregtech.machine.battery_buffer.uev.4.name=UEV Voltage Battery Buffer -gregtech.machine.battery_buffer.uev.9.name=UEV Voltage Battery Buffer -gregtech.machine.battery_buffer.uev.16.name=UEV Voltage Battery Buffer - -gregtech.machine.battery_buffer.uiv.1.name=UIV Voltage Battery Buffer -gregtech.machine.battery_buffer.uiv.4.name=UIV Voltage Battery Buffer -gregtech.machine.battery_buffer.uiv.9.name=UIV Voltage Battery Buffer -gregtech.machine.battery_buffer.uiv.16.name=UIV Voltage Battery Buffer - -gregtech.machine.battery_buffer.umv.1.name=UMV Voltage Battery Buffer -gregtech.machine.battery_buffer.umv.4.name=UMV Voltage Battery Buffer -gregtech.machine.battery_buffer.umv.9.name=UMV Voltage Battery Buffer -gregtech.machine.battery_buffer.umv.16.name=UMV Voltage Battery Buffer - -gregtech.machine.battery_buffer.uxv.1.name=UXV Voltage Battery Buffer -gregtech.machine.battery_buffer.uxv.4.name=UXV Voltage Battery Buffer -gregtech.machine.battery_buffer.uxv.9.name=UXV Voltage Battery Buffer -gregtech.machine.battery_buffer.uxv.16.name=UXV Voltage Battery Buffer - -gregtech.machine.battery_buffer.max.1.name=MAX Voltage Battery Buffer -gregtech.machine.battery_buffer.max.4.name=MAX Voltage Battery Buffer -gregtech.machine.battery_buffer.max.9.name=MAX Voltage Battery Buffer -gregtech.machine.battery_buffer.max.16.name=MAX Voltage Battery Buffer +gregtech.machine.battery_buffer.ulv.4.name=Ultra Low Voltage 4x Battery Buffer +gregtech.machine.battery_buffer.ulv.8.name=Ultra Low Voltage 8x Battery Buffer +gregtech.machine.battery_buffer.ulv.16.name=Ultra Low Voltage 16x Battery Buffer + +gregtech.machine.battery_buffer.lv.4.name=Low Voltage 4x Battery Buffer +gregtech.machine.battery_buffer.lv.8.name=Low Voltage 8x Battery Buffer +gregtech.machine.battery_buffer.lv.16.name=Low Voltage 16x Battery Buffer + +gregtech.machine.battery_buffer.mv.4.name=Medium Voltage 4x Battery Buffer +gregtech.machine.battery_buffer.mv.8.name=Medium Voltage 8x Battery Buffer +gregtech.machine.battery_buffer.mv.16.name=Medium Voltage 16x Battery Buffer + +gregtech.machine.battery_buffer.hv.4.name=High Voltage 4x Battery Buffer +gregtech.machine.battery_buffer.hv.8.name=High Voltage 8x Battery Buffer +gregtech.machine.battery_buffer.hv.16.name=High Voltage 16x Battery Buffer + +gregtech.machine.battery_buffer.ev.4.name=Extreme Voltage 4x Battery Buffer +gregtech.machine.battery_buffer.ev.8.name=Extreme Voltage 8x Battery Buffer +gregtech.machine.battery_buffer.ev.16.name=Extreme Voltage 16x Battery Buffer + +gregtech.machine.battery_buffer.iv.4.name=Insane Voltage 4x Battery Buffer +gregtech.machine.battery_buffer.iv.8.name=Insane Voltage 8x Battery Buffer +gregtech.machine.battery_buffer.iv.16.name=Insane Voltage 16x Battery Buffer + +gregtech.machine.battery_buffer.luv.4.name=Ludicrous Voltage 4x Battery Buffer +gregtech.machine.battery_buffer.luv.8.name=Ludicrous Voltage 8x Battery Buffer +gregtech.machine.battery_buffer.luv.16.name=Ludicrous Voltage 16x Battery Buffer + +gregtech.machine.battery_buffer.zpm.4.name=ZPM Voltage 4x Battery Buffer +gregtech.machine.battery_buffer.zpm.8.name=ZPM Voltage 8x Battery Buffer +gregtech.machine.battery_buffer.zpm.16.name=ZPM Voltage 16x Battery Buffer + +gregtech.machine.battery_buffer.uv.4.name=Ultimate Voltage 4x Battery Buffer +gregtech.machine.battery_buffer.uv.8.name=Ultimate Voltage 8x Battery Buffer +gregtech.machine.battery_buffer.uv.16.name=Ultimate Voltage 16x Battery Buffer + +gregtech.machine.battery_buffer.uhv.4.name=UHV Voltage 4x Battery Buffer +gregtech.machine.battery_buffer.uhv.8.name=UHV Voltage 8x Battery Buffer +gregtech.machine.battery_buffer.uhv.16.name=UHV Voltage 16x Battery Buffer + +gregtech.machine.battery_buffer.uev.4.name=UEV Voltage 4x Battery Buffer +gregtech.machine.battery_buffer.uev.8.name=UEV Voltage 8x Battery Buffer +gregtech.machine.battery_buffer.uev.16.name=UEV Voltage 16x Battery Buffer + +gregtech.machine.battery_buffer.uiv.4.name=UIV Voltage 4x Battery Buffer +gregtech.machine.battery_buffer.uiv.8.name=UIV Voltage 8x Battery Buffer +gregtech.machine.battery_buffer.uiv.16.name=UIV Voltage 16x Battery Buffer + +gregtech.machine.battery_buffer.umv.4.name=UMV Voltage 4x Battery Buffer +gregtech.machine.battery_buffer.umv.8.name=UMV Voltage 8x Battery Buffer +gregtech.machine.battery_buffer.umv.16.name=UMV Voltage 16x Battery Buffer + +gregtech.machine.battery_buffer.uxv.4.name=UXV Voltage 4x Battery Buffer +gregtech.machine.battery_buffer.uxv.8.name=UXV Voltage 8x Battery Buffer +gregtech.machine.battery_buffer.uxv.16.name=UXV Voltage 16x Battery Buffer + +gregtech.machine.battery_buffer.max.4.name=MAX Voltage 4x Battery Buffer +gregtech.machine.battery_buffer.max.8.name=MAX Voltage 8x Battery Buffer +gregtech.machine.battery_buffer.max.16.name=MAX Voltage 16x Battery Buffer # Transformers gregtech.machine.transformer.tooltip_tool_usage=Use Soft Hammer to invert (Starts as Transform Down) @@ -3266,21 +3251,21 @@ gregtech.machine.diode.uxv.name=UXV Voltage Diode gregtech.machine.diode.max.name=MAX Voltage Diode # Chargers -gregtech.machine.charger.ulv.name=Ultra Low Voltage Battery Charger -gregtech.machine.charger.lv.name=Low Voltage Battery Charger -gregtech.machine.charger.mv.name=Medium Voltage Battery Charger -gregtech.machine.charger.hv.name=High Voltage Battery Charger -gregtech.machine.charger.ev.name=Extreme Voltage Battery Charger -gregtech.machine.charger.iv.name=Insane Voltage Battery Charger -gregtech.machine.charger.luv.name=Ludicrous Voltage Battery Charger -gregtech.machine.charger.zpm.name=ZPM Voltage Battery Charger -gregtech.machine.charger.uv.name=Ultimate Voltage Battery Charger -gregtech.machine.charger.uhv.name=UHV Voltage Battery Charger -gregtech.machine.charger.uev.name=UEV Voltage Battery Charger -gregtech.machine.charger.uiv.name=UIV Voltage Battery Charger -gregtech.machine.charger.umv.name=UMV Voltage Battery Charger -gregtech.machine.charger.uxv.name=UXV Voltage Battery Charger -gregtech.machine.charger.max.name=MAX Voltage Battery Charger +gregtech.machine.charger.ulv.name=Ultra Low Voltage Turbo Charger +gregtech.machine.charger.lv.name=Low Voltage Turbo Charger +gregtech.machine.charger.mv.name=Medium Voltage Turbo Charger +gregtech.machine.charger.hv.name=High Voltage Turbo Charger +gregtech.machine.charger.ev.name=Extreme Voltage Turbo Charger +gregtech.machine.charger.iv.name=Insane Voltage Turbo Charger +gregtech.machine.charger.luv.name=Ludicrous Voltage Turbo Charger +gregtech.machine.charger.zpm.name=ZPM Voltage Turbo Charger +gregtech.machine.charger.uv.name=Ultimate Voltage Turbo Charger +gregtech.machine.charger.uhv.name=UHV Voltage Turbo Charger +gregtech.machine.charger.uev.name=UEV Voltage Turbo Charger +gregtech.machine.charger.uiv.name=UIV Voltage Turbo Charger +gregtech.machine.charger.umv.name=UMV Voltage Turbo Charger +gregtech.machine.charger.uxv.name=UXV Voltage Turbo Charger +gregtech.machine.charger.max.name=MAX Voltage Turbo Charger # Pumps gregtech.machine.pump.tooltip_range=Pumping Area: %,dx%,d