More Pollution work

This commit is contained in:
Dream-Master 2016-07-04 18:41:53 +02:00
parent a22dc1f3e4
commit 3ce817dddb
3 changed files with 48 additions and 282 deletions

View file

@ -1758,6 +1758,17 @@ public class GT_Utility {
FluidStack tFluid = getUndergroundOil(aWorld, aX, aZ);
tList.add("Oil in Chunk: " + tFluid.amount + " " + tFluid.getLocalizedName());
}
if(aPlayer.capabilities.isCreativeMode){
ChunkPosition tPos = new ChunkPosition(aX, aY, aZ);
if(GT_Proxy.chunkData.containsKey(tPos)){
int[] tPollution = GT_Proxy.chunkData.get(tPos);
if(tPollution.length>1){
tList.add("Pollution in Chunk: "+tPollution[1]);
}else{
tList.add("No Pollution in Chunk");
}
}
}
try {
if (tBlock instanceof IDebugableBlock) {

View file

@ -1446,6 +1446,7 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
}
}
}
GT_Pollution.onWorldTick((int) (aEvent.world.getTotalWorldTime() % 1200));
}
}
@ -1923,23 +1924,52 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler {
@SubscribeEvent
public void handleChunkSaveEvent(ChunkDataEvent.Save event)
{
{
ChunkPosition tPos = new ChunkPosition(event.getChunk().xPosition,1,event.getChunk().zPosition);
if(chunkData.containsKey(tPos)){
int[] tInts = chunkData.get(tPos);
if(tInts.length>0){event.getData().setInteger("GTOIL", tInts[0]);}}
if(tInts.length>0){event.getData().setInteger("GTOIL", tInts[0]);}
if(tInts.length>1){event.getData().setInteger("GTPOLLUTION", tInts[1]);}}
}
@SubscribeEvent
public void handleChunkLoadEvent(ChunkDataEvent.Load event)
{
int tOil = -1;
if(event.getData().hasKey("GTOIL")){
tOil = event.getData().getInteger("GTOIL");}
int tOil = 0;
int tPollution = 0;
ChunkPosition tPos = new ChunkPosition(event.getChunk().xPosition,1,event.getChunk().zPosition);
int[] tData = new int[2];
if(chunkData.containsKey(tPos)){
chunkData.remove(tPos);}
chunkData.put(tPos, new int[]{ tOil});
tData = chunkData.get(tPos);
chunkData.remove(tPos);
}
if(event.getData().hasKey("GTOIL")){
if(tData.length>2){
tOil = tData[0];
}else{
tOil += event.getData().getInteger("GTOIL");
}
}else{
if(tData[0]!=0){
tOil = tData[0];
}
}
if(event.getData().hasKey("GTPOLLUTION")){
if(tData.length>2){
tPollution = tData[1];
}else{
tPollution += event.getData().getInteger("GTPOLLUTION");
}
}else{
if(tData[1]!=0){
tPollution = tData[1];
}
}
chunkData.put(tPos, new int[]{ tOil,tPollution,-1});
}
public static class OreDictEventContainer {

View file

@ -1,275 +0,0 @@
<<<<<<< HEAD
package gregtech.common.tileentities.boilers;
import gregtech.api.enums.Dyes;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.common.gui.GT_Container_Boiler;
import gregtech.common.gui.GT_GUIContainer_Boiler;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidHandler;
public class GT_MetaTileEntity_Boiler_Lava
extends GT_MetaTileEntity_Boiler {
public GT_MetaTileEntity_Boiler_Lava(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional, "A Boiler running off Lava", new ITexture[0]);
}
public GT_MetaTileEntity_Boiler_Lava(String aName, int aTier, String aDescription, ITexture[][][] aTextures) {
super(aName, aTier, aDescription, aTextures);
}
public ITexture[][][] getTextureSet(ITexture[] aTextures) {
ITexture[][][] rTextures = new ITexture[5][17][];
for (byte i = -1; i < 16; i++) {
rTextures[0][(i + 1)] = new ITexture[]{new GT_RenderedTexture(Textures.BlockIcons.MACHINE_STEELBRICKS_BOTTOM, Dyes.getModulation(i, Dyes._NULL.mRGBa))};
rTextures[1][(i + 1)] = new ITexture[]{new GT_RenderedTexture(Textures.BlockIcons.MACHINE_STEELBRICKS_TOP, Dyes.getModulation(i, Dyes._NULL.mRGBa)), new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_PIPE)};
rTextures[2][(i + 1)] = new ITexture[]{new GT_RenderedTexture(Textures.BlockIcons.MACHINE_STEELBRICKS_SIDE, Dyes.getModulation(i, Dyes._NULL.mRGBa)), new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_PIPE)};
rTextures[3][(i + 1)] = new ITexture[]{new GT_RenderedTexture(Textures.BlockIcons.MACHINE_STEELBRICKS_SIDE, Dyes.getModulation(i, Dyes._NULL.mRGBa)), new GT_RenderedTexture(Textures.BlockIcons.BOILER_LAVA_FRONT)};
rTextures[4][(i + 1)] = new ITexture[]{new GT_RenderedTexture(Textures.BlockIcons.MACHINE_STEELBRICKS_SIDE, Dyes.getModulation(i, Dyes._NULL.mRGBa)), new GT_RenderedTexture(Textures.BlockIcons.BOILER_LAVA_FRONT_ACTIVE)};
}
return rTextures;
}
public int maxProgresstime() {
return 1000;
}
public Object getServerGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) {
return new GT_Container_Boiler(aPlayerInventory, aBaseMetaTileEntity, 32000);
}
public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) {
return new GT_GUIContainer_Boiler(aPlayerInventory, aBaseMetaTileEntity, "SteelBoiler.png", 32000);
}
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
return new GT_MetaTileEntity_Boiler_Lava(this.mName, this.mTier, this.mDescription, this.mTextures);
}
public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
if ((aBaseMetaTileEntity.isServerSide()) && (aTick > 20L)) {
if (this.mTemperature <= 20) {
this.mTemperature = 20;
this.mLossTimer = 0;
}
if (++this.mLossTimer > 20) {
this.mTemperature -= 1;
this.mLossTimer = 0;
}
for (byte i = 1; (this.mSteam != null) && (i < 6); i = (byte) (i + 1)) {
if (i != aBaseMetaTileEntity.getFrontFacing()) {
IFluidHandler tTileEntity = aBaseMetaTileEntity.getITankContainerAtSide(i);
if (tTileEntity != null) {
FluidStack tDrained = aBaseMetaTileEntity.drain(ForgeDirection.getOrientation(i), Math.max(1, this.mSteam.amount / 2), false);
if (tDrained != null) {
int tFilledAmount = tTileEntity.fill(ForgeDirection.getOrientation(i).getOpposite(), tDrained, false);
if (tFilledAmount > 0) {
tTileEntity.fill(ForgeDirection.getOrientation(i).getOpposite(), aBaseMetaTileEntity.drain(ForgeDirection.getOrientation(i), tFilledAmount, true), true);
}
}
}
}
}
if (aTick % 10L == 0L) {
if (this.mTemperature > 100) {
if ((this.mFluid == null) || (!GT_ModHandler.isWater(this.mFluid)) || (this.mFluid.amount <= 0)) {
this.mHadNoWater = true;
} else {
if (this.mHadNoWater) {
aBaseMetaTileEntity.doExplosion(2048L);
return;
}
this.mFluid.amount -= 1;
if (this.mSteam == null) {
this.mSteam = GT_ModHandler.getSteam(300L);
} else if (GT_ModHandler.isSteam(this.mSteam)) {
this.mSteam.amount += 300;
} else {
this.mSteam = GT_ModHandler.getSteam(300L);
}
}
} else {
this.mHadNoWater = false;
}
}
if ((this.mSteam != null) &&
(this.mSteam.amount > 32000)) {
sendSound((byte) 1);
this.mSteam.amount = 24000;
}
if ((this.mProcessingEnergy <= 0) && (aBaseMetaTileEntity.isAllowedToWork()) &&
(GT_OreDictUnificator.isItemStackInstanceOf(this.mInventory[2], OrePrefixes.bucket.get(Materials.Lava)))) {
this.mProcessingEnergy += 1000;
aBaseMetaTileEntity.decrStackSize(2, 1);
aBaseMetaTileEntity.addStackToSlot(3, GT_OreDictUnificator.get(OrePrefixes.bucket, Materials.Empty, 1L));
}
if ((this.mTemperature < 1000) && (this.mProcessingEnergy > 0) && (aTick % 8L == 0L)) {
this.mProcessingEnergy -= 3;
this.mTemperature += 1;
}
aBaseMetaTileEntity.setActive(this.mProcessingEnergy > 0);
}
}
public final int fill(FluidStack aFluid, boolean doFill) {
if ((GT_ModHandler.isLava(aFluid)) && (this.mProcessingEnergy < 50)) {
int tFilledAmount = Math.min(50, aFluid.amount);
if (doFill) {
this.mProcessingEnergy += tFilledAmount;
}
return tFilledAmount;
}
return super.fill(aFluid, doFill);
}
}
=======
package gregtech.common.tileentities.boilers;
import gregtech.api.enums.Dyes;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.MetaTileEntity;
import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.common.GT_Pollution;
import gregtech.common.gui.GT_Container_Boiler;
import gregtech.common.gui.GT_GUIContainer_Boiler;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.world.ChunkPosition;
import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.IFluidHandler;
public class GT_MetaTileEntity_Boiler_Lava
extends GT_MetaTileEntity_Boiler {
public GT_MetaTileEntity_Boiler_Lava(int aID, String aName, String aNameRegional) {
super(aID, aName, aNameRegional, "A Boiler running off Lava", new ITexture[0]);
}
public GT_MetaTileEntity_Boiler_Lava(String aName, int aTier, String aDescription, ITexture[][][] aTextures) {
super(aName, aTier, aDescription, aTextures);
}
public ITexture[][][] getTextureSet(ITexture[] aTextures) {
ITexture[][][] rTextures = new ITexture[5][17][];
for (byte i = -1; i < 16; i++) {
rTextures[0][(i + 1)] = new ITexture[]{new GT_RenderedTexture(Textures.BlockIcons.MACHINE_STEELBRICKS_BOTTOM, Dyes.getModulation(i, Dyes._NULL.mRGBa))};
rTextures[1][(i + 1)] = new ITexture[]{new GT_RenderedTexture(Textures.BlockIcons.MACHINE_STEELBRICKS_TOP, Dyes.getModulation(i, Dyes._NULL.mRGBa)), new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_PIPE)};
rTextures[2][(i + 1)] = new ITexture[]{new GT_RenderedTexture(Textures.BlockIcons.MACHINE_STEELBRICKS_SIDE, Dyes.getModulation(i, Dyes._NULL.mRGBa)), new GT_RenderedTexture(Textures.BlockIcons.OVERLAY_PIPE)};
rTextures[3][(i + 1)] = new ITexture[]{new GT_RenderedTexture(Textures.BlockIcons.MACHINE_STEELBRICKS_SIDE, Dyes.getModulation(i, Dyes._NULL.mRGBa)), new GT_RenderedTexture(Textures.BlockIcons.BOILER_LAVA_FRONT)};
rTextures[4][(i + 1)] = new ITexture[]{new GT_RenderedTexture(Textures.BlockIcons.MACHINE_STEELBRICKS_SIDE, Dyes.getModulation(i, Dyes._NULL.mRGBa)), new GT_RenderedTexture(Textures.BlockIcons.BOILER_LAVA_FRONT_ACTIVE)};
}
return rTextures;
}
public int maxProgresstime() {
return 1000;
}
public Object getServerGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) {
return new GT_Container_Boiler(aPlayerInventory, aBaseMetaTileEntity, 32000);
}
public Object getClientGUI(int aID, InventoryPlayer aPlayerInventory, IGregTechTileEntity aBaseMetaTileEntity) {
return new GT_GUIContainer_Boiler(aPlayerInventory, aBaseMetaTileEntity, "SteelBoiler.png", 32000);
}
public MetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) {
return new GT_MetaTileEntity_Boiler_Lava(this.mName, this.mTier, this.mDescription, this.mTextures);
}
public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
if ((aBaseMetaTileEntity.isServerSide()) && (aTick > 20L)) {
if (this.mTemperature <= 20) {
this.mTemperature = 20;
this.mLossTimer = 0;
}
if (++this.mLossTimer > 20) {
this.mTemperature -= 1;
this.mLossTimer = 0;
}
for (byte i = 1; (this.mSteam != null) && (i < 6); i = (byte) (i + 1)) {
if (i != aBaseMetaTileEntity.getFrontFacing()) {
IFluidHandler tTileEntity = aBaseMetaTileEntity.getITankContainerAtSide(i);
if (tTileEntity != null) {
FluidStack tDrained = aBaseMetaTileEntity.drain(ForgeDirection.getOrientation(i), Math.max(1, this.mSteam.amount / 2), false);
if (tDrained != null) {
int tFilledAmount = tTileEntity.fill(ForgeDirection.getOrientation(i).getOpposite(), tDrained, false);
if (tFilledAmount > 0) {
tTileEntity.fill(ForgeDirection.getOrientation(i).getOpposite(), aBaseMetaTileEntity.drain(ForgeDirection.getOrientation(i), tFilledAmount, true), true);
}
}
}
}
}
if (aTick % 10L == 0L) {
if (this.mTemperature > 100) {
if ((this.mFluid == null) || (!GT_ModHandler.isWater(this.mFluid)) || (this.mFluid.amount <= 0)) {
this.mHadNoWater = true;
} else {
if (this.mHadNoWater) {
aBaseMetaTileEntity.doExplosion(2048L);
return;
}
this.mFluid.amount -= 1;
if (this.mSteam == null) {
this.mSteam = GT_ModHandler.getSteam(300L);
} else if (GT_ModHandler.isSteam(this.mSteam)) {
this.mSteam.amount += 300;
} else {
this.mSteam = GT_ModHandler.getSteam(300L);
}
}
} else {
this.mHadNoWater = false;
}
}
if ((this.mSteam != null) &&
(this.mSteam.amount > 32000)) {
sendSound((byte) 1);
this.mSteam.amount = 24000;
}
if ((this.mProcessingEnergy <= 0) && (aBaseMetaTileEntity.isAllowedToWork()) &&
(GT_OreDictUnificator.isItemStackInstanceOf(this.mInventory[2], OrePrefixes.bucket.get(Materials.Lava)))) {
this.mProcessingEnergy += 1000;
aBaseMetaTileEntity.decrStackSize(2, 1);
aBaseMetaTileEntity.addStackToSlot(3, GT_OreDictUnificator.get(OrePrefixes.bucket, Materials.Empty, 1L));
}
if ((this.mTemperature < 1000) && (this.mProcessingEnergy > 0) && (aTick % 8L == 0L)) {
this.mProcessingEnergy -= 3;
this.mTemperature += 1;
}
if(this.mProcessingEnergy>0 && (aTick % 20L == 0L)){
GT_Pollution.addPollution(new ChunkPosition(this.getBaseMetaTileEntity().getXCoord(), this.getBaseMetaTileEntity().getYCoord(), this.getBaseMetaTileEntity().getZCoord()), 30);
}
aBaseMetaTileEntity.setActive(this.mProcessingEnergy > 0);
}
}
public final int fill(FluidStack aFluid, boolean doFill) {
if ((GT_ModHandler.isLava(aFluid)) && (this.mProcessingEnergy < 50)) {
int tFilledAmount = Math.min(50, aFluid.amount);
if (doFill) {
this.mProcessingEnergy += tFilledAmount;
}
return tFilledAmount;
}
return super.fill(aFluid, doFill);
}
}
>>>>>>> 57deb3b... Pollution basework