/**
* This class based on a class created by <Pokefenn>.
* It was distributed as part of the Botania Mod.
* Get the Source Code in github:
* https://github.com/Vazkii/Botania
*
* Botania is Open Source and distributed under a
* Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License
* (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB)
*
*/
package fox.spiteful.forbidden.tiles;
import net.minecraft.block.Block;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.IIcon;
import thaumcraft.common.Thaumcraft;
import thaumcraft.common.config.ConfigBlocks;
import vazkii.botania.api.BotaniaAPI;
import vazkii.botania.api.lexicon.LexiconEntry;
import vazkii.botania.api.subtile.SubTileGenerating;
import java.util.Random;
public class SubTileTainthistle extends SubTileGenerating {
private static final String TAG_BURN_TIME = "burnTime";
private static final int range = 4;
public static LexiconEntry lexicon;
int burnTime = 0;
@Override
public void onUpdate() {
super.onUpdate();
boolean didSomething = false;
if(this.ticksExisted % 80 == 0) {
if (!supertile.getWorldObj().isRemote) {
for (int ex = supertile.xCoord - range; ex <= supertile.xCoord + range; ex++) {
for (int wy = supertile.yCoord - range; wy <= supertile.yCoord + range; wy++) {
for (int zee = supertile.zCoord - range; zee <= supertile.zCoord + range; zee++) {
if (isFlux(ex, wy, zee)) {
int depth = supertile.getWorldObj().getBlockMetadata(ex, wy, zee);
supertile.getWorldObj().setBlockToAir(ex, wy, zee);
didSomething = true;
burnTime = Math.min(burnTime + depth * (20), 4000);
}
}
}
}
if (didSomething) {
playSound();
sync();
}
}
}
if(burnTime > 0){
if(supertile.getWorldObj().rand.nextInt(8) == 0)
doBurnParticles();
burnTime--;
}
}
@Override
public boolean isPassiveFlower() {
return false;
}
public void doBurnParticles() {
Thaumcraft.proxy.reservoirBubble(supertile.getWorldObj(), supertile.xCoord, supertile.yCoord, supertile.zCoord, 0x4D00FF);
}
public boolean isFlux(int x, int y, int z){
Block target = supertile.getWorldObj().getBlock(x, y, z);
return target == ConfigBlocks.blockFluxGas || target == ConfigBlocks.blockFluxGoo;
}
public void playSound() {
supertile.getWorldObj().playSoundEffect(supertile.xCoord, supertile.yCoord, supertile.zCoord, "random.drink", 0.05F, 0.5F + (float) Math.random() * 0.5F);
}
@Override
public int getMaxMana() {
return 150;
}
@Override
public int getColor() {
return 0x4D00FF;
}
@Override
public LexiconEntry getEntry() {
return lexicon;
}
@Override
public void writeToPacketNBT(NBTTagCompound cmp) {
super.writeToPacketNBT(cmp);
cmp.setInteger(TAG_BURN_TIME, burnTime);
}
@Override
public void readFromPacketNBT(NBTTagCompound cmp) {
super.readFromPacketNBT(cmp);
burnTime = cmp.getInteger(TAG_BURN_TIME);
}
@Override
public boolean canGeneratePassively() {
return burnTime > 0;
}
@Override
public int getDelayBetweenPassiveGeneration() {
return 2;
}
@Override
public int getValueForPassiveGeneration() {
return 3;
}
@Override
public IIcon getIcon(){
return BotaniaAPI.getSignatureForName("tainthistle").getIconForStack(null);
}
}