package com.jared.mysticaltrinkets.tileentities; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import com.jared.mysticaltrinkets.blocks.MysticalBlocks; public class TileEntityRitual extends TileEntity { public int timer; public int ritualTimer; public ItemStack currentItem; public TileEntityRitual() { timer = 1; ritualTimer = 100; } public ItemStack getCurrentItem() { return currentItem; } public int getRitualTimer() { return ritualTimer; } public void setRitualTimer(int ritualTimer) { this.ritualTimer = ritualTimer; } public void setCurrentItem(ItemStack currentItem) { this.currentItem = currentItem; } @Override public void updateEntity() { ItemStack heldItem = currentItem; /* FIRE */ if (timer == 0 && !worldObj.isRemote) { timer = 1; if (worldObj.provider.isHellWorld) { if (heldItem != null && heldItem.getItem() == Items.blaze_rod) { if (checkForBlock(xCoord, yCoord - 1, zCoord, Blocks.lava) || checkForBlock(xCoord, yCoord - 1, zCoord, Blocks.flowing_lava)) { if (checkForBlock(xCoord - 1, yCoord, zCoord, Blocks.lava) || checkForBlock(xCoord - 1, yCoord, zCoord, Blocks.flowing_lava)) { if (checkForBlock(xCoord + 1, yCoord, zCoord, Blocks.lava) || checkForBlock(xCoord + 1, yCoord, zCoord, Blocks.flowing_lava)) { if (checkForBlock(xCoord, yCoord, zCoord + 1, Blocks.lava) || checkForBlock(xCoord, yCoord, zCoord + 1, Blocks.flowing_lava)) { if (checkForBlock(xCoord, yCoord, zCoord - 1, Blocks.lava) || checkForBlock(xCoord, yCoord, zCoord - 1, Blocks.flowing_lava)) { worldObj.setBlock(xCoord, yCoord, zCoord, MysticalBlocks.burntRitualBlock); worldObj.setBlock(xCoord, yCoord - 1, zCoord, Blocks.air); worldObj.setBlock(xCoord + 1, yCoord, zCoord, Blocks.air); worldObj.setBlock(xCoord - 1, yCoord, zCoord, Blocks.air); worldObj.setBlock(xCoord, yCoord, zCoord + 1, Blocks.air); worldObj.setBlock(xCoord, yCoord, zCoord - 1, Blocks.air); } } } } } } } /* NATURE */ if (checkForBlock(xCoord + 2, yCoord + 2, zCoord + 2, MysticalBlocks.infusedOakLog)) { if (checkForBlock(xCoord - 2, yCoord + 2, zCoord - 2, MysticalBlocks.infusedOakLog)) { if (checkForBlock(xCoord + 2, yCoord + 2, zCoord - 2, MysticalBlocks.infusedOakLog)) { if (checkForBlock(xCoord - 2, yCoord + 2, zCoord + 2, MysticalBlocks.infusedOakLog)) { if (checkForBlock(xCoord + 2, yCoord + 1, zCoord + 2, MysticalBlocks.mysticalBrick)) { if (checkForBlock(xCoord - 2, yCoord + 1, zCoord - 2, MysticalBlocks.mysticalBrick)) { if (checkForBlock(xCoord + 2, yCoord + 1, zCoord - 2, MysticalBlocks.mysticalBrick)) { if (checkForBlock(xCoord - 2, yCoord + 1, zCoord + 2, MysticalBlocks.mysticalBrick)) { if (checkForBlock(xCoord + 2, yCoord, zCoord + 2, MysticalBlocks.mysticalBrick)) { if (checkForBlock(xCoord - 2, yCoord, zCoord - 2, MysticalBlocks.mysticalBrick)) { if (checkForBlock(xCoord + 2, yCoord, zCoord - 2, MysticalBlocks.mysticalBrick)) { if (checkForBlock(xCoord - 2, yCoord, zCoord + 2, MysticalBlocks.mysticalBrick)) { if (ritualTimer == 0) { worldObj.setBlock(xCoord, yCoord, zCoord, MysticalBlocks.natureRitualBlock); worldObj.setBlock(xCoord + 2, yCoord + 2, zCoord + 2, Blocks.air); worldObj.setBlock(xCoord - 2, yCoord + 2, zCoord - 2, Blocks.air); worldObj.setBlock(xCoord - 2, yCoord + 2, zCoord + 2, Blocks.air); worldObj.setBlock(xCoord + 2, yCoord + 2, zCoord - 2, Blocks.air); ritualTimer--; } else { ritualTimer--; } } } } } } } } } } } } } /* AIR */ if (heldItem != null && heldItem.getItem() == Items.glowstone_dust) { if (checkForBlock(xCoord + 2, yCoord + 2, zCoord + 2, Blocks.glass)) { if (checkForBlock(xCoord - 2, yCoord + 2, zCoord - 2, Blocks.glass)) { if (checkForBlock(xCoord + 2, yCoord + 2, zCoord - 2, Blocks.glass)) { if (checkForBlock(xCoord - 2, yCoord + 2, zCoord + 2, Blocks.glass)) { if (checkForBlock(xCoord + 2, yCoord + 1, zCoord + 2, MysticalBlocks.mysticalBrick)) { if (checkForBlock(xCoord - 2, yCoord + 1, zCoord - 2, MysticalBlocks.mysticalBrick)) { if (checkForBlock(xCoord + 2, yCoord + 1, zCoord - 2, MysticalBlocks.mysticalBrick)) { if (checkForBlock(xCoord - 2, yCoord + 1, zCoord + 2, MysticalBlocks.mysticalBrick)) { if (checkForBlock(xCoord + 2, yCoord, zCoord + 2, MysticalBlocks.mysticalBrick)) { if (checkForBlock(xCoord - 2, yCoord, zCoord - 2, MysticalBlocks.mysticalBrick)) { if (checkForBlock(xCoord + 2, yCoord, zCoord - 2, MysticalBlocks.mysticalBrick)) { if (checkForBlock(xCoord - 2, yCoord, zCoord + 2, MysticalBlocks.mysticalBrick)) { if (ritualTimer == 0) { worldObj.setBlock(xCoord, yCoord, zCoord, MysticalBlocks.airRitualBlock); worldObj.setBlock(xCoord + 2, yCoord + 2, zCoord + 2, Blocks.air); worldObj.setBlock(xCoord - 2, yCoord + 2, zCoord - 2, Blocks.air); worldObj.setBlock(xCoord - 2, yCoord + 2, zCoord + 2, Blocks.air); worldObj.setBlock(xCoord + 2, yCoord + 2, zCoord - 2, Blocks.air); ritualTimer--; } else { ritualTimer--; } } } } } } } } } } } } } } /* WATER */ if (heldItem != null && heldItem.getItem() == Items.fish) { if (checkForBlock(xCoord + 1, yCoord, zCoord, Blocks.water) || checkForBlock(xCoord + 1, yCoord, zCoord, Blocks.flowing_water)) { if (checkForBlock(xCoord - 1, yCoord, zCoord, Blocks.water) || checkForBlock(xCoord - 1, yCoord, zCoord, Blocks.flowing_water)) { if (checkForBlock(xCoord, yCoord - 1, zCoord, Blocks.water) || checkForBlock(xCoord, yCoord - 1, zCoord, Blocks.flowing_water)) { if (checkForBlock(xCoord, yCoord, zCoord + 1, Blocks.water) || checkForBlock(xCoord, yCoord, zCoord + 1, Blocks.flowing_water)) { if (checkForBlock(xCoord, yCoord, zCoord - 1, Blocks.water) || checkForBlock(xCoord, yCoord, zCoord - 1, Blocks.flowing_water)) { if (ritualTimer == 0) { ritualTimer = 100; worldObj.setBlock(xCoord, yCoord, zCoord, MysticalBlocks.waterRitualBlock); worldObj.setBlock(xCoord - 1, yCoord, zCoord, Blocks.air); worldObj.setBlock(xCoord + 1, yCoord, zCoord, Blocks.air); worldObj.setBlock(xCoord, yCoord - 1, zCoord, Blocks.air); worldObj.setBlock(xCoord, yCoord, zCoord + 1, Blocks.air); worldObj.setBlock(xCoord, yCoord, zCoord - 1, Blocks.air); } else { ritualTimer--; } } } } } } } } timer--; } public boolean checkForBlock(int x, int y, int z, Block block) { if (worldObj.getBlock(x, y, z) == block) { return true; } else { return false; } } public void registerRitual(World world, int x, int y, int z, Block cornerBlocks, Block newBlock, ItemStack itemstack, Item item) { if (!world.isRemote) { if (itemstack != null && itemstack.getItem() == item) { if (world.getBlock(x - 2, y + 2, z - 2) == cornerBlocks) { if (world.getBlock(x + 2, y + 2, z + 2) == cornerBlocks) { if (world.getBlock(x + 2, y + 2, z - 2) == cornerBlocks) { if (world.getBlock(x - 2, y + 2, z + 2) == cornerBlocks) { world.setBlock(x, y, z, newBlock); } } } } } } } @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); nbt.setInteger("timer", timer); nbt.setInteger("ritualTimer", ritualTimer); } @Override public void readFromNBT(NBTTagCompound nbt) { super.readFromNBT(nbt); this.timer = nbt.getInteger("timer"); this.ritualTimer = nbt.getInteger("ritualTimer"); } }