diff options
| author | Foghrye4 <foghrye4@gmail.com> | 2017-02-12 20:43:03 +0300 |
|---|---|---|
| committer | Foghrye4 <foghrye4@gmail.com> | 2017-02-12 20:43:03 +0300 |
| commit | 5cb4c6e24033cf337812390d99a6817d24d21eab (patch) | |
| tree | 695789855920199efd4702a7bb3e4bacfe58b9f0 /ihl/crop_harvestors/BlowerTileEntity.java | |
| parent | 8f22398517206aed21a7fd840f463332429fae35 (diff) | |
Removed explosion radius limitations. Explosion calculation optimized (reduced memory usage). One more detonator and explosive pack recipe. GT6 recipes for both chemical reactors and cryogenic distiller. Max stack size of muffle furnace is limited to 32. A lot of old features are removed.
Diffstat (limited to 'ihl/crop_harvestors/BlowerTileEntity.java')
| -rw-r--r-- | ihl/crop_harvestors/BlowerTileEntity.java | 1065 |
1 files changed, 0 insertions, 1065 deletions
diff --git a/ihl/crop_harvestors/BlowerTileEntity.java b/ihl/crop_harvestors/BlowerTileEntity.java deleted file mode 100644 index e26632b..0000000 --- a/ihl/crop_harvestors/BlowerTileEntity.java +++ /dev/null @@ -1,1065 +0,0 @@ -package ihl.crop_harvestors;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
-
-import net.minecraft.block.Block;
-import net.minecraft.client.gui.GuiScreen;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.item.EntityItem;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.AxisAlignedBB;
-import net.minecraftforge.common.MinecraftForge;
-import net.minecraftforge.common.util.ForgeDirection;
-import ic2.api.energy.event.EnergyTileLoadEvent;
-import ic2.api.energy.event.EnergyTileUnloadEvent;
-import ic2.api.energy.tile.IEnergySink;
-import ic2.api.item.IC2Items;
-import ic2.core.ContainerBase;
-import ic2.core.IC2;
-import ic2.core.IHasGui;
-import ic2.core.audio.AudioSource;
-import ic2.core.audio.PositionSpec;
-import ic2.core.block.TileEntityInventory;
-import ic2.core.block.invslot.InvSlot;
-import ic2.core.block.invslot.InvSlotUpgrade;
-import ic2.core.block.invslot.InvSlot.Access;
-import ic2.core.upgrade.IUpgradableBlock;
-import ic2.core.upgrade.UpgradableProperty;
-import ihl.IHLMod;
-import ihl.utils.IHLInvSlotDischarge;
-
-public class BlowerTileEntity extends TileEntityInventory implements IEnergySink, IHasGui, IUpgradableBlock
-{
- private int startUpCounter=0;
- private int tier=1;
- private int defaultTier=1;
- public int maxStorage=100;
- private int defaultMaxStorage=100;
- private double energy=0D;
- private double defaultEnergyConsume=5D;
- private double energyConsume=5D;
- private int defaultAirSpeedBase=100;
- public int airSpeedBase=100;
- private int sCAFCount=0;
- public boolean addedToEnergyNet = false;
- private ArrayList<AirSpeedZone> aszlist = new ArrayList<AirSpeedZone>();
- public final InvSlotUpgrade upgradeSlot;
- public final IHLInvSlotDischarge dischargeSlot;
- public int updateChecksum=-1;
- private final float lambda=0.00001F;
- public int operationRange=-1;
- public int lastOperationRange=0;
-
- private AudioSource startAS;
- private AudioSource loopAS;
- private AudioSource stopAS;
-
- public BlowerTileEntity()
- {
- this.defaultTier=IHLMod.config.blowerTier;
- this.defaultMaxStorage=IHLMod.config.blowerMaxEnergyStorage;
- this.defaultEnergyConsume=IHLMod.config.blowerEnergyConsumePerTick;
- this.upgradeSlot = new InvSlotUpgrade(this, "upgrade", 2, 4);
- this.dischargeSlot = new IHLInvSlotDischarge(this, 1, Access.IO, this.tier, InvSlot.InvSide.BOTTOM);
- }
-
- @Override
- public List<String> getNetworkedFields()
- {
- List<String> fields = super.getNetworkedFields();
- fields.add("tier");
- fields.add("airSpeedBase");
- fields.add("maxStorage");
- return fields;
- }
-
- @Override
- public void readFromNBT(NBTTagCompound nbttagcompound)
- {
- super.readFromNBT(nbttagcompound);
- try
- {
- this.energy = nbttagcompound.getDouble("energy");
- }
- catch (Exception var3)
- {
- this.energy = nbttagcompound.getInteger("energy");
-
- if (this.maxStorage > Integer.MAX_VALUE)
- {
- this.energy *= 10.0D;
- }
- }
- }
-
- @Override
- public void writeToNBT(NBTTagCompound nbttagcompound)
- {
- super.writeToNBT(nbttagcompound);
- nbttagcompound.setDouble("energy", this.energy);
- }
-
- @Override
- public void onLoaded()
- {
- super.onLoaded();
- if (IC2.platform.isSimulating())
- {
- MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this));
- this.addedToEnergyNet = true;
- }
- if (IC2.platform.isRendering() && (this.startAS==null||this.loopAS==null||this.stopAS==null))
- {
- this.startAS = IC2.audioManager.createSource(this, PositionSpec.Center, this.getStartSoundFile(),false,false, 1F);
- this.loopAS = IC2.audioManager.createSource(this, PositionSpec.Center, this.getLoopSoundFile(),true,false, 1F);
- this.stopAS = IC2.audioManager.createSource(this, PositionSpec.Center, this.getStopSoundFile(),false,false, 1F);
- }
- }
-
- @Override
- public void onUnloaded()
- {
- if (IC2.platform.isRendering() && this.loopAS != null)
- {
- this.startAS.stop();
- this.loopAS.stop();
- this.stopAS.stop();
- this.startAS = null;
- this.loopAS = null;
- this.stopAS = null;
- IC2.audioManager.removeSources(this);
- }
-
- if (IC2.platform.isSimulating() && this.addedToEnergyNet)
- {
- MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent(this));
- this.addedToEnergyNet = false;
- }
- super.onUnloaded();
- }
-
- @Override
- public boolean wrenchCanSetFacing(EntityPlayer entityPlayer, int side) {
- return this.getFacing()!=(short)side;
- }
-
- @Override
- public ItemStack getWrenchDrop(EntityPlayer entityPlayer) {
- if(this.dischargeSlot.get()!=null)this.worldObj.spawnEntityInWorld(new EntityItem(this.worldObj, this.xCoord, this.yCoord+1, this.zCoord, this.dischargeSlot.get()));
- if(this.upgradeSlot.get(0)!=null)this.worldObj.spawnEntityInWorld(new EntityItem(this.worldObj, this.xCoord, this.yCoord+1, this.zCoord, this.upgradeSlot.get(0)));
- if(this.upgradeSlot.get(1)!=null)this.worldObj.spawnEntityInWorld(new EntityItem(this.worldObj, this.xCoord, this.yCoord+1, this.zCoord, this.upgradeSlot.get(1)));
- if(this.upgradeSlot.get(2)!=null)this.worldObj.spawnEntityInWorld(new EntityItem(this.worldObj, this.xCoord, this.yCoord+1, this.zCoord, this.upgradeSlot.get(2)));
- if(this.upgradeSlot.get(3)!=null)this.worldObj.spawnEntityInWorld(new EntityItem(this.worldObj, this.xCoord, this.yCoord+1, this.zCoord, this.upgradeSlot.get(3)));
- return new ItemStack(IHLMod.blowerBlock,1);
- }
-
- @Override
- public void setFacing(short facing1)
- {
- super.setFacing(facing1);
- this.updateChecksum=-1;
- }
-
- public boolean enableUpdateEntity()
- {
- return true;
- }
-
- public String getStartSoundFile()
- {
- return "Machines/IHL Industrial Fan/start.ogg";
- }
-
- public String getLoopSoundFile()
- {
- return "Machines/IHL Industrial Fan/loop.ogg";
- }
-
- public String getStopSoundFile()
- {
- return "Machines/IHL Industrial Fan/stop.ogg";
- }
-
- @Override
- public void updateEntityClient()
- {
- this.updateBoth();
- if(IC2.platform.isRendering() && this.loopAS!=null)
- {
- if(this.getActive())
- {
- if(this.startUpCounter>12)
- {
- this.startUpCounter=0;
- }
- if(this.startUpCounter==0)
- {
- this.stopAS.stop();
- this.startAS.play();
- }
- if(this.startUpCounter<10)
- {
- this.startUpCounter++;
- }
- else if(this.startUpCounter==10)
- {
- this.startAS.stop();
- this.loopAS.play();
- this.startUpCounter++;
- }
- }
- else if(this.startUpCounter>0)
- {
- this.startAS.stop();
- this.loopAS.stop();
- this.stopAS.play();
- if(this.startUpCounter<170)
- {
- this.startUpCounter++;
- }
- else
- {
- this.startUpCounter=0;
- this.stopAS.stop();
- }
- }
- }
- else if(IC2.platform.isRendering() && !this.getActive() && this.loopAS!=null)
- {
- this.loopAS.stop();
- }
- }
-
- public void updateBoth()
- {
- if(this.dischargeSlot.tier!=this.tier)
- {
- this.dischargeSlot.tier=this.tier;
- }
- }
-
-
- @SuppressWarnings("unchecked")
- @Override
- public void updateEntityServer()
- {
-
- if (IC2.platform.isSimulating())
- {
- this.setOverclockRates();
- }
- this.updateBoth();
- if(this.getDemandedEnergy() > 1.0D)
- {
- double amount = this.dischargeSlot.discharge(this.getDemandedEnergy(), false);
- this.energy += amount;
- }
- if(this.energy>this.maxStorage)
- {
- this.energy=this.maxStorage;
- }
- if(IC2.platform.isSimulating()&&!this.getActive()&&this.energy>=this.energyConsume*2D)
- {
- this.setActive(true);
- }
- else if(IC2.platform.isSimulating()&&this.getActive()&&this.energy<this.energyConsume)
- {
- this.setActive(false);
- }
- if(!this.aszlist.isEmpty() && this.getActive())
- {
- if(this.energy>=this.energyConsume)this.energy-=this.energyConsume;
- Iterator<AirSpeedZone> it = this.aszlist.iterator();
- a:while(it.hasNext())
- {
- AirSpeedZone asz = it.next();
- List<Entity> entityList = worldObj.getEntitiesWithinAABB(Entity.class, asz.getAABB());
- if(!entityList.isEmpty())
- {
- if(this.sCAFCount<=0)
- {
- this.aszlist.clear();
- this.calculateAirSpeed();
- this.sCAFCount=40;
- break a;
- }
- Iterator<Entity> ei = entityList.iterator();
- while(ei.hasNext())
- {
- Entity ent = ei.next();
- if(asz.isEntityMoveable(ent))
- {
- if(ent instanceof EntityPlayer)
- {
- if(worldObj.isRemote)
- {
- ent.addVelocity(mX()*0.1D, mY()*0.05D, mZ()*0.1D);
- }
- }
- else
- {
- ent.addVelocity(mX()*0.1D, mY()*0.05D, mZ()*0.1D);
- }
- }
- }
- }
- }
-
- }
- if(this.sCAFCount>0)
- {
- this.sCAFCount--;
- }
- else
- {
- this.calculateAirSpeed();
- if(this.operationRange==this.lastOperationRange)
- {
- this.sCAFCount=600;
- }
- else
- {
- this.sCAFCount=20;
- this.lastOperationRange=this.operationRange;
- }
- }
-
-
- }
-
- private void calculateAirSpeed()
- {
- int x=xCoord;
- int y=yCoord;
- int z=zCoord;
- int airSpeed=airSpeedBase;
- int x0,y0,z0;
- x0=x;
- y0=y;
- z0=z;
- int flowExtL=0;
- int flowExtR=0;
- int flowExtT=0;
- int flowExtB=0;
- int flowCanBeExtL=0;
- int flowCanBeExtR=0;
- int flowCanBeExtT=0;
- int flowCanBeExtB=0;
-
- int checkFlowL=0;
- int checkFlowR=0;
- int checkFlowT=0;
- int checkFlowB=0;
-
- checkFlowL = Math.max(
- this.neighborBlowerOperationRange(this.xCoord+mXL()+mX(), this.yCoord+mYL()+mY(),this.zCoord+mZL()+mZ()),
- this.neighborBlowerOperationRange(this.xCoord+mXL()-mX(), this.yCoord+mYL()-mY(), this.zCoord+mZL()-mZ())
- );
- checkFlowR = Math.max(
- this.neighborBlowerOperationRange(this.xCoord-mXL()+mX(), this.yCoord-mYL()+mY(),this.zCoord-mZL()+mZ()),
- this.neighborBlowerOperationRange(this.xCoord-mXL()-mX(), this.yCoord-mYL()-mY(), this.zCoord-mZL()-mZ())
- );
- checkFlowT = Math.max(Math.max(
- this.neighborBlowerOperationRange(this.xCoord+mXT()+mX(), this.yCoord+mYT()+mY(),this.zCoord+mZT()+mZ()),
- this.neighborBlowerOperationRange(this.xCoord+mXT()-mX(), this.yCoord+mYT()-mY(), this.zCoord+mZT()-mZ())
- ),
- this.neighborBlowerOperationRange(this.xCoord+mXT(), this.yCoord+mYT(),this.zCoord+mZT()));
- checkFlowB = Math.max(Math.max(
- this.neighborBlowerOperationRange(this.xCoord-mXT()+mX(), this.yCoord-mYT()+mY(),this.zCoord-mZT()+mZ()),
- this.neighborBlowerOperationRange(this.xCoord-mXT()-mX(), this.yCoord-mYT()-mY(), this.zCoord-mZT()-mZ())
- ),
- this.neighborBlowerOperationRange(this.xCoord-mXT(), this.yCoord-mYT(),this.zCoord-mZT()));
- int asg = this.getAirSpeedGrade(airSpeed);
- a:for(int step=0;step<256;step++)
- {
- x+=mX();
- y+=mY();
- z+=mZ();
- airSpeed-=Math.round(lambda*(airSpeed*airSpeed))+1;
- asg = this.getAirSpeedGrade(airSpeed);
- if(asg==0)
- {
- break;
- }
- int i1,i2,il,ir,it,ib;
- i1=0;i2=0;il=0;ir=0;it=0;ib=0;
- for(int tb=-flowExtB;tb<=flowExtT;tb++)
- {
- i1++;
- if(this.isAirPassable(x+mXL()*(flowExtL+1)+mXT()*tb,y+mYL()*(flowExtL+1)+mYT()*tb,z+mZL()*(flowExtL+1)+mZT()*tb))
- {
- il++;
- }
- if(this.isAirPassable(x-mXL()*(flowExtR+1)+mXT()*tb,y-mYL()*(flowExtR+1)+mYT()*tb,z-mZL()*(flowExtR+1)+mZT()*tb))
- {
- ir++;
- }
- }
- if(i1==il && step>=checkFlowL)
- {
- flowCanBeExtL++;
- }
- if(i1==ir && step>=checkFlowR)
- {
- flowCanBeExtR++;
- }
- for(int lr=-flowExtL;lr<=flowExtR;lr++)
- {
- i2++;
- if(this.isAirPassable(x+mXT()*(flowExtT+1)+mXL()*lr,y+mYT()*(flowExtT+1)+mYL()*lr,z+mZT()*(flowExtT+1)+mZL()*lr))
- {
- it++;
- }
- if(this.isAirPassable(x-mXT()*(flowExtB+1)+mXL()*lr,y-mYT()*(flowExtB+1)+mYL()*lr,z-mZT()*(flowExtB+1)+mZL()*lr))
- {
- ib++;
- }
- }
- if(i2==it && step>=checkFlowT)
- {
- flowCanBeExtT++;
- }
- if(i2==ib && step>=checkFlowB)
- {
- flowCanBeExtB++;
- }
- airSpeed-=Math.round(lambda*(airSpeed*airSpeed)*(il+ir+it+ib))+il+ir+it+ib;
- asg = this.getAirSpeedGrade(airSpeed);
- if(asg==0)
- {
- this.operationRange=step;
- break;
- }
- if(flowCanBeExtB>=4)
- {
- flowCanBeExtB=0;
- this.aszlist.add(new AirSpeedZone(asg,
- x0-mXL()*flowExtR-mXT()*flowExtB,
- y0-mYL()*flowExtR-mYT()*flowExtB,
- z0-mZL()*flowExtR-mZT()*flowExtB,
- x-mX()+mXL()*flowExtL+mXT()*flowExtT,
- y-mY()+mYL()*flowExtL+mYT()*flowExtT,
- z-mZ()+mZL()*flowExtL+mZT()*flowExtT));
- x0=x;
- y0=y;
- z0=z;
- int s0=(flowExtR+flowExtL+1)*(flowExtT+flowExtB+1);
- flowExtB++;
- int s1=(flowExtR+flowExtL+1)*(flowExtT+flowExtB+1);
- airSpeed=airSpeed*s0/s1;
- }
- else if(flowCanBeExtT>=4)
- {
- flowCanBeExtT=0;
- this.aszlist.add(new AirSpeedZone(asg,
- x0-mXL()*flowExtR-mXT()*flowExtB,
- y0-mYL()*flowExtR-mYT()*flowExtB,
- z0-mZL()*flowExtR-mZT()*flowExtB,
- x-mX()+mXL()*flowExtL+mXT()*flowExtT,
- y-mY()+mYL()*flowExtL+mYT()*flowExtT,
- z-mZ()+mZL()*flowExtL+mZT()*flowExtT));
- x0=x;
- y0=y;
- z0=z;
- int s0=(flowExtR+flowExtL+1)*(flowExtT+flowExtB+1);
- flowExtT++;
- int s1=(flowExtR+flowExtL+1)*(flowExtT+flowExtB+1);
- airSpeed=airSpeed*s0/s1;
- }
- else if(flowCanBeExtR>=4)
- {
- flowCanBeExtR=0;
- this.aszlist.add(new AirSpeedZone(asg,
- x0-mXL()*flowExtR-mXT()*flowExtB,
- y0-mYL()*flowExtR-mYT()*flowExtB,
- z0-mZL()*flowExtR-mZT()*flowExtB,
- x-mX()+mXL()*flowExtL+mXT()*flowExtT,
- y-mY()+mYL()*flowExtL+mYT()*flowExtT,
- z-mZ()+mZL()*flowExtL+mZT()*flowExtT));
- x0=x;
- y0=y;
- z0=z;
- int s0=(flowExtR+flowExtL+1)*(flowExtT+flowExtB+1);
- flowExtR++;
- int s1=(flowExtR+flowExtL+1)*(flowExtT+flowExtB+1);
- airSpeed=airSpeed*s0/s1;
- }
- else if(flowCanBeExtL>=3)
- {
- flowCanBeExtL=0;
- this.aszlist.add(new AirSpeedZone(asg,
- x0-mXL()*flowExtR-mXT()*flowExtB,
- y0-mYL()*flowExtR-mYT()*flowExtB,
- z0-mZL()*flowExtR-mZT()*flowExtB,
- x-mX()+mXL()*flowExtL+mXT()*flowExtT,
- y-mY()+mYL()*flowExtL+mYT()*flowExtT,
- z-mZ()+mZL()*flowExtL+mZT()*flowExtT));
- x0=x;
- y0=y;
- z0=z;
- int s0=(flowExtR+flowExtL+1)*(flowExtT+flowExtB+1);
- flowExtL++;
- int s1=(flowExtR+flowExtL+1)*(flowExtT+flowExtB+1);
- airSpeed=airSpeed*s0/s1;
- }
- else if(flowCanBeExtR>=3)
- {
- flowCanBeExtR=0;
- this.aszlist.add(new AirSpeedZone(asg,
- x0-mXL()*flowExtR-mXT()*flowExtB,
- y0-mYL()*flowExtR-mYT()*flowExtB,
- z0-mZL()*flowExtR-mZT()*flowExtB,
- x-mX()+mXL()*flowExtL+mXT()*flowExtT,
- y-mY()+mYL()*flowExtL+mYT()*flowExtT,
- z-mZ()+mZL()*flowExtL+mZT()*flowExtT));
- x0=x;
- y0=y;
- z0=z;
- int s0=(flowExtR+flowExtL+1)*(flowExtT+flowExtB+1);
- flowExtR++;
- int s1=(flowExtR+flowExtL+1)*(flowExtT+flowExtB+1);
- airSpeed=airSpeed*s0/s1;
- }
- else if(flowCanBeExtT>=3)
- {
- flowCanBeExtT=0;
- this.aszlist.add(new AirSpeedZone(asg,
- x0-mXL()*flowExtR-mXT()*flowExtB,
- y0-mYL()*flowExtR-mYT()*flowExtB,
- z0-mZL()*flowExtR-mZT()*flowExtB,
- x-mX()+mXL()*flowExtL+mXT()*flowExtT,
- y-mY()+mYL()*flowExtL+mYT()*flowExtT,
- z-mZ()+mZL()*flowExtL+mZT()*flowExtT));
- x0=x;
- y0=y;
- z0=z;
- int s0=(flowExtR+flowExtL+1)*(flowExtT+flowExtB+1);
- flowExtT++;
- int s1=(flowExtR+flowExtL+1)*(flowExtT+flowExtB+1);
- airSpeed=airSpeed*s0/s1;
- }
- else if(flowCanBeExtB>=3)
- {
- flowCanBeExtB=0;
- this.aszlist.add(new AirSpeedZone(asg,
- x0-mXL()*flowExtR-mXT()*flowExtB,
- y0-mYL()*flowExtR-mYT()*flowExtB,
- z0-mZL()*flowExtR-mZT()*flowExtB,
- x-mX()+mXL()*flowExtL+mXT()*flowExtT,
- y-mY()+mYL()*flowExtL+mYT()*flowExtT,
- z-mZ()+mZL()*flowExtL+mZT()*flowExtT));
- x0=x;
- y0=y;
- z0=z;
- int s0=(flowExtR+flowExtL+1)*(flowExtT+flowExtB+1);
- flowExtB++;
- int s1=(flowExtR+flowExtL+1)*(flowExtT+flowExtB+1);
- airSpeed=airSpeed*s0/s1;
- }
- for(int tb=-flowExtB;tb<=flowExtT;tb++)
- {
- for(int lr=-flowExtR;lr<=flowExtL;lr++)
- {
- if(!this.isAirPassable(x+mXL()*lr+mXT()*tb+mX(),y+mYL()*lr+mYT()*tb+mY(),z+mZL()*lr+mZT()*tb+mZ()))
- {
- if(lr==0 && tb==0)
- {
- //System.out.println("Flow breakened by wall check at step="+step);
- this.operationRange=step;
- break a;
- }
- else
- {
- this.aszlist.add(new AirSpeedZone(asg,
- x0-mXL()*flowExtR-mXT()*flowExtB,
- y0-mYL()*flowExtR-mYT()*flowExtB,
- z0-mZL()*flowExtR-mZT()*flowExtB,
- x-mX()+mXL()*flowExtL+mXT()*flowExtT,
- y-mY()+mYL()*flowExtL+mYT()*flowExtT,
- z-mZ()+mZL()*flowExtL+mZT()*flowExtT));
- x0=x;
- y0=y;
- z0=z;
- if(lr>0)
- {
- flowExtL=lr-1;
- }
- else if(lr<0)
- {
- flowExtR=-1-lr;
- }
- if(tb>0)
- {
- flowExtT=tb-1;
- }
- else if(tb<0)
- {
- flowExtB=-1-tb;
- }
- }
- }
- }
- }
- //System.out.println("Airspeed at step="+step+"equals="+airSpeed);
- }
- if(asg>0)
- {
- this.aszlist.add(new AirSpeedZone(asg,
- x0-mXL()*flowExtR-mXT()*flowExtB,
- y0-mYL()*flowExtR-mYT()*flowExtB,
- z0-mZL()*flowExtR-mZT()*flowExtB,
- x+mXL()*flowExtL+mXT()*flowExtT,
- y+mYL()*flowExtL+mYT()*flowExtT,
- z+mZL()*flowExtL+mZT()*flowExtT));
- }
- }
-
-
- @Override
- public boolean acceptsEnergyFrom(TileEntity emitter,
- ForgeDirection direction) {
- switch(direction)
- {
- case UP:
- return mY()!=1;
- case DOWN:
- return mY()!=-1;
- case NORTH:
- return mZ()!=-1 && mZL()==0;
- case EAST:
- return mX()!=1 && mXL()==0;
- case SOUTH:
- return mZ()!=1 && mZL()==0;
- case WEST:
- return mX()!=-1 && mXL()==0;
- default:
- return false;
- }
- }
-
- private boolean isAirPassable(int x,int y,int z)
- {
- Block block = worldObj.getBlock(x,y,z);
- if(block!=null && !block.isNormalCube(worldObj,x,y,z))
- {
- if(
- !block.isCollidable() ||
- block.isAir(worldObj,x, y, z) ||
- block.getBlockBoundsMinX()>0.15D ||
- block.getBlockBoundsMaxX()<0.85D ||
- block.getBlockBoundsMinY()>0.15D ||
- block.getBlockBoundsMaxY()<0.85D ||
- block.getBlockBoundsMinZ()>0.15D ||
- block.getBlockBoundsMaxZ()<0.85D
- )
- {
- return true;
- }
- else
- {
- AxisAlignedBB cb = block.getCollisionBoundingBoxFromPool(worldObj, x, y, z);
- if(cb!=null)
- {
- if(
- cb.maxX<=1D &&
- cb.maxX>=0D &&
- cb.minX<=1D &&
- cb.minX>=0D &&
- cb.maxY<=1D &&
- cb.maxY>=0D &&
- cb.minY<=1D &&
- cb.minY>=0D &&
- cb.maxZ<=1D &&
- cb.maxZ>=0D &&
- cb.minZ<=1D &&
- cb.minZ>=0D
- )
- {
- if(
- cb.maxX<0.85D||
- cb.minX>0.15D||
- cb.maxY<0.85D||
- cb.minY>0.15D||
- cb.maxZ<0.85D||
- cb.minZ>0.15D
- )
- {
- return true;
- }
- }
- }
- }
- }
- return false;
- }
-
- private int getAirSpeedGrade(int airSpeed)
- {
- if(airSpeed<30)
- {
- return 0;
- }
- else if(airSpeed<100)
- {
- return 1;
- }
- else if(airSpeed<200)
- {
- return 2;
- }
- else if(airSpeed<300)
- {
- return 3;
- }
- else if(airSpeed<400)
- {
- return 4;
- }
- else if(airSpeed<500)
- {
- return 5;
- }
- else if(airSpeed<600)
- {
- return 6;
- }
- else
- {
- return 7;
- }
- }
-
- private class AirSpeedZone
- {
- private int airSpeedGrade, x0, y0, z0, x1, y1, z1;
- public AirSpeedZone(int airSpeedGrade1, int vx0, int vy0, int vz0, int vx1,int vy1,int vz1)
- {
- this.airSpeedGrade=airSpeedGrade1;
- this.x0=vx0;
- this.y0=vy0;
- this.z0=vz0;
- this.x1=vx1;
- this.y1=vy1;
- this.z1=vz1;
- }
-
- public AxisAlignedBB getAABB()
- {
- return AxisAlignedBB.getBoundingBox(Math.min(x0,x1), Math.min(y0,y1), Math.min(z0,z1), Math.max(x0,x1)+1D, Math.max(y0,y1)+1D, Math.max(z0,z1)+1D);
- }
-
- @Override
- public boolean equals(Object obj)
- {
- if(obj instanceof AirSpeedZone)
- {
- AirSpeedZone asz = (AirSpeedZone)obj;
- return (
- this.x0==asz.x0 &&
- this.y0==asz.y0 &&
- this.z0==asz.z0 &&
- this.x1==asz.x1 &&
- this.y1==asz.y1 &&
- this.z1==asz.z1);
- }
- return false;
- }
-
- public boolean isEntityMoveable(Entity entity)
- {
- if(this.airSpeedGrade>=7)
- {
- return true;
- }
- else
- {
- return (entity.width+1F)*(entity.height+1F)<=this.airSpeedGrade*2;
- }
- }
- }
-
- private int mX()
- {
- switch(this.getFacing())
- {
- case 4:
- return -1;
- case 5:
- return 1;
- default:
- return 0;
- }
- }
-
- private int mY()
- {
- switch(this.getFacing())
- {
- case 0:
- return -1;
- case 1:
- return 1;
- default:
- return 0;
- }
- }
-
- private int mZ()
- {
- switch(this.getFacing())
- {
- case 2:
- return -1;
- case 3:
- return 1;
- default:
- return 0;
- }
- }
-
- private int mXL()
- {
- switch(this.getFacing())
- {
- case 0:
- return -1;
- case 1:
- return 1;
- case 2:
- return -1;
- case 3:
- return 1;
- default:
- return 0;
- }
- }
-
- private int mYL()
- {
- return 0;
- }
-
- private int mZL()
- {
- switch(this.getFacing())
- {
- case 4:
- return 1;
- case 5:
- return -1;
- default:
- return 0;
- }
- }
-
- private int mXT()
- {
- return 0;
- }
-
- private int mYT()
- {
- switch(this.getFacing())
- {
- case 2:
- return 1;
- case 3:
- return 1;
- case 4:
- return 1;
- case 5:
- return 1;
- default:
- return 0;
- }
- }
-
- private int mZT()
- {
- switch(this.getFacing())
- {
- case 0:
- return 1;
- case 1:
- return -1;
- default:
- return 0;
- }
- }
-
-
-@Override
- public String getInventoryName() {
- return "blower";
- }
-
- public int getStored() {
- return Math.round((float)this.energy);
- }
-
- public void setStored(int value) {
- this.energy=value;
- }
-
- @Override
- @SideOnly(Side.CLIENT)
- public GuiScreen getGui(EntityPlayer arg0, boolean arg1) {
- return new BlowerGui(new BlowerContainer(arg0, this));
- }
-
- public boolean getGui(EntityPlayer player)
- {
- return this instanceof IHasGui ? (IC2.platform.isSimulating() ? IC2.platform.launchGui(player, this) : true) : false;
- }
- @Override
- public ContainerBase<?> getGuiContainer(EntityPlayer arg0) {
- return new BlowerContainer(arg0, this);
- }
- @Override
- public void onGuiClosed(EntityPlayer arg0) {}
-
- public void setOverclockRates()
- {
- int speedUp=0;
- int tierUp=0;
- int capacityUp=0;
- int checksum=0;
- for(int i=0;i<this.upgradeSlot.size();i++)
- {
- if(this.upgradeSlot.get(i)!=null)
- {
- if(this.upgradeSlot.get(i).getItemDamage()==IC2Items.getItem("overclockerUpgrade").getItemDamage())
- {
- speedUp+=this.upgradeSlot.get(i).stackSize;
- }
- if(this.upgradeSlot.get(i).getItemDamage()==IC2Items.getItem("transformerUpgrade").getItemDamage())
- {
- tierUp+=this.upgradeSlot.get(i).stackSize;
- }
- if(this.upgradeSlot.get(i).getItemDamage()==IC2Items.getItem("energyStorageUpgrade").getItemDamage())
- {
- capacityUp+=this.upgradeSlot.get(i).stackSize;
- }
- }
- }
- checksum=speedUp*4096+tierUp*64+capacityUp;
- if(this.updateChecksum!=checksum)
- {
-
- if(
- this.isAirPassable(this.xCoord+mXL(),this.yCoord+mYL(),this.zCoord+mZL())&&
- this.isAirPassable(this.xCoord-mXL(),this.yCoord-mYL(),this.zCoord-mZL()))
- {
- this.airSpeedBase=Math.min(3284,(int) (this.defaultAirSpeedBase*Math.pow(1.7D, speedUp)));
- }
- else if(
- !this.isAirPassable(this.xCoord+mXL(),this.yCoord+mYL(),this.zCoord+mZL())&&
- !this.isAirPassable(this.xCoord-mXL(),this.yCoord-mYL(),this.zCoord-mZL()))
- {
- this.airSpeedBase=0;
- }
- else
- {
- this.airSpeedBase=Math.min(3282,(int) (this.defaultAirSpeedBase*Math.pow(1.7D, speedUp)*0.5D));
- }
- this.maxStorage=this.defaultMaxStorage + capacityUp*10000;
- IC2.network.get().updateTileEntityField(this, "maxStorage");
- this.energyConsume=(int) Math.min(this.defaultEnergyConsume*Math.pow(1.6D, speedUp),this.maxStorage);
- IC2.network.get().updateTileEntityField(this, "airSpeedBase");
- this.tier=this.defaultTier+tierUp;
- IC2.network.get().updateTileEntityField(this, "tier");
- this.updateChecksum=checksum;
- }
- }
-
- //1.7.10 API
- @Override
- public double getDemandedEnergy()
- {
- return this.maxStorage - this.energy;
- }
-
- @Override
- public int getSinkTier()
- {
- return this.tier;
- }
-
- @Override
- public double injectEnergy(ForgeDirection directionFrom, double amount, double voltage)
- {
- if (this.energy >= this.maxStorage)
- {
- return amount;
- }
- else
- {
- this.energy += amount;
- return 0.0D;
- }
- }
-
- @Override
- public double getEnergy() {
- return this.energy;
- }
-
- @Override
- public boolean useEnergy(double amount)
- {
- if (this.energy >= amount)
- {
- this.energy -= amount;
- return true;
- }
- else
- {
- return false;
- }
- }
-
- public int neighborBlowerOperationRange(int x,int y,int z)
- {
- if(this.worldObj.getTileEntity(x, y, z)!=null && this.worldObj.getTileEntity(x, y, z) instanceof BlowerTileEntity)
- {
- BlowerTileEntity bte = (BlowerTileEntity) this.worldObj.getTileEntity(x, y, z);
- if(bte.getFacing()==this.getFacing())
- {
- return bte.operationRange;
- }
- }
- return -1;
- }
-
- public ItemStack getOutput(int arg0)
- {
- return null;
- }
-
- public int getOutputSize() {
- return 0;
- }
-
- public void setOutput(int arg0, ItemStack arg1) {
- }
-
- @Override
- public Set<UpgradableProperty> getUpgradableProperties()
- {
- Set<UpgradableProperty> properties = new HashSet<UpgradableProperty>();
- properties.add(UpgradableProperty.Processing);
- properties.add(UpgradableProperty.EnergyStorage);
- properties.add(UpgradableProperty.Transformer);
- return properties;
- }
-}
\ No newline at end of file |
