Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.minecraftforge.energy;
- /**
- * Reference implementation of {@link IEnergyStorage}. Use/extend this or implement your own.
- *
- * Derived from the Redstone Flux power system designed by King Lemming and originally utilized in Thermal Expansion and related mods.
- * Created with consent and permission of King Lemming and Team CoFH. Released with permission under LGPL 2.1 when bundled with Forge.
- */
- public class EnergyStorage implements IEnergyStorage
- {
- protected int energy;
- protected int capacity;
- protected int maxReceive;
- protected int maxExtract;
- public EnergyStorage(int capacity)
- {
- this(capacity, capacity, capacity);
- }
- public EnergyStorage(int capacity, int maxTransfer)
- {
- this(capacity, maxTransfer, maxTransfer);
- }
- public EnergyStorage(int capacity, int maxReceive, int maxExtract)
- {
- this.capacity = capacity;
- this.maxReceive = maxReceive;
- this.maxExtract = maxExtract;
- }
- @Override
- public int receiveEnergy(int maxReceive, boolean simulate)
- {
- if (!canReceive())
- return 0;
- int energyReceived = Math.min(capacity - energy, Math.min(this.maxReceive, maxReceive));
- if (!simulate)
- energy += energyReceived;
- return energyReceived;
- }
- @Override
- public int extractEnergy(int maxExtract, boolean simulate)
- {
- if (!canExtract())
- return 0;
- int energyExtracted = Math.min(energy, Math.min(this.maxExtract, maxExtract));
- if (!simulate)
- energy -= energyExtracted;
- return energyExtracted;
- }
- @Override
- public int getEnergyStored()
- {
- return energy;
- }
- @Override
- public int getMaxEnergyStored()
- {
- return capacity;
- }
- @Override
- public boolean canExtract()
- {
- return this.maxExtract > 0;
- }
- @Override
- public boolean canReceive()
- {
- return this.maxReceive > 0;
- }
- }
Add Comment
Please, Sign In to add comment