Jump to content

SwordsMiner

Members
  • Posts

    35
  • Joined

  • Last visited

Converted

  • Gender
    Undisclosed
  • Personal Text
    I am new!

SwordsMiner's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. How should I go about this then? Previously it worked for me when I used onBlockAdded and saved x y and z but, yes, as your implying it all went down hill with the Tile Entity. How should I go about finding the x, y, and z correctly?
  2. Hey guys, I am trying to find a block in a system of cables, the idea is simple: Block 1 says "I need BlockLOL.class", Wire 1 says "I dont have it? Do you wire 2?", Wire 2 says "Its next to me! here!", and it goes back down the line. However right now I cant even get the nearby blocks, and when I was able to somehow, it wouldnt detect any cables and would stop. Heres my code: General wire, BlockWire package com.revereor.blocks; import java.util.ArrayList; import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import com.revereor.blocks.util.BlockHelper; import com.revereor.tileentity.TileEntityWire; public class BlockWire extends BlockContainer{ protected TileEntityWire tileEntity; public BlockWire() { super(Material.cloth); this.setStepSound(soundTypeCloth); this.setHardness(0.1F); } public BlockWire(Material material) { super(material); } public BlockGeneral getBlockFromSystem(Class type, BlockWire last){ Block[] nearby = BlockHelper.getDirectNearbyBlocks(tileEntity); for(Block bl : nearby){ if(type.isInstance(bl)) return (BlockGeneral) bl; if(type.isInstance(this)) return (BlockGeneral) this; ArrayList<BlockWire> nearbyWires = getNearbyWires(); for(BlockWire wire : nearbyWires){ BlockGeneral bg = wire.getBlockFromSystem(type, this); if(bg != null) return bg; } } return null; } public ArrayList<BlockWire> getNearbyWires(){ ArrayList<BlockWire> wires = new ArrayList<BlockWire>(); Block[] nearby = BlockHelper.getDirectNearbyBlocks(tileEntity); for(Block bl : nearby){ if(!Block.isEqualTo(bl, this)){ if(bl instanceof BlockWire){ wires.add((BlockWire)bl); } } } return wires; } public void onBlockAdded(World world,int x, int y, int z){ tileEntity.x=x; tileEntity.y=y; tileEntity.z=z; } @Override public TileEntity createNewTileEntity(World var1, int var2) { tileEntity = new TileEntityWire(); return tileEntity; } } BlockRemoteControlCenter, block thats trying to get control center. package com.revereor.blocks; import com.revereor.tileentity.TileEntityWire; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; public class BlockRemoteControlCenter extends BlockGeneral { public BlockRemoteControlCenter() { super(Material.iron); this.setStepSound(soundTypeMetal); } public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) { BlockControlCenter con = this.getControlCenter(); if(con != null){ System.out.println(con); } else System.out.println("no control center found"); return false; } @Override public TileEntityWire setTileEntity() { return new TileEntityWire(); } } Block Control center, The block we need. package com.revereor.blocks; import com.revereor.tileentity.TileEntityWire; import net.minecraft.block.material.Material; public class BlockControlCenter extends BlockGeneral{ public BlockControlCenter() { super(Material.iron); this.setStepSound(soundTypeMetal); } @Override public TileEntityWire setTileEntity() { return new TileEntityWire(); } } BlockGeneral, the abstract base of functional blocks, but not wires. package com.revereor.blocks; import java.util.ArrayList; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import com.revereor.blocks.util.BlockHelper; import com.revereor.tileentity.TileEntityWire; public abstract class BlockGeneral extends BlockWire{ protected BlockGeneral(Material p_i45394_1_) { super(p_i45394_1_); } public BlockGeneral getBlock(Class type){ ArrayList<BlockWire> wires = getNearbyWires(); for(BlockWire wire : wires){ BlockGeneral bl = wire.getBlockFromSystem(type,this); if(bl != null){ return bl; } } return null; } public BlockControlCenter getControlCenter(){ return (BlockControlCenter) getBlock(BlockControlCenter.class); } public abstract TileEntityWire setTileEntity(); @Override public TileEntity createNewTileEntity(World var1, int var2) { tileEntity = setTileEntity(); return tileEntity; } } BlockHelper, used to get blocks package com.revereor.blocks.util; import net.minecraft.block.Block; import net.minecraft.tileentity.TileEntity; import com.revereor.main.Main; public class BlockHelper { public static boolean isDirect(int x, int tx, int y, int ty, int z, int tz){ return ((x == tx+1 || x == tx-1) && !(y == ty+1 || y == ty-1) && !(z == tz+1 || z == tz-1)) || (!(x == tx+1 || x == tx-1) && (y == ty+1 || y == ty-1) && !(z == tz+1 || z == tz-1)) || (!(x == tx+1 || x == tx-1) && !(y == ty+1 || y == ty-1) && (z == tz+1 || z == tz-1)); } public static boolean isIndirect(int x, int tx, int y, int ty, int z, int tz){ return !isDirect(x, tx, y, ty, z, tz); } public static Block[] getDirectNearbyBlocks(TileEntity tileEntity){ Block[] blks = new Block[6]; for(int x = tileEntity.xCoord-1; x < tileEntity.xCoord+1; x++){ for(int y = tileEntity.yCoord-1; y < tileEntity.yCoord+1; y++){ for(int z = tileEntity.zCoord-1; z < tileEntity.zCoord+1; z++){ if(isDirect(x, tileEntity.xCoord, y, tileEntity.yCoord, z, tileEntity.zCoord)){ for(int i = 0; i < blks.length; i++){ if(blks[i] == null){ blks[i] = tileEntity.getWorldObj().getBlock(x, y, z); } else if(i == blks.length){ Main.print("Exceeded maximum blocks while getting nearby blocks."); } } } } } } return blks; } } Open to any other ideas to get this!
  3. Thanks, Ive been doing this for a long time so I am looking over exceptions since vanilla minecraft makes so many. Thanks again!
  4. After trial and error, I came to the conclusion that writeNBT/getDescriptionPacket is called but onDataPacket/readFromNBT is not. Any ideas?
  5. I cant seem to get my TileEntity to save its NBT, ive looked at updated 1.7.2 tutorials on saving NBT and it just wont work. Here is my code: public Packet getDescriptionPacket() { NBTTagCompound nbtTag = new NBTTagCompound(); this.writeToNBT(nbtTag); return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 1, nbtTag); } public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet) { readFromNBT(packet.func_148857_g()); } public void readFromNBT(NBTTagCompound par1NBTTagCompound) { super.readFromNBT(par1NBTTagCompound); NBTTagList tagList = par1NBTTagCompound.getTagList("Inventory", Constants.NBT.TAG_COMPOUND); for (int i = 0; i < tagList.tagCount(); i++) { NBTTagCompound tag = (NBTTagCompound) tagList.getCompoundTagAt(i); byte slot = tag.getByte("Slot"); if (slot >= 0 && slot < slots.length) { slots[slot] = ItemStack.loadItemStackFromNBT(tag); } } } public void writeToNBT(NBTTagCompound par1NBTTagCompound) { super.writeToNBT(par1NBTTagCompound); NBTTagList itemList = new NBTTagList(); for (int i = 0; i < slots.length; i++) { ItemStack stack = slots[i]; if (stack != null) { NBTTagCompound tag = new NBTTagCompound(); tag.setByte("Slot", (byte) i); stack.writeToNBT(tag); itemList.appendTag(tag); } } par1NBTTagCompound.setTag("Inventory", itemList); } Slots is indeed the itemstack array used by the container/gui. I'll give any more code if needed.
  6. Oh and sorry for double posting!! It must have submitted twice! ;/
  7. Hey guys, I generally dislike coming here to forums, but I have been struggling to get this to work for hours. My problem is I want to make it so I cannot take out of the 2nd slot (number 1 in the index) BlockExtractinator: (the block) public boolean onBlockActivated(World par1World, int x, int y, int z, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) { if (par1World.isRemote){ return true; } else { TileEntityExtractinator entity = (TileEntityExtractinator)par1World.getTileEntity(x, y, z); if (entity != null){ par5EntityPlayer.openGui(Main.instance, Main.instance.guiIdExtractinator, par1World, x, y, z); } return true; } } @Override public void breakBlock(World world, int x, int y, int z, Block par5, int par6) { dropItems(world, x, y, z); super.breakBlock(world, x, y, z, par5, par6); } private void dropItems(World world, int x, int y, int z){ Random rand = new Random(); TileEntity tileEntity = world.getTileEntity(x, y, z); if (!(tileEntity instanceof IInventory)) { return; } IInventory inventory = (IInventory) tileEntity; for (int i = 0; i < inventory.getSizeInventory(); i++) { ItemStack item = inventory.getStackInSlot(i); if (item != null && item.stackSize > 0) { float rx = rand.nextFloat() * 0.8F + 0.1F; float ry = rand.nextFloat() * 0.8F + 0.1F; float rz = rand.nextFloat() * 0.8F + 0.1F; EntityItem entityItem = new EntityItem(world, x + rx, y + ry, z + rz, new ItemStack(item.getItem(), item.stackSize, item.getItemDamage())); if (item.hasTagCompound()) { entityItem.getEntityItem().setTagCompound((NBTTagCompound) item.getTagCompound().copy()); } float factor = 0.05F; entityItem.motionX = rand.nextGaussian() * factor; entityItem.motionY = rand.nextGaussian() * factor + 0.2F; entityItem.motionZ = rand.nextGaussian() * factor; world.spawnEntityInWorld(entityItem); item.stackSize = 0; } } } @Override public void onBlockExploded(World world, int x, int y, int z, Explosion explosion) { } @Override public TileEntity createNewTileEntity(World var1, int var2) { return new TileEntityExtractinator(); } GUI private TileEntityExtractinator extractinator; public static final ResourceLocation texture = new ResourceLocation(Main.MODID.toLowerCase(), "textures/gui/extractinator.png"); public GuiExtractinator(InventoryPlayer inventoryPlayer, TileEntityExtractinator entity) { super(new ContainerExtractinator(inventoryPlayer, entity)); this.extractinator = entity; this.xSize = 176; this.ySize = 166; } @Override protected void drawGuiContainerBackgroundLayer(float var1, int var2, int var3) { GL11.glColor4f(1F, 1F, 1F, 1F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); } @Override protected void drawGuiContainerForegroundLayer(int var1, int var2) { String name = "Extractinator"; this.fontRendererObj.drawString(name, this.xSize/2 - this.fontRendererObj.getStringWidth(name) /2, 6, 4210752); this.fontRendererObj.drawString(StatCollector.translateToLocal("container.inventory").trim(), 8, this.ySize - 96, 4210752); } TileEntityExtractinator package com.revereor.tileentity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; public class TileEntityExtractinator extends TileEntity implements ISidedInventory{ private ItemStack[] slots = new ItemStack[2]; private int extractTime; private static final int[] slots_top = new int[]{0}; private static final int[] slots_bottom = new int[]{1}; private static final int[] slots_sides = new int[]{}; public int getSizeInventory(){ return this.slots.length; } @Override public ItemStack getStackInSlot(int var1) { return slots[var1]; } @Override public ItemStack decrStackSize(int var1, int var2) { // TODO Auto-generated method stub return null; } @Override public ItemStack getStackInSlotOnClosing(int var1) { // TODO Auto-generated method stub return null; } @Override public void setInventorySlotContents(int var1, ItemStack var2) { slots[var1] = var2; } @Override public String getInventoryName() { return "Extractinator"; } @Override public boolean hasCustomInventoryName() { return true; } @Override public int getInventoryStackLimit() { return 64; } @Override public boolean isUseableByPlayer(EntityPlayer var1) { // TODO Auto-generated method stub return false; } @Override public void openInventory() { // TODO Auto-generated method stub } @Override public void closeInventory() { // TODO Auto-generated method stub } public void updateEntity(){ if(slots[0] != null){ } else { extractTime = 0; } } @Override public boolean isItemValidForSlot(int var1, ItemStack var2) { return var1 != 1; } @Override public int[] getAccessibleSlotsFromSide(int var1) { return var1 == 0 ? slots_bottom : (var1 == 1 ? slots_top : slots_sides); } @Override public boolean canInsertItem(int var1, ItemStack var2, int var3) { return this.isItemValidForSlot(var1, var2); } @Override public boolean canExtractItem(int var1, ItemStack var2, int var3) { return var3 != 0 || var1 != 1; } } Container package com.revereor.container; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.ICrafting; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import com.revereor.tileentity.TileEntityExtractinator; public class ContainerExtractinator extends Container { private TileEntityExtractinator extractinator; public ContainerExtractinator(InventoryPlayer inventory, TileEntityExtractinator entity) { this.extractinator = entity; this.addSlotToContainer(new Slot(entity, 0, 52,35)); this.addSlotToContainer(new Slot(entity, 1, 116,35)); for(int i = 0; i < 3; i++){ for(int j = 0; j < 9; j++){ this.addSlotToContainer(new Slot(inventory, j + i*9 + 9, j*18+8, i*18+84)); } } for(int i = 0; i < 9; i++){ for(int j = 0; j < 1; j++){ this.addSlotToContainer(new Slot(inventory, i, 8+i*18, 142)); } } } @Override public boolean canInteractWith(EntityPlayer var1) { return true; } } Sorry if thats a lot!
  8. Damage is acting oddly, its still "regenerating" itself
  9. Doesnt work , but I do notice a decrease in lag (it used to give out for a second before) Heres what I have in place of my server tick handler now: package mods.MoreMinecraft.Classes.Items; import mods.MoreMinecraft.Classes.MoreMinecraft; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumArmorMaterial; import net.minecraft.item.Item; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.world.World; public class ItemArmorRedstoneMod extends ItemArmor { String path = "/textures/armor/"; String Extension = ".png"; String armorFile; public ItemArmorRedstoneMod(int par1, EnumArmorMaterial par2EnumArmorMaterial, int par3, int par4, String armorFile) { super(par1, par2EnumArmorMaterial, par3, par4); this.armorFile = armorFile; } @Override public void registerIcons(IconRegister reg) { this.itemIcon = reg.registerIcon(MoreMinecraft.modID + ":" + this.getUnlocalizedName()); } @Override public String getArmorTexture(ItemStack stack, Entity entity, int slot, int layer) { return "moreminecraft"+":" + armorFile + Extension; } @Override public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) { return Item.redstone.itemID == par2ItemStack.itemID ? true : super.getIsRepairable(par1ItemStack, par2ItemStack); } boolean scubaTank = false; boolean alreadyJumped = false; boolean alreadyJumpedDamaged = false; @Override public void onArmorTickUpdate(World par1World, EntityPlayer player, ItemStack par3ItemStack){ if(player.getCurrentItemOrArmor(4) != null){ ItemStack itemPar1 = player.getCurrentItemOrArmor(4); if(itemPar1.getItem() == MoreMinecraft.helmetGogglesVision){ if(itemPar1.getItem().getDamage(itemPar1) < 72000){ player.addPotionEffect((new PotionEffect(Potion.nightVision.getId(), 219, 0))); } if(itemPar1.getItemDamage() == 0 && itemPar1.getItemDamage() < 72000){ itemPar1.setItemDamage(1); } else if(itemPar1.getItemDamage() < 72000) itemPar1.setItemDamage(itemPar1.getItemDamage() + 1); } } if(player.getCurrentItemOrArmor(3) != null){ ItemStack itemPar1 = player.getCurrentItemOrArmor(3); if(itemPar1.getItem() == MoreMinecraft.plateDualHearts){ if(itemPar1.getItem().getDamage(itemPar1) < 72000){ player.addPotionEffect((new PotionEffect(Potion.regeneration.getId(), 21, 2))); player.addPotionEffect((new PotionEffect(Potion.field_76443_y.getId(), 21, 0))); } if(itemPar1.getItemDamage() == 0 && itemPar1.getItemDamage() < 72000){ itemPar1.setItemDamage(1); } else if(itemPar1.getItemDamage() < 72000) itemPar1.setItemDamage(itemPar1.getItemDamage() + 1); } } if(player.getCurrentItemOrArmor(4) != null){ ItemStack itemPar1 = player.getCurrentItemOrArmor(4); if(itemPar1.getItem() == MoreMinecraft.scubaHelmet && player.isInsideOfMaterial(Material.water)){ if(itemPar1.getItem().getDamage(itemPar1) < 72000){ player.addPotionEffect((new PotionEffect(Potion.waterBreathing.getId(), 21, 0))); } if(itemPar1.getItemDamage() == 0 && itemPar1.getItemDamage() < 72000 && scubaTank){ itemPar1.setItemDamage(1); } else if(itemPar1.getItemDamage() < 72000 && scubaTank) itemPar1.setItemDamage(itemPar1.getItemDamage() + 1); if(itemPar1.getItemDamage() == 0 && itemPar1.getItemDamage() < 72000 && !scubaTank){ itemPar1.setItemDamage(4); } else if(itemPar1.getItemDamage() < 72000 && !scubaTank) itemPar1.setItemDamage(itemPar1.getItemDamage() + 4); } } if(player.getCurrentItemOrArmor(3) != null){ ItemStack itemPar1 = player.getCurrentItemOrArmor(3); if(itemPar1.getItem() == MoreMinecraft.scubaTank){ scubaTank = true; if(player.onGround){ player.addPotionEffect((new PotionEffect(Potion.moveSlowdown.getId(), 21, 0))); } } else scubaTank = false; } else scubaTank = false; if(player.getCurrentItemOrArmor(1) != null){ ItemStack itemPar1 = player.getCurrentItemOrArmor(1); if(itemPar1.getItem() == MoreMinecraft.jumpBoots){ boolean isJumping = Minecraft.getMinecraft().gameSettings.keyBindJump.pressed && !player.capabilities.isFlying; if(itemPar1.getItem().getDamage(itemPar1) < 60000 && isJumping && !alreadyJumped){ player.addPotionEffect((new PotionEffect(Potion.jump.getId(), 1, 0))); if(!player.capabilities.isCreativeMode && !alreadyJumpedDamaged && !alreadyJumped){ itemPar1.setItemDamage(itemPar1.getItemDamage() + 100); alreadyJumpedDamaged = true; } alreadyJumped = true; } /*if(itemPar1.getItemDamage() == 0 && itemPar1.getItemDamage() < 60000){ itemPar1.setItemDamage(1); } else if(itemPar1.getItemDamage() < 60000) itemPar1.setItemDamage(itemPar1.getItemDamage() + 1); */ } } if(player.onGround || player.isInWater()){ alreadyJumped = false; alreadyJumpedDamaged = false; } } }
  10. Ill try it out, but what about items, I have a item that uses it too: package mods.MoreMinecraft.Classes.Items; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import mods.MoreMinecraft.Classes.MoreMinecraft; import mods.MoreMinecraft.Classes.Entities.EntityBakedPotatoLaunched; import mods.MoreMinecraft.Classes.Entities.EntityPoisonPotatoLaunched; import mods.MoreMinecraft.Classes.Entities.EntityPotatoLaunched; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class PotatoLauncher extends Item { boolean potatoFired = false; boolean potatoBakedFired = false; boolean potatoPoisonFired = false; public int thrownDamage = 6; public static int current = 0; public PotatoLauncher(int par1) { super(par1); this.maxStackSize = 1; this.setMaxDamage(40000); } @SideOnly(Side.CLIENT) public void registerIcons(IconRegister reg) { this.itemIcon = reg.registerIcon(MoreMinecraft.modID + ":" + this.getUnlocalizedName()); } /** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer */ public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { if(this.getDamage(par1ItemStack) < 40000 || par3EntityPlayer.capabilities.isCreativeMode){ //par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); if(par3EntityPlayer.inventory.hasItem(Item.potato.itemID) && !par3EntityPlayer.capabilities.isCreativeMode){ par2World.spawnEntityInWorld(new EntityPotatoLaunched(par2World, par3EntityPlayer, thrownDamage, par3EntityPlayer)); this.setDamage(par1ItemStack, this.getDamage(par1ItemStack)+500); par3EntityPlayer.inventory.consumeInventoryItem(Item.potato.itemID); return par1ItemStack; } else if(par3EntityPlayer.capabilities.isCreativeMode){ par2World.spawnEntityInWorld(new EntityPotatoLaunched(par2World, par3EntityPlayer, thrownDamage, par3EntityPlayer)); return par1ItemStack; } if(par3EntityPlayer.inventory.hasItem(Item.bakedPotato.itemID) && !par3EntityPlayer.capabilities.isCreativeMode){ par2World.spawnEntityInWorld(new EntityBakedPotatoLaunched(par2World, par3EntityPlayer, thrownDamage, par3EntityPlayer)); this.setDamage(par1ItemStack, this.getDamage(par1ItemStack)+500); par3EntityPlayer.inventory.consumeInventoryItem(Item.bakedPotato.itemID); return par1ItemStack; } else if(par3EntityPlayer.capabilities.isCreativeMode){ par2World.spawnEntityInWorld(new EntityBakedPotatoLaunched(par2World, par3EntityPlayer, thrownDamage, par3EntityPlayer)); return par1ItemStack; } if(par3EntityPlayer.inventory.hasItem(Item.poisonousPotato.itemID) && !par3EntityPlayer.capabilities.isCreativeMode){ par2World.spawnEntityInWorld(new EntityPoisonPotatoLaunched(par2World, par3EntityPlayer, thrownDamage, par3EntityPlayer)); this.setDamage(par1ItemStack, this.getDamage(par1ItemStack)+500); par3EntityPlayer.inventory.consumeInventoryItem(Item.poisonousPotato.itemID); return par1ItemStack; } else if(par3EntityPlayer.capabilities.isCreativeMode){ par2World.spawnEntityInWorld(new EntityPoisonPotatoLaunched(par2World, par3EntityPlayer, thrownDamage, par3EntityPlayer)); return par1ItemStack; } par3EntityPlayer.addChatMessage("You dont have any Potatoes!"); return par1ItemStack; } else par3EntityPlayer.addChatMessage("This potato launcher is out of charge!"); return par1ItemStack; } }
  11. Actually, it works fine until it around the durability of 4000.. I dont understand. and I tried that
  12. Im still seeing the durability of 65532. Help?
  13. Ill give you my client, common, and tick handler. Tick: package mods.MoreMinecraft.Classes.common; import java.util.EnumSet; import mods.MoreMinecraft.Classes.MoreMinecraft; import net.minecraft.block.material.Material; import net.minecraft.client.Minecraft; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import org.lwjgl.input.Keyboard; import cpw.mods.fml.common.ITickHandler; import cpw.mods.fml.common.TickType; public class ServerTickHandler implements ITickHandler { boolean scubaTank = false; boolean alreadyJumped = false; boolean alreadyJumpedDamaged = false; private void OnPlayerTick(EntityPlayer player){ if(player.getCurrentItemOrArmor(4) != null){ ItemStack itemPar1 = player.getCurrentItemOrArmor(4); if(itemPar1.getItem() == MoreMinecraft.helmetGogglesVision){ if(itemPar1.getItem().getDamage(itemPar1) < 72000){ player.addPotionEffect((new PotionEffect(Potion.nightVision.getId(), 219, 0))); } if(itemPar1.getItemDamage() == 0 && itemPar1.getItemDamage() < 72000){ itemPar1.setItemDamage(1); } else if(itemPar1.getItemDamage() < 72000) itemPar1.setItemDamage(itemPar1.getItemDamage() + 1); } } if(player.getCurrentItemOrArmor(3) != null){ ItemStack itemPar1 = player.getCurrentItemOrArmor(3); if(itemPar1.getItem() == MoreMinecraft.plateDualHearts){ if(itemPar1.getItem().getDamage(itemPar1) < 72000){ player.addPotionEffect((new PotionEffect(Potion.regeneration.getId(), 21, 2))); player.addPotionEffect((new PotionEffect(Potion.field_76443_y.getId(), 21, 0))); } if(itemPar1.getItemDamage() == 0 && itemPar1.getItemDamage() < 72000){ itemPar1.setItemDamage(1); } else if(itemPar1.getItemDamage() < 72000) itemPar1.setItemDamage(itemPar1.getItemDamage() + 1); } } if(player.getCurrentItemOrArmor(4) != null){ ItemStack itemPar1 = player.getCurrentItemOrArmor(4); if(itemPar1.getItem() == MoreMinecraft.scubaHelmet && player.isInsideOfMaterial(Material.water)){ if(itemPar1.getItem().getDamage(itemPar1) < 72000){ player.addPotionEffect((new PotionEffect(Potion.waterBreathing.getId(), 21, 0))); } if(itemPar1.getItemDamage() == 0 && itemPar1.getItemDamage() < 72000 && scubaTank){ itemPar1.setItemDamage(1); } else if(itemPar1.getItemDamage() < 72000 && scubaTank) itemPar1.setItemDamage(itemPar1.getItemDamage() + 1); if(itemPar1.getItemDamage() == 0 && itemPar1.getItemDamage() < 72000 && !scubaTank){ itemPar1.setItemDamage(4); } else if(itemPar1.getItemDamage() < 72000 && !scubaTank) itemPar1.setItemDamage(itemPar1.getItemDamage() + 4); } } if(player.getCurrentItemOrArmor(3) != null){ ItemStack itemPar1 = player.getCurrentItemOrArmor(3); if(itemPar1.getItem() == MoreMinecraft.scubaTank){ scubaTank = true; if(player.onGround){ player.addPotionEffect((new PotionEffect(Potion.moveSlowdown.getId(), 21, 0))); } } else scubaTank = false; } else scubaTank = false; if(player.getCurrentItemOrArmor(1) != null){ ItemStack itemPar1 = player.getCurrentItemOrArmor(1); if(itemPar1.getItem() == MoreMinecraft.jumpBoots){ boolean isJumping = Minecraft.getMinecraft().gameSettings.keyBindJump.pressed && !player.capabilities.isFlying; if(itemPar1.getItem().getDamage(itemPar1) < 60000 && isJumping && !alreadyJumped){ player.addPotionEffect((new PotionEffect(Potion.jump.getId(), 1, 0))); if(!player.capabilities.isCreativeMode && !alreadyJumpedDamaged && !alreadyJumped){ itemPar1.setItemDamage(itemPar1.getItemDamage() + 100); alreadyJumpedDamaged = true; } alreadyJumped = true; } /*if(itemPar1.getItemDamage() == 0 && itemPar1.getItemDamage() < 60000){ itemPar1.setItemDamage(1); } else if(itemPar1.getItemDamage() < 60000) itemPar1.setItemDamage(itemPar1.getItemDamage() + 1); */ } } if(player.onGround || player.isInWater()){ alreadyJumped = false; alreadyJumpedDamaged = false; } } @Override public void tickStart(EnumSet<TickType> type, Object... tickData) { if(type.equals(EnumSet.of(TickType.PLAYER))){ OnPlayerTick((EntityPlayer) tickData[0]); } } @Override public void tickEnd(EnumSet<TickType> type, Object... tickData) { // TODO Auto-generated method stub } @Override public EnumSet<TickType> ticks() { return EnumSet.of(TickType.PLAYER, TickType.SERVER); } @Override public String getLabel() { // TODO Auto-generated method stub return null; } } Common: package mods.MoreMinecraft.Classes.common; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import cpw.mods.fml.common.network.IGuiHandler; import cpw.mods.fml.common.registry.TickRegistry; import cpw.mods.fml.relauncher.Side; public class CommonProxy implements IGuiHandler { public void registerRenders() { } public int addArmor(String string) { return 0; } public void registerServerTickHandler(){ TickRegistry.registerTickHandler(new ServerTickHandler(), Side.SERVER); TickRegistry.registerTickHandler(new ServerTickHandler(), Side.CLIENT); } @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if(tileEntity != null) { switch(ID) { case 0: /* your Containers go here*/ } } return tileEntity; } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } } Client: package mods.MoreMinecraft.Classes.common; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.World; import cpw.mods.fml.common.network.IGuiHandler; import cpw.mods.fml.common.registry.TickRegistry; import cpw.mods.fml.relauncher.Side; public class CommonProxy implements IGuiHandler { public void registerRenders() { } public int addArmor(String string) { return 0; } public void registerServerTickHandler(){ TickRegistry.registerTickHandler(new ServerTickHandler(), Side.SERVER); TickRegistry.registerTickHandler(new ServerTickHandler(), Side.CLIENT); } @Override public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { TileEntity tileEntity = world.getBlockTileEntity(x, y, z); if(tileEntity != null) { switch(ID) { case 0: /* your Containers go here*/ } } return tileEntity; } @Override public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; } } Just a side note, registerServerTickHandler is called. So it is working as far as tick handlers go.
  14. Alrighty, so I have "special effect" armor in my mod but its glitching out a bit. What is happening is when the armor's metadata hits 0 (I use metadata as "power" for the armor, and I have the armor set as a enumtype of infinite, so it doesnt protect the player, just allows them to wear it) and when it hits 0 and the player logs out, it will exactly go to a metadata of 65532, and it will completly "regenerate" its power if the max is under that, I also noticed that it does this at values of things like 1 and 2. Help? Heres what my enum looks like public static EnumArmorMaterial armorInfinite = EnumHelper.addArmorMaterial("INFINITE", 0, new int[] { 0, 0, 0, 0}, 0); and heres a sample of my code from my tick hander: and I just use a custom crafting handler for adding to the metadata, it just looks like this CraftingManager.getInstance().getRecipeList().add(new RecipeRepair(this.helmetGogglesVision.itemID, new ItemStack(Item.redstone), 1125)); Help? I suspect that minecraft is freaking out because the metadata is at 0, and since I have it to be "invincible" as far as actual vanilla armor goes I assume it just freaks and trys to fix it.
  15. Read the crash report, if you cant read it, then DONT mod. Its saying that your trying to turn an itemstack into a java.lang and it cant convert it.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.