Remove energy API
This commit is contained in:
@@ -1,51 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.api.energy;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.util.Action;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
/**
|
||||
* An energy container.
|
||||
*/
|
||||
public interface IEnergy {
|
||||
/**
|
||||
* @param id id of the storage
|
||||
* @param amount the amount
|
||||
*/
|
||||
void removeCapacity(UUID id, int amount);
|
||||
|
||||
/**
|
||||
* @param id id of the storage
|
||||
* @param amount the amount
|
||||
*/
|
||||
void addCapacity(UUID id, int amount);
|
||||
|
||||
/**
|
||||
* @return the capacity
|
||||
*/
|
||||
int getCapacity();
|
||||
|
||||
/**
|
||||
* @return the amount stored
|
||||
*/
|
||||
int getStored();
|
||||
|
||||
/**
|
||||
* @param amount the amount stored
|
||||
*/
|
||||
void setStored(int amount);
|
||||
|
||||
/**
|
||||
* @param amount the amount
|
||||
* @param action the action
|
||||
* @return the energy extracted
|
||||
*/
|
||||
int extract(int amount, Action action);
|
||||
|
||||
/**
|
||||
* @param amount the amount
|
||||
* @param action the action
|
||||
* @return the energy inserted
|
||||
*/
|
||||
int insert(int amount, Action action);
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
package com.raoulvdberge.refinedstorage.api.network;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingManager;
|
||||
import com.raoulvdberge.refinedstorage.api.energy.IEnergy;
|
||||
import com.raoulvdberge.refinedstorage.api.network.grid.handler.IFluidGridHandler;
|
||||
import com.raoulvdberge.refinedstorage.api.network.grid.handler.IItemGridHandler;
|
||||
import com.raoulvdberge.refinedstorage.api.network.item.INetworkItemHandler;
|
||||
@@ -55,11 +54,6 @@ public interface INetwork {
|
||||
*/
|
||||
ICraftingManager getCraftingManager();
|
||||
|
||||
/**
|
||||
* @return the {@link IEnergy} of this network
|
||||
*/
|
||||
IEnergy getEnergy();
|
||||
|
||||
/**
|
||||
* @return the {@link IItemGridHandler} of this network
|
||||
*/
|
||||
|
||||
@@ -1,97 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.apiimpl.energy;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.energy.IEnergy;
|
||||
import com.raoulvdberge.refinedstorage.api.util.Action;
|
||||
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
public final class Energy implements IEnergy {
|
||||
private static final UUID DEFAULT_UUID = new UUID(0L, 0L);
|
||||
|
||||
protected int capacity;
|
||||
protected int energy;
|
||||
|
||||
private final Map<UUID, Integer> storages;
|
||||
|
||||
public Energy(int controllerCapacity) {
|
||||
this.storages = new Object2ObjectOpenHashMap<>();
|
||||
this.storages.put(DEFAULT_UUID, controllerCapacity);
|
||||
|
||||
calculateCapacity();
|
||||
}
|
||||
|
||||
private void calculateCapacity() {
|
||||
long newCapacity = storages.values().stream().mapToLong(Long::valueOf).sum();
|
||||
|
||||
this.capacity = (int) Math.min(newCapacity, Integer.MAX_VALUE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeCapacity(UUID id, int amount) {
|
||||
if (id.equals(DEFAULT_UUID)) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.storages.remove(id);
|
||||
|
||||
calculateCapacity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int extract(int maxExtract, Action action) {
|
||||
if (maxExtract <= 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int extracted = Math.min(energy, maxExtract);
|
||||
|
||||
if (action == Action.PERFORM) {
|
||||
energy -= extracted;
|
||||
}
|
||||
|
||||
return extracted;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCapacity() {
|
||||
return this.capacity;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStored() {
|
||||
return this.energy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addCapacity(UUID id, int amount) {
|
||||
if (id.equals(DEFAULT_UUID) || amount <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.storages.merge(id, amount, (k, v) -> amount);
|
||||
|
||||
calculateCapacity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int insert(int maxReceive, Action action) {
|
||||
if (maxReceive <= 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int inserted = Math.min(capacity - energy, maxReceive);
|
||||
|
||||
if (action == Action.PERFORM) {
|
||||
energy += inserted;
|
||||
}
|
||||
|
||||
return inserted;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStored(int amount) {
|
||||
this.energy = Math.min(amount, this.capacity);
|
||||
}
|
||||
}
|
||||
@@ -48,7 +48,7 @@ public class ServerConfig {
|
||||
|
||||
public class Controller {
|
||||
private final ForgeConfigSpec.IntValue baseUsage;
|
||||
private final ForgeConfigSpec.IntValue maxReceive;
|
||||
private final ForgeConfigSpec.IntValue maxTransfer;
|
||||
private final ForgeConfigSpec.IntValue capacity;
|
||||
private final ForgeConfigSpec.BooleanValue useEnergy;
|
||||
|
||||
@@ -56,7 +56,7 @@ public class ServerConfig {
|
||||
builder.push("controller");
|
||||
|
||||
baseUsage = builder.comment("The base energy used by the Controller").defineInRange("baseUsage", 0, 0, Integer.MAX_VALUE);
|
||||
maxReceive = builder.comment("The maximum energy the Controller receives per tick").defineInRange("maxReceive", Integer.MAX_VALUE, 0, Integer.MAX_VALUE);
|
||||
maxTransfer = builder.comment("The maximum energy that the Controller can receive").defineInRange("maxTransfer", Integer.MAX_VALUE, 0, Integer.MAX_VALUE);
|
||||
capacity = builder.comment("The energy capacity of the Controller").defineInRange("capacity", 32000, 0, Integer.MAX_VALUE);
|
||||
useEnergy = builder.comment("Whether the Controller uses energy").define("useEnergy", true);
|
||||
|
||||
@@ -67,8 +67,8 @@ public class ServerConfig {
|
||||
return baseUsage.get();
|
||||
}
|
||||
|
||||
public int getMaxReceive() {
|
||||
return maxReceive.get();
|
||||
public int getMaxTransfer() {
|
||||
return maxTransfer.get();
|
||||
}
|
||||
|
||||
public int getCapacity() {
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.raoulvdberge.refinedstorage.integration.forgeenergy;
|
||||
|
||||
import net.minecraftforge.energy.EnergyStorage;
|
||||
|
||||
public class BaseEnergyStorage extends EnergyStorage {
|
||||
public BaseEnergyStorage(int capacity, int maxTransfer) {
|
||||
super(capacity, maxTransfer);
|
||||
}
|
||||
|
||||
public void setStored(int energy) {
|
||||
this.energy = energy;
|
||||
}
|
||||
}
|
||||
@@ -1,51 +0,0 @@
|
||||
package com.raoulvdberge.refinedstorage.integration.forgeenergy;
|
||||
|
||||
import com.raoulvdberge.refinedstorage.api.energy.IEnergy;
|
||||
import com.raoulvdberge.refinedstorage.api.util.Action;
|
||||
import net.minecraftforge.energy.IEnergyStorage;
|
||||
|
||||
public final class EnergyProxy implements IEnergyStorage {
|
||||
private final int maxReceive;
|
||||
private final int maxExtract;
|
||||
private final IEnergy energy;
|
||||
|
||||
public EnergyProxy(IEnergy energy, int maxTransfer) {
|
||||
this(energy, maxTransfer, maxTransfer);
|
||||
}
|
||||
|
||||
public EnergyProxy(IEnergy energy, int maxReceive, int maxExtract) {
|
||||
this.energy = energy;
|
||||
this.maxReceive = maxReceive;
|
||||
this.maxExtract = maxExtract;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int receiveEnergy(int maxReceive, boolean simulate) {
|
||||
return !canReceive() ? 0 : this.energy.insert(Math.min(this.maxReceive, maxReceive), simulate ? Action.SIMULATE : Action.PERFORM);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int extractEnergy(int maxExtract, boolean simulate) {
|
||||
return !canExtract() ? 0 : this.energy.extract(Math.min(this.maxExtract, maxExtract), simulate ? Action.SIMULATE : Action.PERFORM);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEnergyStored() {
|
||||
return this.energy.getStored();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getMaxEnergyStored() {
|
||||
return this.energy.getCapacity();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canExtract() {
|
||||
return this.maxExtract > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canReceive() {
|
||||
return this.maxReceive > 0;
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,6 @@ import com.google.common.base.Preconditions;
|
||||
import com.raoulvdberge.refinedstorage.RS;
|
||||
import com.raoulvdberge.refinedstorage.RSTiles;
|
||||
import com.raoulvdberge.refinedstorage.api.autocrafting.ICraftingManager;
|
||||
import com.raoulvdberge.refinedstorage.api.energy.IEnergy;
|
||||
import com.raoulvdberge.refinedstorage.api.network.INetwork;
|
||||
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeGraph;
|
||||
import com.raoulvdberge.refinedstorage.api.network.INetworkNodeVisitor;
|
||||
@@ -23,7 +22,6 @@ import com.raoulvdberge.refinedstorage.api.storage.externalstorage.IStorageExter
|
||||
import com.raoulvdberge.refinedstorage.api.storage.tracker.IStorageTracker;
|
||||
import com.raoulvdberge.refinedstorage.api.util.Action;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.autocrafting.CraftingManager;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.energy.Energy;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.NetworkNodeGraph;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.FluidGridHandler;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.network.grid.handler.ItemGridHandler;
|
||||
@@ -36,7 +34,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.storage.cache.ItemStorageCache;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.tracker.FluidStorageTracker;
|
||||
import com.raoulvdberge.refinedstorage.apiimpl.storage.tracker.ItemStorageTracker;
|
||||
import com.raoulvdberge.refinedstorage.block.ControllerBlock;
|
||||
import com.raoulvdberge.refinedstorage.integration.forgeenergy.EnergyProxy;
|
||||
import com.raoulvdberge.refinedstorage.integration.forgeenergy.BaseEnergyStorage;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.IRedstoneConfigurable;
|
||||
import com.raoulvdberge.refinedstorage.tile.config.RedstoneMode;
|
||||
import com.raoulvdberge.refinedstorage.tile.data.RSSerializers;
|
||||
@@ -82,8 +80,8 @@ public class ControllerTile extends BaseTile implements ITickableTileEntity, INe
|
||||
|
||||
public static final TileDataParameter<Integer, ControllerTile> REDSTONE_MODE = RedstoneMode.createParameter();
|
||||
public static final TileDataParameter<Integer, ControllerTile> ENERGY_USAGE = new TileDataParameter<>(DataSerializers.VARINT, 0, ControllerTile::getEnergyUsage);
|
||||
public static final TileDataParameter<Integer, ControllerTile> ENERGY_STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getEnergy().getStored());
|
||||
public static final TileDataParameter<Integer, ControllerTile> ENERGY_CAPACITY = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.getEnergy().getCapacity());
|
||||
public static final TileDataParameter<Integer, ControllerTile> ENERGY_STORED = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.energy.getEnergyStored());
|
||||
public static final TileDataParameter<Integer, ControllerTile> ENERGY_CAPACITY = new TileDataParameter<>(DataSerializers.VARINT, 0, t -> t.energy.getMaxEnergyStored());
|
||||
public static final TileDataParameter<List<ClientNode>, ControllerTile> NODES = new TileDataParameter<>(RSSerializers.CLIENT_NODE_SERIALIZER, new ArrayList<>(), t -> {
|
||||
List<ClientNode> nodes = new ArrayList<>();
|
||||
|
||||
@@ -140,10 +138,9 @@ public class ControllerTile extends BaseTile implements ITickableTileEntity, INe
|
||||
|
||||
private IReaderWriterManager readerWriterManager = new ReaderWriterManager(this);
|
||||
|
||||
private final IEnergy energy = new Energy(RS.SERVER_CONFIG.getController().getCapacity());
|
||||
private final EnergyProxy energyProxy = new EnergyProxy(this.energy, RS.SERVER_CONFIG.getController().getMaxReceive());
|
||||
private final BaseEnergyStorage energy = new BaseEnergyStorage(RS.SERVER_CONFIG.getController().getCapacity(), RS.SERVER_CONFIG.getController().getMaxTransfer());
|
||||
|
||||
private final LazyOptional<IEnergyStorage> energyProxyCap = LazyOptional.of(() -> energyProxy);
|
||||
private final LazyOptional<IEnergyStorage> energyProxyCap = LazyOptional.of(() -> energy);
|
||||
private final LazyOptional<INetworkNodeProxy<ControllerTile>> networkNodeProxyCap = LazyOptional.of(() -> this);
|
||||
|
||||
private boolean throttlingDisabled = true; // Will be enabled after first update
|
||||
@@ -180,11 +177,6 @@ public class ControllerTile extends BaseTile implements ITickableTileEntity, INe
|
||||
nodeGraph.addListener(() -> dataManager.sendParameterToWatchers(ControllerTile.NODES));
|
||||
}
|
||||
|
||||
@Override
|
||||
public IEnergy getEnergy() {
|
||||
return this.energy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public BlockPos getPosition() {
|
||||
return pos;
|
||||
@@ -192,7 +184,7 @@ public class ControllerTile extends BaseTile implements ITickableTileEntity, INe
|
||||
|
||||
@Override
|
||||
public boolean canRun() {
|
||||
return this.energy.getStored() > 0 && redstoneMode.isEnabled(world, pos);
|
||||
return this.energy.getEnergyStored() > 0 && redstoneMode.isEnabled(world, pos);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -225,14 +217,14 @@ public class ControllerTile extends BaseTile implements ITickableTileEntity, INe
|
||||
|
||||
if (type == ControllerBlock.Type.NORMAL) {
|
||||
if (!RS.SERVER_CONFIG.getController().getUseEnergy()) {
|
||||
this.energy.setStored(this.energy.getCapacity());
|
||||
} else if (this.energy.extract(getEnergyUsage(), Action.SIMULATE) >= 0) {
|
||||
this.energy.extract(getEnergyUsage(), Action.PERFORM);
|
||||
this.energy.setStored(this.energy.getMaxEnergyStored());
|
||||
} else if (this.energy.extractEnergy(getEnergyUsage(), true) >= 0) {
|
||||
this.energy.extractEnergy(getEnergyUsage(), false);
|
||||
} else {
|
||||
this.energy.setStored(0);
|
||||
}
|
||||
} else if (type == ControllerBlock.Type.CREATIVE) {
|
||||
this.energy.setStored(this.energy.getCapacity());
|
||||
this.energy.setStored(this.energy.getMaxEnergyStored());
|
||||
}
|
||||
|
||||
boolean canRun = canRun();
|
||||
@@ -538,7 +530,7 @@ public class ControllerTile extends BaseTile implements ITickableTileEntity, INe
|
||||
public CompoundNBT write(CompoundNBT tag) {
|
||||
super.write(tag);
|
||||
|
||||
tag.putInt(NBT_ENERGY, this.energy.getStored());
|
||||
tag.putInt(NBT_ENERGY, this.energy.getEnergyStored());
|
||||
|
||||
redstoneMode.write(tag);
|
||||
|
||||
@@ -584,7 +576,7 @@ public class ControllerTile extends BaseTile implements ITickableTileEntity, INe
|
||||
return ControllerBlock.EnergyType.OFF;
|
||||
}
|
||||
|
||||
return getEnergyType(this.energy.getStored(), this.energy.getCapacity());
|
||||
return getEnergyType(this.energy.getEnergyStored(), this.energy.getMaxEnergyStored());
|
||||
}
|
||||
|
||||
public static ControllerBlock.EnergyType getEnergyType(int stored, int capacity) {
|
||||
|
||||
Reference in New Issue
Block a user