1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
package cofh.energy;
import net.minecraft.nbt.NBTTagCompound;
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;
}
public EnergyStorage readFromNBT(NBTTagCompound nbt)
{
this.energy = nbt.getInteger("Energy");
if (this.energy > this.capacity) {
this.energy = this.capacity;
}
return this;
}
public NBTTagCompound writeToNBT(NBTTagCompound nbt)
{
if (this.energy < 0) {
this.energy = 0;
}
nbt.setInteger("Energy", this.energy);
return nbt;
}
public void setCapacity(int capacity)
{
this.capacity = capacity;
if (this.energy > capacity) {
this.energy = capacity;
}
}
public void setMaxTransfer(int maxTransfer)
{
setMaxReceive(maxTransfer);
setMaxExtract(maxTransfer);
}
public void setMaxReceive(int maxReceive)
{
this.maxReceive = maxReceive;
}
public void setMaxExtract(int maxExtract)
{
this.maxExtract = maxExtract;
}
public int getMaxReceive()
{
return this.maxReceive;
}
public int getMaxExtract()
{
return this.maxExtract;
}
public void setEnergyStored(int energy)
{
this.energy = energy;
if (this.energy > this.capacity) {
this.energy = this.capacity;
} else if (this.energy < 0) {
this.energy = 0;
}
}
public void modifyEnergyStored(int energy)
{
this.energy += energy;
if (this.energy > this.capacity) {
this.energy = this.capacity;
} else if (this.energy < 0) {
this.energy = 0;
}
}
public int receiveEnergy(int maxReceive, boolean simulate)
{
int energyReceived = Math.min(this.capacity - this.energy, Math.min(this.maxReceive, maxReceive));
if (!simulate) {
this.energy += energyReceived;
}
return energyReceived;
}
public int extractEnergy(int maxExtract, boolean simulate)
{
int energyExtracted = Math.min(this.energy, Math.min(this.maxExtract, maxExtract));
if (!simulate) {
this.energy -= energyExtracted;
}
return energyExtracted;
}
public int getEnergyStored()
{
return this.energy;
}
public int getMaxEnergyStored()
{
return this.capacity;
}
}
|