Increased internal buffer for cable to x6 of transfer rate. Closes #1296
This commit is contained in:
parent
b80bf1240d
commit
416361ff3b
2 changed files with 36 additions and 18 deletions
|
@ -30,14 +30,14 @@ import reborncore.api.power.EnumPowerTier;
|
||||||
import techreborn.init.ModBlocks;
|
import techreborn.init.ModBlocks;
|
||||||
|
|
||||||
public enum EnumCableType implements IStringSerializable {
|
public enum EnumCableType implements IStringSerializable {
|
||||||
COPPER("copper", "techreborn:blocks/cables/copper_cable", 128, 12.0, true, EnumPowerTier.LOW),
|
COPPER("copper", "techreborn:blocks/cables/copper_cable", 128, 12.0, true, EnumPowerTier.MEDIUM),
|
||||||
TIN("tin", "techreborn:blocks/cables/tin_cable", 32, 12.0, true, EnumPowerTier.MEDIUM),
|
TIN("tin", "techreborn:blocks/cables/tin_cable", 32, 12.0, true, EnumPowerTier.LOW),
|
||||||
GOLD("gold", "techreborn:blocks/cables/gold_cable", 512, 12.0, true, EnumPowerTier.MEDIUM),
|
GOLD("gold", "techreborn:blocks/cables/gold_cable", 512, 12.0, true, EnumPowerTier.HIGH),
|
||||||
HV("hv", "techreborn:blocks/cables/hv_cable", 2048, 12.0, true, EnumPowerTier.HIGH),
|
HV("hv", "techreborn:blocks/cables/hv_cable", 2048, 12.0, true, EnumPowerTier.EXTREME),
|
||||||
GLASSFIBER("glassfiber", "techreborn:blocks/cables/glass_fiber_cable", 8192, 12.0, false, EnumPowerTier.HIGH),
|
GLASSFIBER("glassfiber", "techreborn:blocks/cables/glass_fiber_cable", 8192, 12.0, false, EnumPowerTier.INSANE),
|
||||||
ICOPPER("insulatedcopper", "techreborn:blocks/cables/copper_insulated_cable", 128, 10.0, false, EnumPowerTier.LOW),
|
ICOPPER("insulatedcopper", "techreborn:blocks/cables/copper_insulated_cable", 128, 10.0, false, EnumPowerTier.MEDIUM),
|
||||||
IGOLD("insulatedgold", "techreborn:blocks/cables/gold_insulated_cable", 512, 10.0, false, EnumPowerTier.MEDIUM),
|
IGOLD("insulatedgold", "techreborn:blocks/cables/gold_insulated_cable", 512, 10.0, false, EnumPowerTier.HIGH),
|
||||||
IHV("insulatedhv", "techreborn:blocks/cables/hv_insulated_cable", 2048, 10.0, false, EnumPowerTier.HIGH);
|
IHV("insulatedhv", "techreborn:blocks/cables/hv_insulated_cable", 2048, 10.0, false, EnumPowerTier.EXTREME);
|
||||||
|
|
||||||
public String textureName = "minecraft:blocks/iron_block";
|
public String textureName = "minecraft:blocks/iron_block";
|
||||||
public int transferRate = 128;
|
public int transferRate = 128;
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
package techreborn.tiles.cable;
|
package techreborn.tiles.cable;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.network.NetworkManager;
|
import net.minecraft.network.NetworkManager;
|
||||||
|
@ -33,19 +34,24 @@ import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.ITickable;
|
import net.minecraft.util.ITickable;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
|
import net.minecraft.util.text.TextFormatting;
|
||||||
import net.minecraftforge.common.capabilities.Capability;
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
import net.minecraftforge.energy.CapabilityEnergy;
|
import net.minecraftforge.energy.CapabilityEnergy;
|
||||||
import net.minecraftforge.energy.IEnergyStorage;
|
import net.minecraftforge.energy.IEnergyStorage;
|
||||||
|
import reborncore.api.IListInfoProvider;
|
||||||
import reborncore.common.RebornCoreConfig;
|
import reborncore.common.RebornCoreConfig;
|
||||||
|
import reborncore.common.powerSystem.PowerSystem;
|
||||||
|
import reborncore.common.util.StringUtils;
|
||||||
import techreborn.blocks.cable.BlockCable;
|
import techreborn.blocks.cable.BlockCable;
|
||||||
import techreborn.blocks.cable.EnumCableType;
|
import techreborn.blocks.cable.EnumCableType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by modmuss50 on 19/05/2017.
|
* Created by modmuss50 on 19/05/2017.
|
||||||
*/
|
*/
|
||||||
public class TileCable extends TileEntity implements ITickable, IEnergyStorage {
|
public class TileCable extends TileEntity implements ITickable, IEnergyStorage, IListInfoProvider {
|
||||||
public int power = 0;
|
public int power = 0;
|
||||||
private int maxPower = 0;
|
private int transferRate = 0;
|
||||||
|
private EnumCableType cableType = null;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update() {
|
public void update() {
|
||||||
|
@ -53,8 +59,9 @@ public class TileCable extends TileEntity implements ITickable, IEnergyStorage {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.maxPower == 0 ){
|
if (this.cableType == null ){
|
||||||
this.maxPower = getCableType().transferRate * RebornCoreConfig.euPerFU;
|
this.cableType = getCableType();
|
||||||
|
this.transferRate = this.cableType.transferRate * RebornCoreConfig.euPerFU;
|
||||||
}
|
}
|
||||||
|
|
||||||
ArrayList<IEnergyStorage> acceptors = new ArrayList<IEnergyStorage>();
|
ArrayList<IEnergyStorage> acceptors = new ArrayList<IEnergyStorage>();
|
||||||
|
@ -81,12 +88,13 @@ public class TileCable extends TileEntity implements ITickable, IEnergyStorage {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cables.size() > 0){
|
if (cables.size() > 0){
|
||||||
int drain = Math.min(power, maxPower);
|
int drain = Math.min(power, transferRate);
|
||||||
int energyShare = drain / cables.size();
|
int energyShare = drain / cables.size();
|
||||||
int remainingEnergy = drain;
|
int remainingEnergy = drain;
|
||||||
|
|
||||||
if (energyShare > 0) {
|
if (energyShare > 0) {
|
||||||
for (TileCable cable : cables) {
|
for (TileCable cable : cables) {
|
||||||
|
// Push energy to connected cables
|
||||||
int move = cable.receiveEnergy(Math.min(energyShare, remainingEnergy), false);
|
int move = cable.receiveEnergy(Math.min(energyShare, remainingEnergy), false);
|
||||||
if (move > 0) {
|
if (move > 0) {
|
||||||
remainingEnergy -= move;
|
remainingEnergy -= move;
|
||||||
|
@ -97,12 +105,13 @@ public class TileCable extends TileEntity implements ITickable, IEnergyStorage {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (acceptors.size() > 0){
|
if (acceptors.size() > 0){
|
||||||
int drain = Math.min(power, maxPower);
|
int drain = Math.min(power, transferRate);
|
||||||
int energyShare = drain / acceptors.size();
|
int energyShare = drain / acceptors.size();
|
||||||
int remainingEnergy = drain;
|
int remainingEnergy = drain;
|
||||||
|
|
||||||
if (energyShare > 0) {
|
if (energyShare > 0) {
|
||||||
for (IEnergyStorage tile : acceptors){
|
for (IEnergyStorage tile : acceptors){
|
||||||
|
// Push energy to connected tile acceptors
|
||||||
int move = tile.receiveEnergy(Math.min(energyShare, remainingEnergy), false);
|
int move = tile.receiveEnergy(Math.min(energyShare, remainingEnergy), false);
|
||||||
if (move > 0) {
|
if (move > 0) {
|
||||||
remainingEnergy -= move;
|
remainingEnergy -= move;
|
||||||
|
@ -114,7 +123,6 @@ public class TileCable extends TileEntity implements ITickable, IEnergyStorage {
|
||||||
}
|
}
|
||||||
|
|
||||||
private EnumCableType getCableType() {
|
private EnumCableType getCableType() {
|
||||||
//Todo cache this
|
|
||||||
return world.getBlockState(pos).getValue(BlockCable.TYPE);
|
return world.getBlockState(pos).getValue(BlockCable.TYPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,7 +132,7 @@ public class TileCable extends TileEntity implements ITickable, IEnergyStorage {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int energyReceived = Math.min(maxPower - power, Math.min(maxPower, maxReceive));
|
int energyReceived = Math.min(getMaxEnergyStored() - getEnergyStored(), Math.min(transferRate, maxReceive));
|
||||||
if (!simulate)
|
if (!simulate)
|
||||||
power += energyReceived;
|
power += energyReceived;
|
||||||
return energyReceived;
|
return energyReceived;
|
||||||
|
@ -136,7 +144,7 @@ public class TileCable extends TileEntity implements ITickable, IEnergyStorage {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int energyExtracted = Math.min(power, Math.min(this.maxPower, maxExtract));
|
int energyExtracted = Math.min(getEnergyStored(), Math.min(transferRate, maxExtract));
|
||||||
if (!simulate)
|
if (!simulate)
|
||||||
power -= energyExtracted;
|
power -= energyExtracted;
|
||||||
return energyExtracted;
|
return energyExtracted;
|
||||||
|
@ -149,7 +157,7 @@ public class TileCable extends TileEntity implements ITickable, IEnergyStorage {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getMaxEnergyStored() {
|
public int getMaxEnergyStored() {
|
||||||
return this.maxPower;
|
return this.transferRate * 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -223,4 +231,14 @@ public class TileCable extends TileEntity implements ITickable, IEnergyStorage {
|
||||||
}
|
}
|
||||||
return compound;
|
return compound;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void addInfo(List<String> info, boolean isRealTile) {
|
||||||
|
if (isRealTile) {
|
||||||
|
info.add(TextFormatting.GRAY + "Transfer Rate: " + TextFormatting.GOLD
|
||||||
|
+ PowerSystem.getLocaliszedPowerFormatted(this.transferRate / RebornCoreConfig.euPerFU) + "/t");
|
||||||
|
info.add(TextFormatting.GRAY + "Tier: " + TextFormatting.GOLD
|
||||||
|
+ StringUtils.toFirstCapitalAllLowercase(this.cableType.tier.toString()));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue