forked from Flaxbeard/Thaumic_Exploration
-
Notifications
You must be signed in to change notification settings - Fork 10
/
TileEntityEverburnUrn.java
157 lines (136 loc) · 4.85 KB
/
TileEntityEverburnUrn.java
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
package flaxbeard.thaumicexploration.tile;
import flaxbeard.thaumicexploration.ThaumicExploration;
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.*;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.common.config.Config;
import thaumcraft.common.config.ConfigBlocks;
import thaumcraft.common.tiles.TileCrucible;
import thaumcraft.common.tiles.TileVisRelay;
import java.util.List;
//import flaxbeard.thaumicexploration.integration.BotaniaIntegration;
public class TileEntityEverburnUrn extends TileVisRelay implements IFluidTank,IFluidHandler {
private int ticks = 0;
private int drainTicks = 0;
public float ignisVis;
private int dX;
private int dY;
private int dZ;
private int excessTicks = 0;
private int drainType = 0;
private float distance = 0;
private int range = 3;
private int yRange = 2;
private EntityPlayer burningPlayer;
public static int CONVERSION_FACTOR=250;
@Override
public void readCustomNBT(NBTTagCompound nbttagcompound) {
super.readCustomNBT(nbttagcompound);
ignisVis=nbttagcompound.getFloat("ignisVis");
}
@Override
public void writeCustomNBT(NBTTagCompound nbttagcompound) {
super.writeCustomNBT(nbttagcompound);
nbttagcompound.setFloat("ignisVis",ignisVis);
}
@Override
public FluidStack getFluid() {
// TODO Auto-generated method stub
return new FluidStack(FluidRegistry.LAVA, (int)Math.floor(ignisVis*CONVERSION_FACTOR));
}
@Override
public int getFluidAmount() {
// TODO Auto-generated method stub
return (int)Math.floor(ignisVis*CONVERSION_FACTOR);
}
@Override
public int getCapacity() {
// TODO Auto-generated method stub
return 4*CONVERSION_FACTOR;
}
@Override
public FluidTankInfo getInfo() {
// TODO Auto-generated method stub
return new FluidTankInfo(this);
}
@Override
public int fill(FluidStack resource, boolean doFill) {
// TODO Auto-generated method stub
return 0;
}
@Override
public FluidStack drain(int maxDrain, boolean doDrain) {
// TODO Auto-generated method stub
float drained = maxDrain;
if (getFluidAmount() < drained) {
drained = getFluidAmount();
}
if(doDrain) {
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
ignisVis=ignisVis-(drained/250);
}
FluidStack stack = new FluidStack(FluidRegistry.LAVA, (int)drained);
return stack;
}
@Override
public int fill(ForgeDirection from, FluidStack resource, boolean doFill) {
// TODO Auto-generated method stub
return this.fill(resource, doFill);
}
@Override
public FluidStack drain(ForgeDirection from, FluidStack resource,
boolean doDrain) {
// TODO Auto-generated method stub
if (!resource.isFluidEqual(new FluidStack(FluidRegistry.LAVA, 1)) || !(from == ForgeDirection.UP)) {
return null;
}
if(doDrain)
worldObj.markBlockForUpdate(xCoord,yCoord,zCoord);
return this.drain(resource.amount, doDrain);
}
@Override
public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) {
// TODO Auto-generated method stub
if (from == ForgeDirection.UP) {
if(doDrain)
worldObj.markBlockForUpdate(xCoord,yCoord,zCoord);
return this.drain(maxDrain, doDrain);
} else {
FluidStack stack = new FluidStack(FluidRegistry.LAVA, 0);
return stack;
}
}
@Override
public boolean canFill(ForgeDirection from, Fluid fluid) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean canDrain(ForgeDirection from, Fluid fluid) {
// TODO Auto-generated method stub
return (from == ForgeDirection.UP);
}
@Override
public FluidTankInfo[] getTankInfo(ForgeDirection from) {
// TODO Auto-generated method stub
return new FluidTankInfo[]{this.getInfo()};
}
@Override
public void updateEntity() {
super.updateEntity();
this.ticks++;
if(this.ticks==10) {
if (this.ignisVis < 16) {
ignisVis += this.consumeVis(Aspect.FIRE, 1);
worldObj.markBlockForUpdate(xCoord,yCoord,zCoord);
}
ticks=0;
}
}
}