diff options
author | Blood-Asp <bloodasphendrik@gmail.com> | 2017-03-31 17:38:29 +0200 |
---|---|---|
committer | Blood-Asp <bloodasphendrik@gmail.com> | 2017-03-31 17:38:29 +0200 |
commit | 4fc431e77e60505974c3b9c4097679201e002428 (patch) | |
tree | 960597dd389317e853719d9bd7d4985a6d177626 /src/main/java/gregtech/common/tileentities/generators | |
parent | d725c463e5d134223fb4daf321d67babb1ca4de4 (diff) | |
download | GT5-Unofficial-4fc431e77e60505974c3b9c4097679201e002428.tar.gz GT5-Unofficial-4fc431e77e60505974c3b9c4097679201e002428.tar.bz2 GT5-Unofficial-4fc431e77e60505974c3b9c4097679201e002428.zip |
Add Lightning Rod
Diffstat (limited to 'src/main/java/gregtech/common/tileentities/generators')
-rw-r--r-- | src/main/java/gregtech/common/tileentities/generators/GT_MetaTileEntity_LightningRod.java | 133 |
1 files changed, 133 insertions, 0 deletions
diff --git a/src/main/java/gregtech/common/tileentities/generators/GT_MetaTileEntity_LightningRod.java b/src/main/java/gregtech/common/tileentities/generators/GT_MetaTileEntity_LightningRod.java new file mode 100644 index 0000000000..5353fbcdae --- /dev/null +++ b/src/main/java/gregtech/common/tileentities/generators/GT_MetaTileEntity_LightningRod.java @@ -0,0 +1,133 @@ +package gregtech.common.tileentities.generators; + +import gregtech.api.enums.GT_Values; +import gregtech.api.enums.Textures; +import gregtech.api.interfaces.ITexture; +import gregtech.api.interfaces.metatileentity.IMetaTileEntity; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_TieredMachineBlock; +import gregtech.api.objects.GT_RenderedTexture; +import gregtech.api.objects.XSTR; +import net.minecraft.entity.effect.EntityLightningBolt; +import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class GT_MetaTileEntity_LightningRod extends GT_MetaTileEntity_TieredMachineBlock { + public GT_MetaTileEntity_LightningRod(int aID, String aName, String aNameRegional, int aTier) { + super(aID, aName, aNameRegional, aTier, 0, "Generates EU From Lightning Bolts"); + } + + public GT_MetaTileEntity_LightningRod(String aName, int aTier, int aInvSlotCount, String aDescription, ITexture[][][] aTextures) { + super(aName, aTier, aInvSlotCount, aDescription, aTextures); + } + + @Override + public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone) { + return new ITexture[]{aActive ? new GT_RenderedTexture(Textures.BlockIcons.MACHINE_CASING_FUSION_GLASS_YELLOW) : new GT_RenderedTexture(Textures.BlockIcons.MACHINE_CASING_FUSION_GLASS)}; + } + + @Override + public ITexture[][][] getTextureSet(ITexture[] aTextures) { + return null; + } + + public IMetaTileEntity newMetaEntity(IGregTechTileEntity aTileEntity) { + return new GT_MetaTileEntity_LightningRod(this.mName, this.mTier, this.mInventory.length, this.mDescription, this.mTextures); + } + + @Override + public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) { + World aWorld = aBaseMetaTileEntity.getWorld(); + XSTR aXSTR = new XSTR(); + if (!aWorld.isRemote) { + if(aBaseMetaTileEntity.getStoredEU()>0)aBaseMetaTileEntity.decreaseStoredEnergyUnits(aBaseMetaTileEntity.getStoredEU()/100+1, false); + + if (aTick % 256 == 0 && (aWorld.isThundering() || (aWorld.isRaining() && aXSTR.nextInt(10) == 0))) { + int aRodValue = 0; + boolean isRodValid = true; + int aX = aBaseMetaTileEntity.getXCoord(); + int aY = aBaseMetaTileEntity.getYCoord(); + int aZ = aBaseMetaTileEntity.getZCoord(); + + for (int i = aBaseMetaTileEntity.getYCoord() + 1; i < aWorld.getHeight()-1; i++) { + if (isRodValid && aBaseMetaTileEntity.getBlock(aX, i, aZ).getUnlocalizedName().equals("blockFenceIron")) { + aRodValue++; + } else { + isRodValid = false; + if (aBaseMetaTileEntity.getBlock(aX, i, aZ) != Blocks.air) { + aRodValue=0; + break; + } + } + } + if (!aWorld.isThundering() && ((aY + aRodValue) < 128)) aRodValue = 0; + if (aXSTR.nextInt(4 * aWorld.getHeight()) < (aRodValue * (aY + aRodValue))) { + aBaseMetaTileEntity.setActive(true); + aBaseMetaTileEntity.increaseStoredEnergyUnits(maxEUStore() - aBaseMetaTileEntity.getStoredEU(), false); + aWorld.addWeatherEffect(new EntityLightningBolt(aWorld, aX, aY + aRodValue, aZ)); + aBaseMetaTileEntity.setActive(false); + } + } + } + } + + @Override + public boolean allowPullStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) { + return false; + } + + @Override + public boolean allowPutStack(IGregTechTileEntity aBaseMetaTileEntity, int aIndex, byte aSide, ItemStack aStack) { + return false; + } + + @Override + public boolean isSimpleMachine() { + return false; + } + + @Override + public boolean isFacingValid(byte aFacing) { + return true; + } + + @Override + public boolean isOutputFacing(byte aSide) { + return true; + } + + @Override + public boolean isEnetOutput() { + return true; + } + + @Override + public boolean isEnetInput() { + return false; + } + + @Override + public long maxEUStore() { + return 50000000; + } + + @Override + public long maxEUOutput() { + return GT_Values.V[mTier]; + } + + @Override + public long maxAmperesOut() { + return 512; + } + + @Override + public void saveNBTData(NBTTagCompound aNBT) { + } + + @Override + public void loadNBTData(NBTTagCompound aNBT) { + } +}
\ No newline at end of file |