summaryrefslogtreecommitdiff
path: root/src/main/java/darkknight/jewelrycraft/tileentity
diff options
context:
space:
mode:
authorOnyxDarkKnight <sor1n.iliutza16@gmail.com>2015-06-08 17:56:06 +0100
committerOnyxDarkKnight <sor1n.iliutza16@gmail.com>2015-06-08 17:56:06 +0100
commit8d4cf31c5fa874876a3dcbefdc0826b08f8d807d (patch)
treee8b3c9016b74d908e0f3abaf6087e27b8981944a /src/main/java/darkknight/jewelrycraft/tileentity
parenta6a3bfa6f313adba5afe6eb4a0da049a8d641cfc (diff)
Added the ritual sound file, re-wroked the eye following algorithm
(thank you domi so so much <3)
Diffstat (limited to 'src/main/java/darkknight/jewelrycraft/tileentity')
-rw-r--r--src/main/java/darkknight/jewelrycraft/tileentity/TileEntityShadowEye.java792
-rw-r--r--src/main/java/darkknight/jewelrycraft/tileentity/renders/TileEntityShadowEyeRender.java204
2 files changed, 496 insertions, 500 deletions
diff --git a/src/main/java/darkknight/jewelrycraft/tileentity/TileEntityShadowEye.java b/src/main/java/darkknight/jewelrycraft/tileentity/TileEntityShadowEye.java
index 887b17f..cac74e2 100644
--- a/src/main/java/darkknight/jewelrycraft/tileentity/TileEntityShadowEye.java
+++ b/src/main/java/darkknight/jewelrycraft/tileentity/TileEntityShadowEye.java
@@ -1,400 +1,392 @@
-package darkknight.jewelrycraft.tileentity;
-
-import java.util.ArrayList;
-import cpw.mods.fml.relauncher.Side;
-import cpw.mods.fml.relauncher.SideOnly;
-import net.minecraft.block.Block;
-import net.minecraft.client.Minecraft;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.init.Blocks;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.network.NetworkManager;
-import net.minecraft.network.Packet;
-import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.AxisAlignedBB;
-import net.minecraft.util.ChatComponentText;
-import net.minecraft.util.EnumChatFormatting;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.StatCollector;
-import net.minecraft.world.World;
-import darkknight.jewelrycraft.block.BlockHandPedestal;
-import darkknight.jewelrycraft.block.BlockList;
-import darkknight.jewelrycraft.config.ConfigHandler;
-import darkknight.jewelrycraft.particles.EntityShadowsFX;
-import darkknight.jewelrycraft.util.JewelryNBT;
-import darkknight.jewelrycraft.util.JewelrycraftUtil;
-import darkknight.jewelrycraft.util.PlayerUtils;
-import darkknight.jewelrycraft.util.Variables;
-
-public class TileEntityShadowEye extends TileEntity
-{
- public int opening, timer, t = 20;
- public boolean active, shouldAddData;
- public ArrayList<ItemStack> pedestalItems = new ArrayList<ItemStack>();
- ResourceLocation particleTexture = new ResourceLocation(Variables.MODID, "textures/particle/shadows.png");
- public EntityPlayer target;
-
- public TileEntityShadowEye()
- {
- opening = 1;
- timer = 20;
- active = false;
- }
-
- /**
- * @param nbt
- */
- @Override
- public void writeToNBT(NBTTagCompound nbt)
- {
- super.writeToNBT(nbt);
- nbt.setInteger("opening", opening);
- nbt.setInteger("timer", timer);
- nbt.setBoolean("active", active);
- nbt.setBoolean("shouldAddData", shouldAddData);
- }
-
- /**
- * @param nbt
- */
- @Override
- public void readFromNBT(NBTTagCompound nbt)
- {
- super.readFromNBT(nbt);
- opening = nbt.getInteger("opening");
- timer = nbt.getInteger("timer");
- active = nbt.getBoolean("active");
- shouldAddData = nbt.getBoolean("shouldAddData");
- }
-
- /**
- *
- */
- @Override
- public void updateEntity()
- {
- super.updateEntity();
- boolean valid = isValidStructure(worldObj, xCoord, yCoord, zCoord, blockMetadata);
- boolean canStartRitual = valid && ((TileEntityHandPedestal)worldObj.getTileEntity(xCoord, yCoord - 3, zCoord)).heldItemStack != null && getNumberOfItems(worldObj, xCoord, yCoord, zCoord) > 0;
- if (active){
- timer--;
- if (canStartRitual && canChangePedestals(worldObj, xCoord, yCoord, zCoord) && opening == 4) changePedestals(worldObj, xCoord, yCoord, zCoord);
- }
- if (active && target != null && this.getDistanceFrom(target.posX, target.posY, target.posZ) > 30D){
- active = false;
- timer = -1;
- shouldAddData = false;
- revertPedestals(worldObj, xCoord, yCoord, zCoord);
- }
- if (opening == 4 && timer <= 0) active = false;
- if (!active && timer <= 0 && opening != 1){
- if (t > 0) t--;
- if (t <= 0){
- opening--;
- t = 20;
- }
- }
- if (opening == 2 && timer <= 0 && t == 10 && shouldAddData){
- addData(worldObj, xCoord, yCoord, zCoord);
- TileEntityHandPedestal target = (TileEntityHandPedestal)worldObj.getTileEntity(xCoord, yCoord - 3, zCoord);
- if (target != null && target.getHeldItemStack() != null) JewelryNBT.addModifiers(target.getHeldItemStack(), pedestalItems);
- revertPedestals(worldObj, xCoord, yCoord, zCoord);
- }
- if (active && timer <= 0){
- if (opening < 4){
- opening++;
- timer = 20;
- }
- if (canStartRitual && opening == 4) timer = ConfigHandler.RITUAL_TIME;
- else if (!canStartRitual){
- shouldAddData = false;
- active = false;
- timer = -1;
- if (!worldObj.isRemote){
- JewelrycraftUtil.addCursePoints(target, 50);
- target.addChatMessage(new ChatComponentText(EnumChatFormatting.BLACK + "The Shadows don't like to be disturbed for no reason!"));
- target.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_PURPLE + "You feel a strange aura encumbering you."));
- }
- }
- }
- for(Object player: worldObj.getEntitiesWithinAABB(EntityPlayer.class, getRenderBoundingBox().expand(10D, 10D, 10D)))
- if (player != null){
- NBTTagCompound persistTag = PlayerUtils.getModPlayerPersistTag((EntityPlayer)player, Variables.MODID);
- persistTag.setBoolean("nearStartedRitual", false);
- }
- if (active && opening == 4){
- float din = 6F;
- int i = Minecraft.getMinecraft().gameSettings.particleSetting;
- for(float x = -din; x <= din; x += 0.2F)
- for(float z = -din; z <= din; z += 0.2F)
- if (x * x + z * z >= din * din - 1 && x * x + z * z <= din * din + 1) Minecraft.getMinecraft().effectRenderer.addEffect(new EntityShadowsFX(worldObj, xCoord + x + 0.5F, yCoord - 0.5F, zCoord + z + 0.5F, 15F, 0.04F - 0.01F * i, particleTexture));
- for(int l = 0; l <= 100 - i*45; l++)
- worldObj.spawnParticle("depthsuspend", xCoord + 6.5F - worldObj.rand.nextInt(12) - worldObj.rand.nextFloat(), yCoord - 2F + worldObj.rand.nextInt(9) - worldObj.rand.nextFloat(), zCoord + 6.5F - worldObj.rand.nextInt(12) - worldObj.rand.nextFloat(), 0, 0, 0);
- }
- }
-
- /**
- * @param world
- * @param x
- * @param y
- * @param z
- * @param metadata
- * @return
- */
- public boolean isValidStructure(World world, int x, int y, int z, int metadata)
- {
- if (world.getBlockMetadata(x, y, z) == 0 || world.getBlockMetadata(x, y, z) == 2){
- // Layers from top to bottom
- // 1st Layer
- if (world.getBlock(x, y + 1, z) != Blocks.stone_slab || world.getBlockMetadata(x, y + 1, z) != 5) return false;
- if (world.getBlock(x + 1, y + 1, z) != Blocks.stone_slab || world.getBlockMetadata(x + 1, y + 1, z) != 5) return false;
- if (world.getBlock(x - 1, y + 1, z) != Blocks.stone_slab || world.getBlockMetadata(x - 1, y + 1, z) != 5) return false;
- // 2nd Layer
- if (world.getBlock(x + 2, y, z) != Blocks.stone_brick_stairs || world.getBlockMetadata(x + 2, y, z) != 1) return false;
- if (world.getBlock(x + 1, y, z) != Blocks.stone_brick_stairs || world.getBlockMetadata(x + 1, y, z) != 4) return false;
- if (world.getBlock(x - 1, y, z) != Blocks.stone_brick_stairs || world.getBlockMetadata(x - 1, y, z) != 5) return false;
- if (world.getBlock(x - 2, y, z) != Blocks.stone_brick_stairs || world.getBlockMetadata(x - 2, y, z) != 0) return false;
- // 3rd Layer
- if (world.getBlock(x + 2, y - 1, z) != Blocks.stonebrick) return false;
- if (world.getBlock(x - 2, y - 1, z) != Blocks.stonebrick) return false;
- // 4th Layer
- if (world.getBlock(x + 2, y - 2, z) != Blocks.stonebrick) return false;
- if (world.getBlock(x - 2, y - 2, z) != Blocks.stonebrick) return false;
- // 5th Layer
- if (world.getBlock(x + 2, y - 3, z) != Blocks.stonebrick) return false;
- if (world.getBlock(x - 2, y - 3, z) != Blocks.stonebrick) return false;
- }else if (world.getBlockMetadata(x, y, z) == 1 || world.getBlockMetadata(x, y, z) == 3){
- // Layers from top to bottom
- // 1st Layer
- if (world.getBlock(x, y + 1, z) != Blocks.stone_slab || world.getBlockMetadata(x, y + 1, z) != 5) return false;
- if (world.getBlock(x, y + 1, z + 1) != Blocks.stone_slab || world.getBlockMetadata(x, y + 1, z + 1) != 5) return false;
- if (world.getBlock(x, y + 1, z - 1) != Blocks.stone_slab || world.getBlockMetadata(x, y + 1, z - 1) != 5) return false;
- // 2nd Layer
- if (world.getBlock(x, y, z + 2) != Blocks.stone_brick_stairs || world.getBlockMetadata(x, y, z + 2) != 3) return false;
- if (world.getBlock(x, y, z + 1) != Blocks.stone_brick_stairs || world.getBlockMetadata(x, y, z + 1) != 6) return false;
- if (world.getBlock(x, y, z - 1) != Blocks.stone_brick_stairs || world.getBlockMetadata(x, y, z - 1) != 7) return false;
- if (world.getBlock(x, y, z - 2) != Blocks.stone_brick_stairs || world.getBlockMetadata(x, y, z - 2) != 2) return false;
- // 3rd Layer
- if (world.getBlock(x, y - 1, z + 2) != Blocks.stonebrick) return false;
- if (world.getBlock(x, y - 1, z - 2) != Blocks.stonebrick) return false;
- // 4th Layer
- if (world.getBlock(x, y - 2, z + 2) != Blocks.stonebrick) return false;
- if (world.getBlock(x, y - 2, z - 2) != Blocks.stonebrick) return false;
- // 5th Layer
- if (world.getBlock(x, y - 3, z + 2) != Blocks.stonebrick) return false;
- if (world.getBlock(x, y - 3, z - 2) != Blocks.stonebrick) return false;
- }
- // 3rd Layer
- if (world.getBlock(x - 4, y - 1, z - 4) != BlockList.shadowBlock) return false;
- if (world.getBlock(x - 4, y - 1, z + 4) != BlockList.shadowBlock) return false;
- if (world.getBlock(x + 4, y - 1, z - 4) != BlockList.shadowBlock) return false;
- if (world.getBlock(x + 4, y - 1, z + 4) != BlockList.shadowBlock) return false;
- // 4th Layer
- if (world.getBlock(x - 4, y - 2, z - 4) != Blocks.stonebrick) return false;
- if (world.getBlock(x - 4, y - 2, z + 4) != Blocks.stonebrick) return false;
- if (world.getBlock(x + 4, y - 2, z - 4) != Blocks.stonebrick) return false;
- if (world.getBlock(x + 4, y - 2, z + 4) != Blocks.stonebrick) return false;
- // 5th Layer
- // Pillars
- if (world.getBlock(x - 4, y - 3, z - 4) != Blocks.stonebrick) return false;
- if (world.getBlock(x - 4, y - 3, z + 4) != Blocks.stonebrick) return false;
- if (world.getBlock(x + 4, y - 3, z - 4) != Blocks.stonebrick) return false;
- if (world.getBlock(x + 4, y - 3, z + 4) != Blocks.stonebrick) return false;
- // Pedestals
- if (!(world.getBlock(x, y - 3, z) instanceof BlockHandPedestal)) return false;
- if (world.getBlock(x - 4, y - 3, z + 2) != BlockList.handPedestal || world.getBlockMetadata(x - 4, y - 3, z + 2) != 1) return false;
- if (world.getBlock(x - 5, y - 3, z) != BlockList.handPedestal || world.getBlockMetadata(x - 5, y - 3, z) != 2) return false;
- if (world.getBlock(x - 4, y - 3, z - 2) != BlockList.handPedestal || world.getBlockMetadata(x - 4, y - 3, z - 2) != 3) return false;
- if (world.getBlock(x - 2, y - 3, z - 4) != BlockList.handPedestal || world.getBlockMetadata(x - 2, y - 3, z - 4) != 3) return false;
- if (world.getBlock(x, y - 3, z - 5) != BlockList.handPedestal || world.getBlockMetadata(x, y - 3, z - 5) != 4) return false;
- if (world.getBlock(x + 2, y - 3, z - 4) != BlockList.handPedestal || world.getBlockMetadata(x + 2, y - 3, z - 4) != 5) return false;
- if (world.getBlock(x + 4, y - 3, z - 2) != BlockList.handPedestal || world.getBlockMetadata(x + 4, y - 3, z - 2) != 5) return false;
- if (world.getBlock(x + 5, y - 3, z) != BlockList.handPedestal || world.getBlockMetadata(x + 5, y - 3, z) != 6) return false;
- if (world.getBlock(x + 4, y - 3, z + 2) != BlockList.handPedestal || world.getBlockMetadata(x + 4, y - 3, z + 2) != 7) return false;
- if (world.getBlock(x + 2, y - 3, z + 4) != BlockList.handPedestal || world.getBlockMetadata(x + 2, y - 3, z + 4) != 7) return false;
- if (world.getBlock(x, y - 3, z + 5) != BlockList.handPedestal || world.getBlockMetadata(x, y - 3, z + 5) != 0) return false;
- if (world.getBlock(x - 2, y - 3, z + 4) != BlockList.handPedestal || world.getBlockMetadata(x - 2, y - 3, z + 4) != 1) return false;
- return true;
- }
-
- /**
- * @param world
- * @param x
- * @param y
- * @param z
- */
- public void addData(World world, int x, int y, int z)
- {
- pedestalItems.clear();
- addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x + 2, y - 3, z - 4));
- addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x - 4, y - 3, z + 2));
- addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x, y - 3, z - 5));
- addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x - 2, y - 3, z - 4));
- addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x - 4, y - 3, z - 2));
- addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x - 5, y - 3, z));
- addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x + 4, y - 3, z - 2));
- addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x + 5, y - 3, z));
- addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x + 4, y - 3, z + 2));
- addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x + 2, y - 3, z + 4));
- addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x, y - 3, z + 5));
- addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x - 2, y - 3, z + 4));
- }
-
- public int getNumberOfItems(World world, int x, int y, int z)
- {
- int items = 0;
- if (((TileEntityHandPedestal)world.getTileEntity(x + 2, y - 3, z - 4)).heldItemStack != null) items++;
- if (((TileEntityHandPedestal)world.getTileEntity(x - 4, y - 3, z + 2)).heldItemStack != null) items++;
- if (((TileEntityHandPedestal)world.getTileEntity(x, y - 3, z - 5)).heldItemStack != null) items++;
- if (((TileEntityHandPedestal)world.getTileEntity(x - 2, y - 3, z - 4)).heldItemStack != null) items++;
- if (((TileEntityHandPedestal)world.getTileEntity(x - 4, y - 3, z - 2)).heldItemStack != null) items++;
- if (((TileEntityHandPedestal)world.getTileEntity(x - 5, y - 3, z)).heldItemStack != null) items++;
- if (((TileEntityHandPedestal)world.getTileEntity(x + 4, y - 3, z - 2)).heldItemStack != null) items++;
- if (((TileEntityHandPedestal)world.getTileEntity(x + 5, y - 3, z)).heldItemStack != null) items++;
- if (((TileEntityHandPedestal)world.getTileEntity(x + 4, y - 3, z + 2)).heldItemStack != null) items++;
- if (((TileEntityHandPedestal)world.getTileEntity(x + 2, y - 3, z + 4)).heldItemStack != null) items++;
- if (((TileEntityHandPedestal)world.getTileEntity(x, y - 3, z + 5)).heldItemStack != null) items++;
- if (((TileEntityHandPedestal)world.getTileEntity(x - 2, y - 3, z + 4)).heldItemStack != null) items++;
- return items;
- }
-
- public boolean canChangePedestals(World world, int x, int y, int z)
- {
- if (world.getBlock(x, y - 3, z) != BlockList.handPedestal) return false;
- if (world.getBlock(x + 2, y - 3, z - 4) != BlockList.handPedestal) return false;
- if (world.getBlock(x - 4, y - 3, z + 2) != BlockList.handPedestal) return false;
- if (world.getBlock(x, y - 3, z - 5) != BlockList.handPedestal) return false;
- if (world.getBlock(x - 2, y - 3, z - 4) != BlockList.handPedestal) return false;
- if (world.getBlock(x - 4, y - 3, z - 2) != BlockList.handPedestal) return false;
- if (world.getBlock(x - 5, y - 3, z) != BlockList.handPedestal) return false;
- if (world.getBlock(x + 4, y - 3, z - 2) != BlockList.handPedestal) return false;
- if (world.getBlock(x + 5, y - 3, z) != BlockList.handPedestal) return false;
- if (world.getBlock(x + 4, y - 3, z + 2) != BlockList.handPedestal) return false;
- if (world.getBlock(x + 2, y - 3, z + 4) != BlockList.handPedestal) return false;
- if (world.getBlock(x, y - 3, z + 5) != BlockList.handPedestal) return false;
- if (world.getBlock(x - 2, y - 3, z + 4) != BlockList.handPedestal) return false;
- return true;
- }
-
- public void changePedestals(World world, int x, int y, int z)
- {
- changeHand(world, x, y - 3, z);
- changeHand(world, x + 2, y - 3, z - 4);
- changeHand(world, x - 4, y - 3, z + 2);
- changeHand(world, x, y - 3, z - 5);
- changeHand(world, x - 2, y - 3, z - 4);
- changeHand(world, x - 4, y - 3, z - 2);
- changeHand(world, x - 5, y - 3, z);
- changeHand(world, x + 4, y - 3, z - 2);
- changeHand(world, x + 5, y - 3, z);
- changeHand(world, x + 4, y - 3, z + 2);
- changeHand(world, x + 2, y - 3, z + 4);
- changeHand(world, x, y - 3, z + 5);
- changeHand(world, x - 2, y - 3, z + 4);
- }
-
- public void changeHand(World world, int x, int y, int z)
- {
- int l = world.getBlockMetadata(x, y, z);
- world.playAuxSFX(2001, x, y, z, Block.getIdFromBlock(world.getBlock(x, y, z)));
- TileEntityShadowHand tile = new TileEntityShadowHand();
- if (world.getTileEntity(x, y, z) instanceof TileEntityHandPedestal){
- if (((TileEntityHandPedestal)world.getTileEntity(x, y, z)).heldItemStack != null) tile.setHeldItemStack(((TileEntityHandPedestal)world.getTileEntity(x, y, z)).heldItemStack.copy());
- if (tile.heldItemStack != null) tile.closeHand();
- ((TileEntityHandPedestal)world.getTileEntity(x, y, z)).removeHeldItemStack();
- world.setBlock(x, y, z, BlockList.shadowHand, l, 2);
- world.setTileEntity(x, y, z, tile);
- }
- }
-
- public void revertPedestals(World world, int x, int y, int z)
- {
- revertHand(world, x, y - 3, z);
- revertHand(world, x + 2, y - 3, z - 4);
- revertHand(world, x - 4, y - 3, z + 2);
- revertHand(world, x, y - 3, z - 5);
- revertHand(world, x - 2, y - 3, z - 4);
- revertHand(world, x - 4, y - 3, z - 2);
- revertHand(world, x - 5, y - 3, z);
- revertHand(world, x + 4, y - 3, z - 2);
- revertHand(world, x + 5, y - 3, z);
- revertHand(world, x + 4, y - 3, z + 2);
- revertHand(world, x + 2, y - 3, z + 4);
- revertHand(world, x, y - 3, z + 5);
- revertHand(world, x - 2, y - 3, z + 4);
- }
-
- public void revertHand(World world, int x, int y, int z)
- {
- int l = world.getBlockMetadata(x, y, z);
- world.playAuxSFX(2001, x, y, z, Block.getIdFromBlock(BlockList.handPedestal));
- world.playSoundEffect(x, y + 0.5F, z, "step.wood", 1F, 1F);
- TileEntityHandPedestal tile = new TileEntityHandPedestal();
- if (world.getTileEntity(x, y, z) instanceof TileEntityShadowHand){
- if (((TileEntityShadowHand)world.getTileEntity(x, y, z)).heldItemStack != null) tile.setHeldItemStack(((TileEntityShadowHand)world.getTileEntity(x, y, z)).heldItemStack.copy());
- ((TileEntityShadowHand)world.getTileEntity(x, y, z)).removeHeldItemStack();
- world.setBlock(x, y, z, BlockList.handPedestal, l, 2);
- world.setTileEntity(x, y, z, tile);
- }
- }
-
- /**
- * @param pedestal
- */
- public void addPedestalInfo(TileEntityHandPedestal pedestal)
- {
- ItemStack heldItemStack;
- if (pedestal != null && (heldItemStack = pedestal.getHeldItemStack()) != null){
- if (pedestalItems.isEmpty()) pedestalItems.add(heldItemStack.copy());
- else{
- boolean hasItem = false;
- int index = 0;
- for(int ind = 0; ind < pedestalItems.size() && !hasItem; ind++)
- if (heldItemStack.getItem().equals(pedestalItems.get(ind).getItem()) && heldItemStack.getItemDamage() == pedestalItems.get(ind).getItemDamage()){
- index = ind;
- hasItem = true;
- if (heldItemStack.hasTagCompound() && pedestalItems.get(ind).hasTagCompound() && !heldItemStack.getTagCompound().equals(pedestalItems.get(ind).getTagCompound())) hasItem = false;
- }
- if (!hasItem) pedestalItems.add(heldItemStack.copy());
- else{
- ItemStack object = pedestalItems.get(index).copy();
- object.stackSize++;
- pedestalItems.set(index, object);
- }
- }
- pedestal.removeHeldItemStack();
- pedestal.openHand();
- }else if (pedestal != null && target != null) JewelrycraftUtil.addCursePoints(target, 20);
- }
-
- @SideOnly(Side.CLIENT)
- public AxisAlignedBB getRenderBoundingBox()
- {
- AxisAlignedBB bb = AxisAlignedBB.getBoundingBox(xCoord - 5.5D, yCoord - 5.5D, zCoord - 5.5D, xCoord + 5.5D, yCoord + 5.5D, zCoord + 5.5D);
- return bb;
- }
-
- /**
- * @return
- */
- @Override
- public Packet getDescriptionPacket()
- {
- NBTTagCompound nbttagcompound = new NBTTagCompound();
- writeToNBT(nbttagcompound);
- return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, 1, nbttagcompound);
- }
-
- /**
- * @param net
- * @param packet
- */
- @Override
- public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet)
- {
- readFromNBT(packet.func_148857_g());
- worldObj.func_147479_m(xCoord, yCoord, zCoord);
- }
-}
+package darkknight.jewelrycraft.tileentity;
+
+import java.util.ArrayList;
+
+import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.network.NetworkManager;
+import net.minecraft.network.Packet;
+import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.ChatComponentText;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.world.World;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import darkknight.jewelrycraft.block.BlockHandPedestal;
+import darkknight.jewelrycraft.block.BlockList;
+import darkknight.jewelrycraft.config.ConfigHandler;
+import darkknight.jewelrycraft.model.ModelShadowEye;
+import darkknight.jewelrycraft.util.JewelryNBT;
+import darkknight.jewelrycraft.util.JewelrycraftUtil;
+import darkknight.jewelrycraft.util.PlayerUtils;
+import darkknight.jewelrycraft.util.Variables;
+
+public class TileEntityShadowEye extends TileEntity
+{
+ public int opening, timer, t = 20;
+ public boolean active, shouldAddData;
+ public ArrayList<ItemStack> pedestalItems = new ArrayList<ItemStack>();
+ ResourceLocation particleTexture = new ResourceLocation(Variables.MODID, "textures/particle/shadows.png");
+ public EntityPlayer target;
+ public ModelShadowEye model = new ModelShadowEye();
+
+ public TileEntityShadowEye()
+ {
+ opening = 1;
+ timer = 20;
+ active = false;
+ }
+
+ /**
+ * @param nbt
+ */
+ @Override
+ public void writeToNBT(NBTTagCompound nbt)
+ {
+ super.writeToNBT(nbt);
+ nbt.setInteger("opening", opening);
+ nbt.setInteger("timer", timer);
+ nbt.setBoolean("active", active);
+ nbt.setBoolean("shouldAddData", shouldAddData);
+ }
+
+ /**
+ * @param nbt
+ */
+ @Override
+ public void readFromNBT(NBTTagCompound nbt)
+ {
+ super.readFromNBT(nbt);
+ opening = nbt.getInteger("opening");
+ timer = nbt.getInteger("timer");
+ active = nbt.getBoolean("active");
+ shouldAddData = nbt.getBoolean("shouldAddData");
+ }
+
+ /**
+ *
+ */
+ @Override
+ public void updateEntity()
+ {
+ super.updateEntity();
+ boolean valid = isValidStructure(worldObj, xCoord, yCoord, zCoord, blockMetadata);
+ boolean canStartRitual = valid && ((TileEntityHandPedestal)worldObj.getTileEntity(xCoord, yCoord - 3, zCoord)).heldItemStack != null && getNumberOfItems(worldObj, xCoord, yCoord, zCoord) > 0;
+ if (active){
+ timer--;
+ if (canStartRitual && canChangePedestals(worldObj, xCoord, yCoord, zCoord) && opening == 4) changePedestals(worldObj, xCoord, yCoord, zCoord);
+ }
+ if (active && target != null && this.getDistanceFrom(target.posX, target.posY, target.posZ) > 27D){
+ active = false;
+ timer = -1;
+ shouldAddData = false;
+ revertPedestals(worldObj, xCoord, yCoord, zCoord);
+ }
+ if (opening == 4 && timer <= 0) active = false;
+ if (!active && timer <= 0 && opening != 1){
+ if (t > 0) t--;
+ if (t <= 0){
+ opening--;
+ t = 20;
+ }
+ }
+ if (opening == 2 && timer <= 0 && t == 10 && shouldAddData){
+ addData(worldObj, xCoord, yCoord, zCoord);
+ TileEntityHandPedestal target = (TileEntityHandPedestal)worldObj.getTileEntity(xCoord, yCoord - 3, zCoord);
+ if (target != null && target.getHeldItemStack() != null) JewelryNBT.addModifiers(target.getHeldItemStack(), pedestalItems);
+ revertPedestals(worldObj, xCoord, yCoord, zCoord);
+ }
+ if (active && timer <= 0){
+ if (opening < 4){
+ opening++;
+ timer = 20;
+ }
+ if (canStartRitual && opening == 4) timer = ConfigHandler.RITUAL_TIME;
+ else if (!canStartRitual){
+ shouldAddData = false;
+ active = false;
+ timer = -1;
+ if (!worldObj.isRemote){
+ JewelrycraftUtil.addCursePoints(target, 50);
+ target.addChatMessage(new ChatComponentText(EnumChatFormatting.BLACK + "The Shadows don't like to be disturbed for no reason!"));
+ target.addChatMessage(new ChatComponentText(EnumChatFormatting.DARK_PURPLE + "You feel a strange aura encumbering you."));
+ }
+ }
+ }
+ if (active && opening == 4){
+ int i = Minecraft.getMinecraft().gameSettings.particleSetting;
+ for(int l = 0; l <= 100 - i*45; l++)
+ worldObj.spawnParticle("depthsuspend", xCoord + 6.5F - worldObj.rand.nextInt(12) - worldObj.rand.nextFloat(), yCoord - 2F + worldObj.rand.nextInt(9) - worldObj.rand.nextFloat(), zCoord + 6.5F - worldObj.rand.nextInt(12) - worldObj.rand.nextFloat(), 0, 0, 0);
+ }
+ }
+
+ /**
+ * @param world
+ * @param x
+ * @param y
+ * @param z
+ * @param metadata
+ * @return
+ */
+ public boolean isValidStructure(World world, int x, int y, int z, int metadata)
+ {
+ if (world.getBlockMetadata(x, y, z) == 0 || world.getBlockMetadata(x, y, z) == 2){
+ // Layers from top to bottom
+ // 1st Layer
+ if (world.getBlock(x, y + 1, z) != Blocks.stone_slab || world.getBlockMetadata(x, y + 1, z) != 5) return false;
+ if (world.getBlock(x + 1, y + 1, z) != Blocks.stone_slab || world.getBlockMetadata(x + 1, y + 1, z) != 5) return false;
+ if (world.getBlock(x - 1, y + 1, z) != Blocks.stone_slab || world.getBlockMetadata(x - 1, y + 1, z) != 5) return false;
+ // 2nd Layer
+ if (world.getBlock(x + 2, y, z) != Blocks.stone_brick_stairs || world.getBlockMetadata(x + 2, y, z) != 1) return false;
+ if (world.getBlock(x + 1, y, z) != Blocks.stone_brick_stairs || world.getBlockMetadata(x + 1, y, z) != 4) return false;
+ if (world.getBlock(x - 1, y, z) != Blocks.stone_brick_stairs || world.getBlockMetadata(x - 1, y, z) != 5) return false;
+ if (world.getBlock(x - 2, y, z) != Blocks.stone_brick_stairs || world.getBlockMetadata(x - 2, y, z) != 0) return false;
+ // 3rd Layer
+ if (world.getBlock(x + 2, y - 1, z) != Blocks.stonebrick) return false;
+ if (world.getBlock(x - 2, y - 1, z) != Blocks.stonebrick) return false;
+ // 4th Layer
+ if (world.getBlock(x + 2, y - 2, z) != Blocks.stonebrick) return false;
+ if (world.getBlock(x - 2, y - 2, z) != Blocks.stonebrick) return false;
+ // 5th Layer
+ if (world.getBlock(x + 2, y - 3, z) != Blocks.stonebrick) return false;
+ if (world.getBlock(x - 2, y - 3, z) != Blocks.stonebrick) return false;
+ }else if (world.getBlockMetadata(x, y, z) == 1 || world.getBlockMetadata(x, y, z) == 3){
+ // Layers from top to bottom
+ // 1st Layer
+ if (world.getBlock(x, y + 1, z) != Blocks.stone_slab || world.getBlockMetadata(x, y + 1, z) != 5) return false;
+ if (world.getBlock(x, y + 1, z + 1) != Blocks.stone_slab || world.getBlockMetadata(x, y + 1, z + 1) != 5) return false;
+ if (world.getBlock(x, y + 1, z - 1) != Blocks.stone_slab || world.getBlockMetadata(x, y + 1, z - 1) != 5) return false;
+ // 2nd Layer
+ if (world.getBlock(x, y, z + 2) != Blocks.stone_brick_stairs || world.getBlockMetadata(x, y, z + 2) != 3) return false;
+ if (world.getBlock(x, y, z + 1) != Blocks.stone_brick_stairs || world.getBlockMetadata(x, y, z + 1) != 6) return false;
+ if (world.getBlock(x, y, z - 1) != Blocks.stone_brick_stairs || world.getBlockMetadata(x, y, z - 1) != 7) return false;
+ if (world.getBlock(x, y, z - 2) != Blocks.stone_brick_stairs || world.getBlockMetadata(x, y, z - 2) != 2) return false;
+ // 3rd Layer
+ if (world.getBlock(x, y - 1, z + 2) != Blocks.stonebrick) return false;
+ if (world.getBlock(x, y - 1, z - 2) != Blocks.stonebrick) return false;
+ // 4th Layer
+ if (world.getBlock(x, y - 2, z + 2) != Blocks.stonebrick) return false;
+ if (world.getBlock(x, y - 2, z - 2) != Blocks.stonebrick) return false;
+ // 5th Layer
+ if (world.getBlock(x, y - 3, z + 2) != Blocks.stonebrick) return false;
+ if (world.getBlock(x, y - 3, z - 2) != Blocks.stonebrick) return false;
+ }
+ // 3rd Layer
+ if (world.getBlock(x - 4, y - 1, z - 4) != BlockList.shadowBlock) return false;
+ if (world.getBlock(x - 4, y - 1, z + 4) != BlockList.shadowBlock) return false;
+ if (world.getBlock(x + 4, y - 1, z - 4) != BlockList.shadowBlock) return false;
+ if (world.getBlock(x + 4, y - 1, z + 4) != BlockList.shadowBlock) return false;
+ // 4th Layer
+ if (world.getBlock(x - 4, y - 2, z - 4) != Blocks.stonebrick) return false;
+ if (world.getBlock(x - 4, y - 2, z + 4) != Blocks.stonebrick) return false;
+ if (world.getBlock(x + 4, y - 2, z - 4) != Blocks.stonebrick) return false;
+ if (world.getBlock(x + 4, y - 2, z + 4) != Blocks.stonebrick) return false;
+ // 5th Layer
+ // Pillars
+ if (world.getBlock(x - 4, y - 3, z - 4) != Blocks.stonebrick) return false;
+ if (world.getBlock(x - 4, y - 3, z + 4) != Blocks.stonebrick) return false;
+ if (world.getBlock(x + 4, y - 3, z - 4) != Blocks.stonebrick) return false;
+ if (world.getBlock(x + 4, y - 3, z + 4) != Blocks.stonebrick) return false;
+ // Pedestals
+ if (!(world.getBlock(x, y - 3, z) instanceof BlockHandPedestal)) return false;
+ if (world.getBlock(x - 4, y - 3, z + 2) != BlockList.handPedestal || world.getBlockMetadata(x - 4, y - 3, z + 2) != 1) return false;
+ if (world.getBlock(x - 5, y - 3, z) != BlockList.handPedestal || world.getBlockMetadata(x - 5, y - 3, z) != 2) return false;
+ if (world.getBlock(x - 4, y - 3, z - 2) != BlockList.handPedestal || world.getBlockMetadata(x - 4, y - 3, z - 2) != 3) return false;
+ if (world.getBlock(x - 2, y - 3, z - 4) != BlockList.handPedestal || world.getBlockMetadata(x - 2, y - 3, z - 4) != 3) return false;
+ if (world.getBlock(x, y - 3, z - 5) != BlockList.handPedestal || world.getBlockMetadata(x, y - 3, z - 5) != 4) return false;
+ if (world.getBlock(x + 2, y - 3, z - 4) != BlockList.handPedestal || world.getBlockMetadata(x + 2, y - 3, z - 4) != 5) return false;
+ if (world.getBlock(x + 4, y - 3, z - 2) != BlockList.handPedestal || world.getBlockMetadata(x + 4, y - 3, z - 2) != 5) return false;
+ if (world.getBlock(x + 5, y - 3, z) != BlockList.handPedestal || world.getBlockMetadata(x + 5, y - 3, z) != 6) return false;
+ if (world.getBlock(x + 4, y - 3, z + 2) != BlockList.handPedestal || world.getBlockMetadata(x + 4, y - 3, z + 2) != 7) return false;
+ if (world.getBlock(x + 2, y - 3, z + 4) != BlockList.handPedestal || world.getBlockMetadata(x + 2, y - 3, z + 4) != 7) return false;
+ if (world.getBlock(x, y - 3, z + 5) != BlockList.handPedestal || world.getBlockMetadata(x, y - 3, z + 5) != 0) return false;
+ if (world.getBlock(x - 2, y - 3, z + 4) != BlockList.handPedestal || world.getBlockMetadata(x - 2, y - 3, z + 4) != 1) return false;
+ return true;
+ }
+
+ /**
+ * @param world
+ * @param x
+ * @param y
+ * @param z
+ */
+ public void addData(World world, int x, int y, int z)
+ {
+ pedestalItems.clear();
+ addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x + 2, y - 3, z - 4));
+ addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x - 4, y - 3, z + 2));
+ addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x, y - 3, z - 5));
+ addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x - 2, y - 3, z - 4));
+ addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x - 4, y - 3, z - 2));
+ addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x - 5, y - 3, z));
+ addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x + 4, y - 3, z - 2));
+ addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x + 5, y - 3, z));
+ addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x + 4, y - 3, z + 2));
+ addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x + 2, y - 3, z + 4));
+ addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x, y - 3, z + 5));
+ addPedestalInfo((TileEntityHandPedestal)world.getTileEntity(x - 2, y - 3, z + 4));
+ }
+
+ public int getNumberOfItems(World world, int x, int y, int z)
+ {
+ int items = 0;
+ if (((TileEntityHandPedestal)world.getTileEntity(x + 2, y - 3, z - 4)).heldItemStack != null) items++;
+ if (((TileEntityHandPedestal)world.getTileEntity(x - 4, y - 3, z + 2)).heldItemStack != null) items++;
+ if (((TileEntityHandPedestal)world.getTileEntity(x, y - 3, z - 5)).heldItemStack != null) items++;
+ if (((TileEntityHandPedestal)world.getTileEntity(x - 2, y - 3, z - 4)).heldItemStack != null) items++;
+ if (((TileEntityHandPedestal)world.getTileEntity(x - 4, y - 3, z - 2)).heldItemStack != null) items++;
+ if (((TileEntityHandPedestal)world.getTileEntity(x - 5, y - 3, z)).heldItemStack != null) items++;
+ if (((TileEntityHandPedestal)world.getTileEntity(x + 4, y - 3, z - 2)).heldItemStack != null) items++;
+ if (((TileEntityHandPedestal)world.getTileEntity(x + 5, y - 3, z)).heldItemStack != null) items++;
+ if (((TileEntityHandPedestal)world.getTileEntity(x + 4, y - 3, z + 2)).heldItemStack != null) items++;
+ if (((TileEntityHandPedestal)world.getTileEntity(x + 2, y - 3, z + 4)).heldItemStack != null) items++;
+ if (((TileEntityHandPedestal)world.getTileEntity(x, y - 3, z + 5)).heldItemStack != null) items++;
+ if (((TileEntityHandPedestal)world.getTileEntity(x - 2, y - 3, z + 4)).heldItemStack != null) items++;
+ return items;
+ }
+
+ public boolean canChangePedestals(World world, int x, int y, int z)
+ {
+ if (world.getBlock(x, y - 3, z) != BlockList.handPedestal) return false;
+ if (world.getBlock(x + 2, y - 3, z - 4) != BlockList.handPedestal) return false;
+ if (world.getBlock(x - 4, y - 3, z + 2) != BlockList.handPedestal) return false;
+ if (world.getBlock(x, y - 3, z - 5) != BlockList.handPedestal) return false;
+ if (world.getBlock(x - 2, y - 3, z - 4) != BlockList.handPedestal) return false;
+ if (world.getBlock(x - 4, y - 3, z - 2) != BlockList.handPedestal) return false;
+ if (world.getBlock(x - 5, y - 3, z) != BlockList.handPedestal) return false;
+ if (world.getBlock(x + 4, y - 3, z - 2) != BlockList.handPedestal) return false;
+ if (world.getBlock(x + 5, y - 3, z) != BlockList.handPedestal) return false;
+ if (world.getBlock(x + 4, y - 3, z + 2) != BlockList.handPedestal) return false;
+ if (world.getBlock(x + 2, y - 3, z + 4) != BlockList.handPedestal) return false;
+ if (world.getBlock(x, y - 3, z + 5) != BlockList.handPedestal) return false;
+ if (world.getBlock(x - 2, y - 3, z + 4) != BlockList.handPedestal) return false;
+ return true;
+ }
+
+ public void changePedestals(World world, int x, int y, int z)
+ {
+ changeHand(world, x, y - 3, z);
+ changeHand(world, x + 2, y - 3, z - 4);
+ changeHand(world, x - 4, y - 3, z + 2);
+ changeHand(world, x, y - 3, z - 5);
+ changeHand(world, x - 2, y - 3, z - 4);
+ changeHand(world, x - 4, y - 3, z - 2);
+ changeHand(world, x - 5, y - 3, z);
+ changeHand(world, x + 4, y - 3, z - 2);
+ changeHand(world, x + 5, y - 3, z);
+ changeHand(world, x + 4, y - 3, z + 2);
+ changeHand(world, x + 2, y - 3, z + 4);
+ changeHand(world, x, y - 3, z + 5);
+ changeHand(world, x - 2, y - 3, z + 4);
+ }
+
+ public void changeHand(World world, int x, int y, int z)
+ {
+ int l = world.getBlockMetadata(x, y, z);
+ world.playAuxSFX(2001, x, y, z, Block.getIdFromBlock(world.getBlock(x, y, z)));
+ TileEntityShadowHand tile = new TileEntityShadowHand();
+ if (world.getTileEntity(x, y, z) instanceof TileEntityHandPedestal){
+ if (((TileEntityHandPedestal)world.getTileEntity(x, y, z)).heldItemStack != null) tile.setHeldItemStack(((TileEntityHandPedestal)world.getTileEntity(x, y, z)).heldItemStack.copy());
+ if (tile.heldItemStack != null) tile.closeHand();
+ ((TileEntityHandPedestal)world.getTileEntity(x, y, z)).removeHeldItemStack();
+ world.setBlock(x, y, z, BlockList.shadowHand, l, 2);
+ world.setTileEntity(x, y, z, tile);
+ }
+ }
+
+ public void revertPedestals(World world, int x, int y, int z)
+ {
+ revertHand(world, x, y - 3, z);
+ revertHand(world, x + 2, y - 3, z - 4);
+ revertHand(world, x - 4, y - 3, z + 2);
+ revertHand(world, x, y - 3, z - 5);
+ revertHand(world, x - 2, y - 3, z - 4);
+ revertHand(world, x - 4, y - 3, z - 2);
+ revertHand(world, x - 5, y - 3, z);
+ revertHand(world, x + 4, y - 3, z - 2);
+ revertHand(world, x + 5, y - 3, z);
+ revertHand(world, x + 4, y - 3, z + 2);
+ revertHand(world, x + 2, y - 3, z + 4);
+ revertHand(world, x, y - 3, z + 5);
+ revertHand(world, x - 2, y - 3, z + 4);
+ }
+
+ public void revertHand(World world, int x, int y, int z)
+ {
+ int l = world.getBlockMetadata(x, y, z);
+ world.playAuxSFX(2001, x, y, z, Block.getIdFromBlock(BlockList.handPedestal));
+ world.playSoundEffect(x, y + 0.5F, z, "step.wood", 1F, 1F);
+ TileEntityHandPedestal tile = new TileEntityHandPedestal();
+ if (world.getTileEntity(x, y, z) instanceof TileEntityShadowHand){
+ if (((TileEntityShadowHand)world.getTileEntity(x, y, z)).heldItemStack != null) tile.setHeldItemStack(((TileEntityShadowHand)world.getTileEntity(x, y, z)).heldItemStack.copy());
+ ((TileEntityShadowHand)world.getTileEntity(x, y, z)).removeHeldItemStack();
+ world.setBlock(x, y, z, BlockList.handPedestal, l, 2);
+ world.setTileEntity(x, y, z, tile);
+ }
+ }
+
+ /**
+ * @param pedestal
+ */
+ public void addPedestalInfo(TileEntityHandPedestal pedestal)
+ {
+ ItemStack heldItemStack;
+ if (pedestal != null && (heldItemStack = pedestal.getHeldItemStack()) != null){
+ if (pedestalItems.isEmpty()) pedestalItems.add(heldItemStack.copy());
+ else{
+ boolean hasItem = false;
+ int index = 0;
+ for(int ind = 0; ind < pedestalItems.size() && !hasItem; ind++)
+ if (heldItemStack.getItem().equals(pedestalItems.get(ind).getItem()) && heldItemStack.getItemDamage() == pedestalItems.get(ind).getItemDamage()){
+ index = ind;
+ hasItem = true;
+ if (heldItemStack.hasTagCompound() && pedestalItems.get(ind).hasTagCompound() && !heldItemStack.getTagCompound().equals(pedestalItems.get(ind).getTagCompound())) hasItem = false;
+ }
+ if (!hasItem) pedestalItems.add(heldItemStack.copy());
+ else{
+ ItemStack object = pedestalItems.get(index).copy();
+ object.stackSize++;
+ pedestalItems.set(index, object);
+ }
+ }
+ pedestal.removeHeldItemStack();
+ pedestal.openHand();
+ }else if (pedestal != null && target != null) JewelrycraftUtil.addCursePoints(target, 20);
+ }
+
+ @SideOnly(Side.CLIENT)
+ public AxisAlignedBB getRenderBoundingBox()
+ {
+ AxisAlignedBB bb = AxisAlignedBB.getBoundingBox(xCoord - 5.5D, yCoord - 5.5D, zCoord - 5.5D, xCoord + 5.5D, yCoord + 5.5D, zCoord + 5.5D);
+ return bb;
+ }
+
+ /**
+ * @return
+ */
+ @Override
+ public Packet getDescriptionPacket()
+ {
+ NBTTagCompound nbttagcompound = new NBTTagCompound();
+ writeToNBT(nbttagcompound);
+ return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, 1, nbttagcompound);
+ }
+
+ /**
+ * @param net
+ * @param packet
+ */
+ @Override
+ public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet)
+ {
+ readFromNBT(packet.func_148857_g());
+ worldObj.func_147479_m(xCoord, yCoord, zCoord);
+ }
+}
diff --git a/src/main/java/darkknight/jewelrycraft/tileentity/renders/TileEntityShadowEyeRender.java b/src/main/java/darkknight/jewelrycraft/tileentity/renders/TileEntityShadowEyeRender.java
index 53ff9e1..82cffbb 100644
--- a/src/main/java/darkknight/jewelrycraft/tileentity/renders/TileEntityShadowEyeRender.java
+++ b/src/main/java/darkknight/jewelrycraft/tileentity/renders/TileEntityShadowEyeRender.java
@@ -1,100 +1,104 @@
-package darkknight.jewelrycraft.tileentity.renders;
-
-import net.minecraft.block.Block;
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.OpenGlHelper;
-import net.minecraft.client.renderer.Tessellator;
-import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
-import net.minecraft.entity.Entity;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.tileentity.TileEntity;
-import net.minecraft.util.ResourceLocation;
-import net.minecraft.world.World;
-import org.lwjgl.opengl.GL11;
-import org.lwjgl.util.glu.GLU;
-import org.lwjgl.util.glu.Sphere;
-import darkknight.jewelrycraft.model.ModelShadowEye;
-import darkknight.jewelrycraft.tileentity.TileEntityShadowEye;
-import darkknight.jewelrycraft.util.Variables;
-
-public class TileEntityShadowEyeRender extends TileEntitySpecialRenderer
-{
- ModelShadowEye eye = new ModelShadowEye();
- Sphere shadow = new Sphere();
-
- /**
- * @param te
- * @param x
- * @param y
- * @param z
- * @param scale
- */
- @Override
- public void renderTileEntityAt(TileEntity te, double x, double y, double z, float scale)
- {
- GL11.glPushMatrix();
- GL11.glTranslatef((float)x + 0.5F, (float)y + 1.6F, (float)z + 0.5F);
- TileEntityShadowEye eyeS = (TileEntityShadowEye)te;
- String texture = "textures/tileentities/ShadowEye" + eyeS.opening + ".png";
- ResourceLocation blockTexture = new ResourceLocation(Variables.MODID, texture);
- Minecraft.getMinecraft().renderEngine.bindTexture(blockTexture);
- GL11.glPushMatrix();
- GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
- try{
- int block = te.getBlockMetadata();
- if (block == 0) GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F);
- else if (block == 1){
- GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
- GL11.glRotatef(180F, 1.0F, 0.0F, 0.0F);
- }else if (block == 2){
- GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
- GL11.glRotatef(180F, 1.0F, 0.0F, 1.0F);
- }
- }
- catch(Exception e){}
- try{
- EntityPlayer player = te.getWorldObj().getClosestPlayer(te.xCoord, te.yCoord, te.zCoord, 16D);
- if (player != null) eye.render(player, te.xCoord, te.yCoord, te.zCoord, te.blockMetadata, eyeS.opening, 0.0625F);
- }
- catch(Exception e){
- eye.render((Entity)null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
- }
- if (eyeS.opening == 4){
- GL11.glPushMatrix();
- GL11.glDisable(GL11.GL_TEXTURE_2D);
- GL11.glEnable(GL11.GL_BLEND);
- GL11.glBlendFunc(GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
- GL11.glColor4f(0.0F, 0.0F, 0.0F, 1F);
- GL11.glRotatef(eyeS.timer*10F, 0, 1, 0);
- GL11.glRotatef(90.0F, 1, 0, 0);
- EntityPlayer player = te.getWorldObj().getClosestPlayer(te.xCoord, te.yCoord, te.zCoord, 9D);
- shadow.setNormals(GLU.GLU_NONE);
- shadow.draw(9.5F, 6, 6);
- GL11.glScalef(-1,-1,-1);
- shadow.draw(9.5F, 6, 6);
- GL11.glDisable(GL11.GL_BLEND);
- GL11.glEnable(GL11.GL_TEXTURE_2D);
- GL11.glPopMatrix();
- }
- GL11.glPopMatrix();
- GL11.glPopMatrix();
- }
-
- /**
- * @param world
- * @param i
- * @param j
- * @param k
- * @param block
- */
- public void adjustLightFixture(World world, int i, int j, int k, Block block)
- {
- Tessellator tess = Tessellator.instance;
- float brightness = block.getLightOpacity(world, i, j, k);
- int skyLight = world.getLightBrightnessForSkyBlocks(i, j, k, 0);
- int modulousModifier = skyLight % 65536;
- int divModifier = skyLight / 65536;
- tess.setColorOpaque_F(brightness, brightness, brightness);
- OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, modulousModifier, divModifier);
- }
-}
+package darkknight.jewelrycraft.tileentity.renders;
+
+import net.minecraft.block.Block;
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.renderer.OpenGlHelper;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.util.Vec3;
+import net.minecraft.world.World;
+
+import org.lwjgl.opengl.GL11;
+import org.lwjgl.util.glu.GLU;
+import org.lwjgl.util.glu.Sphere;
+
+import darkknight.jewelrycraft.model.ModelShadowEye;
+import darkknight.jewelrycraft.tileentity.TileEntityShadowEye;
+import darkknight.jewelrycraft.util.Variables;
+
+public class TileEntityShadowEyeRender extends TileEntitySpecialRenderer
+{
+ ModelShadowEye eye = new ModelShadowEye();
+ Sphere shadow = new Sphere();
+
+ /**
+ * @param te
+ * @param x
+ * @param y
+ * @param z
+ * @param scale
+ */
+ @Override
+ public void renderTileEntityAt(TileEntity te, double x, double y, double z, float scale)
+ {
+ GL11.glPushMatrix();
+ GL11.glTranslatef((float)x + 0.5F, (float)y + 1.6F, (float)z + 0.5F);
+ TileEntityShadowEye eyeS = (TileEntityShadowEye)te;
+ String texture = "textures/tileentities/ShadowEye" + eyeS.opening + ".png";
+ ResourceLocation blockTexture = new ResourceLocation(Variables.MODID, texture);
+ Minecraft.getMinecraft().renderEngine.bindTexture(blockTexture);
+ GL11.glPushMatrix();
+ GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
+ try{
+ int block = te.getBlockMetadata();
+ if (block == 0) GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F);
+ else if (block == 1) GL11.glRotatef(180F, 0.0F, 1.0F, 0.0F);
+ else if (block == 2) GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F);
+ }
+ catch(Exception e){}
+ if (te != null && te.getWorldObj() != null)
+ {
+ EntityPlayer player = te.getWorldObj().getClosestPlayer(te.xCoord, te.yCoord, te.zCoord, 16D);
+ if(player != null)
+ {
+ float x1 = (float) (te.xCoord - player.posX) + 0.5F;
+ float y1 = (float) (te.yCoord - player.posY) + 0.5F;
+ float z1 = (float) (te.zCoord - player.posZ) + 0.5F;
+ eyeS.model.render(player, 0, (float)(x1 >= 0 ? Math.atan(z1 / x1) : Math.PI + Math.atan(z1 / x1)), (float)(y1 >= 0 ? Math.atan(y1 / x1) : Math.atan(y1 / x1)), te.blockMetadata, eyeS.opening, 0.0625F);
+ }
+
+ }
+ else eyeS.model.render((Entity)null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F);
+
+ if (eyeS.opening == 4){
+ GL11.glPushMatrix();
+ GL11.glDisable(GL11.GL_TEXTURE_2D);
+ GL11.glEnable(GL11.GL_BLEND);
+ GL11.glBlendFunc(GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
+ GL11.glColor4f(0.0F, 0.0F, 0.0F, 1F);
+ GL11.glRotatef(eyeS.timer*10F, 0, 1, 0);
+ GL11.glRotatef(90.0F, 1, 0, 0);
+ shadow.setNormals(GLU.GLU_NONE);
+ shadow.draw(7.5F, 6, 6);
+ GL11.glScalef(-1,-1,-1);
+ shadow.draw(7.5F, 6, 6);
+ GL11.glDisable(GL11.GL_BLEND);
+ GL11.glEnable(GL11.GL_TEXTURE_2D);
+ GL11.glPopMatrix();
+ }
+ GL11.glPopMatrix();
+ GL11.glPopMatrix();
+ }
+
+ /**
+ * @param world
+ * @param i
+ * @param j
+ * @param k
+ * @param block
+ */
+ public void adjustLightFixture(World world, int i, int j, int k, Block block)
+ {
+ Tessellator tess = Tessellator.instance;
+ float brightness = block.getLightOpacity(world, i, j, k);
+ int skyLight = world.getLightBrightnessForSkyBlocks(i, j, k, 0);
+ int modulousModifier = skyLight % 65536;
+ int divModifier = skyLight / 65536;
+ tess.setColorOpaque_F(brightness, brightness, brightness);
+ OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, modulousModifier, divModifier);
+ }
+}