From 05b5b13256c420568d1f07ed634dfd47509d53f2 Mon Sep 17 00:00:00 2001 From: OnyxDarkKnight Date: Mon, 3 Mar 2014 20:58:11 +0200 Subject: Things --- .../jewelrycraft/block/BlockCrystalizer.java | 99 ++++++++++++++ common/darkknight/jewelrycraft/item/ItemRing.java | 14 +- .../tileentity/TileEntityCrystalizer.java | 143 +++++++++++++++++++++ .../jewelrycraft/util/JewelrycraftUtil.java | 1 + 4 files changed, 256 insertions(+), 1 deletion(-) create mode 100644 common/darkknight/jewelrycraft/block/BlockCrystalizer.java create mode 100644 common/darkknight/jewelrycraft/tileentity/TileEntityCrystalizer.java (limited to 'common') diff --git a/common/darkknight/jewelrycraft/block/BlockCrystalizer.java b/common/darkknight/jewelrycraft/block/BlockCrystalizer.java new file mode 100644 index 0000000..c6ea205 --- /dev/null +++ b/common/darkknight/jewelrycraft/block/BlockCrystalizer.java @@ -0,0 +1,99 @@ +package darkknight.jewelrycraft.block; + +import java.util.Random; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IconRegister; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import darkknight.jewelrycraft.tileentity.*; + +public class BlockCrystalizer extends BlockContainer +{ + Random rand = new Random(); + + protected BlockCrystalizer(int par1, Material par2Material) + { + super(par1, par2Material); + this.setBlockBounds(0.0F, 0F, 0.0F, 1.0F, 0.8F, 1.0F); + } + + @Override + public TileEntity createNewTileEntity(World world) + { + return new TileEntityCrystalizer(); + } + + @Override + public boolean renderAsNormalBlock() + { + return false; + } + + @Override + public boolean onBlockActivated(World world, int i, int j, int k, EntityPlayer entityPlayer, int par6, float par7, float par8, float par9) + { + TileEntityCrystalizer te = (TileEntityCrystalizer) world.getBlockTileEntity(i, j, k); + ItemStack item = entityPlayer.inventory.getCurrentItem(); + if (te != null && !world.isRemote) + { + } + return true; + } + + public void dropItem(World world, double x, double y, double z, ItemStack stack) + { + EntityItem entityitem = new EntityItem(world, x + 0.5D, y + 1D, z + 0.5D, stack); + entityitem.motionX = 0; + entityitem.motionZ = 0; + entityitem.motionY = 0.21000000298023224D; + world.spawnEntityInWorld(entityitem); + } + + public void breakBlock(World world, int i, int j, int k, int par5, int par6) + { + TileEntityCrystalizer te = (TileEntityCrystalizer) world.getBlockTileEntity(i, j, k); + if (te != null) + { + world.markTileEntityForDespawn(te); + } + super.breakBlock(world, i, j, k, par5, par6); + } + + @Override + public void onBlockClicked(World world, int i, int j, int k, EntityPlayer player) + { + TileEntityCrystalizer te = (TileEntityCrystalizer) world.getBlockTileEntity(i, j, k); + if (te != null && !world.isRemote) + { + } + } + + @Override + public boolean shouldSideBeRendered(IBlockAccess iblockaccess, int i, int j, int k, int l) + { + return false; + } + + @Override + public boolean isOpaqueCube() + { + return false; + } + + @Override + public int getRenderType() + { + return -1; + } + + @Override + public void registerIcons(IconRegister icon) + { + this.blockIcon = icon.registerIcon("jewelrycraft:crystalizer"); + } +} diff --git a/common/darkknight/jewelrycraft/item/ItemRing.java b/common/darkknight/jewelrycraft/item/ItemRing.java index 70462f3..184d3f3 100644 --- a/common/darkknight/jewelrycraft/item/ItemRing.java +++ b/common/darkknight/jewelrycraft/item/ItemRing.java @@ -311,7 +311,19 @@ public class ItemRing extends Item else if (JewelryNBT.isModifierX(stack, new ItemStack(Item.feather)) && entityplayer != null) { entityplayer.addPotionEffect(new PotionEffect(Potion.jump.id, 4, amplifier, true)); - entityplayer.fallDistance=0; + if(entityplayer.inventory.armorInventory[0] != null) + { + int damage = entityplayer.inventory.armorInventory[0].getMaxDamage() - entityplayer.inventory.armorInventory[0].getItemDamage(); + if(damage - entityplayer.fallDistance > 0){ + entityplayer.inventory.armorInventory[0].damageItem((int)entityplayer.fallDistance, entityplayer); + entityplayer.fallDistance = 0; + } + else + { + --entityplayer.inventory.armorInventory[0].stackSize; + entityplayer.fallDistance -= damage; + } + } } else if (JewelryNBT.isModifierX(stack, new ItemStack(Item.potion, 1, 8270)) && entityplayer != null) entityplayer.addPotionEffect(new PotionEffect(Potion.invisibility.id, 4, amplifier, true)); } diff --git a/common/darkknight/jewelrycraft/tileentity/TileEntityCrystalizer.java b/common/darkknight/jewelrycraft/tileentity/TileEntityCrystalizer.java new file mode 100644 index 0000000..5a4caeb --- /dev/null +++ b/common/darkknight/jewelrycraft/tileentity/TileEntityCrystalizer.java @@ -0,0 +1,143 @@ +package darkknight.jewelrycraft.tileentity; + +import darkknight.jewelrycraft.config.ConfigHandler; +import darkknight.jewelrycraft.util.JewelryNBT; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.INetworkManager; +import net.minecraft.network.packet.Packet; +import net.minecraft.network.packet.Packet132TileEntityData; +import net.minecraft.tileentity.TileEntity; + +public class TileEntityCrystalizer extends TileEntity +{ + public boolean hasJewelry, hasModifier, hasEndItem, isDirty, hasJewel; + public ItemStack jewelry, modifier, endItem, jewel; + public int timer, effect; + public float angle; + + public TileEntityCrystalizer() + { + this.jewelry = new ItemStack(0, 0, 0); + this.modifier = new ItemStack(0, 0, 0); + this.endItem = new ItemStack(0, 0, 0); + this.jewel = new ItemStack(0, 0, 0); + this.hasJewelry = false; + this.hasModifier = false; + this.hasEndItem = false; + this.hasJewel = false; + this.timer = 0; + this.effect = 0; + this.angle = 0; + this.isDirty = false; + } + + @Override + public void writeToNBT(NBTTagCompound nbt) + { + super.writeToNBT(nbt); + nbt.setBoolean("hasJewelry", hasJewelry); + nbt.setBoolean("hasModifier", hasModifier); + nbt.setBoolean("hasEndItem", hasEndItem); + nbt.setBoolean("hasJewel", hasJewel); + nbt.setInteger("timer", timer); + nbt.setInteger("effect", effect); + nbt.setFloat("angle", angle); + + NBTTagCompound tag = new NBTTagCompound(); + NBTTagCompound tag1 = new NBTTagCompound(); + NBTTagCompound tag2 = new NBTTagCompound(); + NBTTagCompound tag3 = new NBTTagCompound(); + + this.jewelry.writeToNBT(tag); + nbt.setCompoundTag("jewelry", tag); + this.modifier.writeToNBT(tag1); + nbt.setCompoundTag("modifier", tag1); + this.endItem.writeToNBT(tag2); + nbt.setCompoundTag("endItem", tag2); + this.jewel.writeToNBT(tag3); + nbt.setCompoundTag("jewel", tag3); + } + + @Override + public void readFromNBT(NBTTagCompound nbt) + { + super.readFromNBT(nbt); + this.hasJewelry = nbt.getBoolean("hasJewelry"); + this.hasModifier = nbt.getBoolean("hasModifier"); + this.hasEndItem = nbt.getBoolean("hasEndItem"); + this.hasJewel = nbt.getBoolean("hasJewel"); + + this.timer = nbt.getInteger("timer"); + this.effect = nbt.getInteger("effect"); + this.angle = nbt.getFloat("angle"); + this.jewelry = new ItemStack(0, 0, 0); + this.jewelry.readFromNBT(nbt.getCompoundTag("jewelry")); + this.modifier = new ItemStack(0, 0, 0); + this.modifier.readFromNBT(nbt.getCompoundTag("modifier")); + this.endItem = new ItemStack(0, 0, 0); + this.endItem.readFromNBT(nbt.getCompoundTag("endItem")); + this.jewel = new ItemStack(0, 0, 0); + this.jewel.readFromNBT(nbt.getCompoundTag("jewel")); + } + + @Override + public void updateEntity() + { + super.updateEntity(); + if(isDirty){ + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + isDirty = true; + } + if(angle<360F)angle+=3F; + else angle=0F; + if (this.hasJewelry && (this.hasModifier || this.hasJewel) && !this.hasEndItem) + { + if (timer > 0) + { + timer--; + for (int l = 0; l < ConfigHandler.jewelryCraftingTime/(timer + 2); ++l) + { + if(this.getBlockMetadata() == 0) this.worldObj.spawnParticle("witchMagic", xCoord + 0.5F, (double) yCoord + 0.8F, zCoord + 0.2F, 0.0D, 0.0D, 0.0D); + if(this.getBlockMetadata() == 1) this.worldObj.spawnParticle("witchMagic", xCoord + 0.8F, (double) yCoord + 0.8F, zCoord + 0.5F, 0.0D, 0.0D, 0.0D); + if(this.getBlockMetadata() == 2) this.worldObj.spawnParticle("witchMagic", xCoord + 0.5F, (double) yCoord + 0.8F, zCoord + 0.8F, 0.0D, 0.0D, 0.0D); + if(this.getBlockMetadata() == 3) this.worldObj.spawnParticle("witchMagic", xCoord + 0.2F, (double) yCoord + 0.8F, zCoord + 0.5F, 0.0D, 0.0D, 0.0D); + } + } + if (timer == 0) + { + this.hasEndItem = true; + this.endItem = jewelry.copy(); + if (hasModifier && modifier != new ItemStack(0, 0, 0)) JewelryNBT.addModifier(endItem, modifier); + if (hasJewel && jewel != new ItemStack(0, 0, 0)) JewelryNBT.addJewel(endItem, jewel); + if (hasJewel && hasModifier && JewelryNBT.isJewelX(endItem, new ItemStack(Item.netherStar)) && JewelryNBT.isModifierX(endItem, new ItemStack(Item.book))) JewelryNBT.addMode(endItem, "Disenchant"); + if (hasModifier && JewelryNBT.isModifierEffectType(endItem)) JewelryNBT.addMode(endItem, "Activated"); + this.hasJewelry = false; + this.jewelry = new ItemStack(0, 0, 0); + this.hasModifier = false; + this.modifier = new ItemStack(0, 0, 0); + this.hasJewel = false; + this.jewel = new ItemStack(0, 0, 0); + timer = -1; + } + } + } + + @Override + public Packet getDescriptionPacket() + { + Packet132TileEntityData packet = (Packet132TileEntityData) super.getDescriptionPacket(); + NBTTagCompound dataTag = packet != null ? packet.data : new NBTTagCompound(); + writeToNBT(dataTag); + return new Packet132TileEntityData(xCoord, yCoord, zCoord, 1, dataTag); + } + + @Override + public void onDataPacket(INetworkManager net, Packet132TileEntityData pkt) + { + super.onDataPacket(net, pkt); + NBTTagCompound tag = pkt != null ? pkt.data : new NBTTagCompound(); + readFromNBT(tag); + } +} diff --git a/common/darkknight/jewelrycraft/util/JewelrycraftUtil.java b/common/darkknight/jewelrycraft/util/JewelrycraftUtil.java index c2c456e..b344724 100644 --- a/common/darkknight/jewelrycraft/util/JewelrycraftUtil.java +++ b/common/darkknight/jewelrycraft/util/JewelrycraftUtil.java @@ -23,6 +23,7 @@ public class JewelrycraftUtil { //Modifiers modifiers.add(new ItemStack(Block.chest)); + modifiers.add(new ItemStack(Block.torchWood)); modifiers.add(new ItemStack(Item.book)); modifiers.add(new ItemStack(Item.sugar)); modifiers.add(new ItemStack(Item.feather)); -- cgit v1.2.3