Posted December 8, 20159 yr I can't set Metadata in server in block crops is block @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int t, float fx, float fy, float fz) { Random ran = new Random(); TileEntityCrops ted = (TileEntityCrops) world.getTileEntity(x, y, z); int l = world.getBlockMetadata(x, y, z); if(ted.username == player.getCommandSenderName() && l == 7){ world.setBlockMetadataWithNotify(x, y, z, l -7, 2); world.setTileEntity(x, y, z, new TileEntityCrops()); System.out.println(l); this.updateTick(world, x, y, z, ran); return true; }else{ System.out.println(l); return false; } } is tile public static String username; public void processActivate(EntityPlayer player, World world) { username = player.getCommandSenderName(); world.setTileEntity(this.xCoord, this.yCoord, this.zCoord, this); }
December 8, 20159 yr 1. You should NEVER call World#setTileEntity yourself - this is done automatically by Minecraft when a block with a TE is placed 2. Don't compare String with the '==' operator; use #equals instead ted.username.equals(player.getCommandSenderName()) instead of ted.username == player.getCommandSenderName() 3. If your TE #username field can be NULL, you'll want to either check that first or swap the order in #2 4. You probably don't want your TE's #username field to be static - that means every TE will have the same player name, all the time 5. Don't create a new Random every time the Block is activated - the World object already has a Random instance, as does Block. Use one of those instead, OR, if you really want a new Random, add it as a class field. http://i.imgur.com/NdrFdld.png[/img]
December 8, 20159 yr Author I need save name player and check it for not player other right click it.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.