@EventTarget private void onTick(TickEvent event) { int i = 0; while (i < 8) { Item item; if (this.mc.thePlayer.inventory.mainInventory[i] != null && ((item = this.mc.thePlayer.inventory.mainInventory[i].getItem()) instanceof ItemRedstone || Item.getIdFromItem((Item)item) == 353 || item instanceof ItemFirework)) { this.mc.thePlayer.sendQueue.addToSendQueue((Packet)new C09PacketHeldItemChange(i)); this.mc.thePlayer.sendQueue.addToSendQueue((Packet)new C08PacketPlayerBlockPlacement(this.mc.thePlayer.inventory.mainInventory[i])); this.mc.thePlayer.sendQueue.addToSendQueue((Packet)new C09PacketHeldItemChange(this.mc.thePlayer.inventory.currentItem)); } ++i; } }
private boolean rightClick(ChunkPosition pos){ int xCoord = pos.chunkPosX; int yCoord = pos.chunkPosY; int zCoord = pos.chunkPosZ; ForgeDirection faceDir = ProgWidgetPlace.getDirForSides(((ISidedWidget)widget).getSides()); EntityPlayer player = drone.getFakePlayer(); World worldObj = drone.getWorld(); int dx = faceDir.offsetX; int dy = faceDir.offsetY; int dz = faceDir.offsetZ; int x = xCoord /*+ dx*/; int y = yCoord /*+ dy*/; int z = zCoord /*+ dz*/; player.setPosition(x + 0.5, y + 0.5 - player.eyeHeight, z + 0.5); player.rotationPitch = faceDir.offsetY * -90; switch(faceDir){ case NORTH: player.rotationYaw = 180; break; case SOUTH: player.rotationYaw = 0; break; case WEST: player.rotationYaw = 90; break; case EAST: player.rotationYaw = -90; } try { PlayerInteractEvent event = ForgeEventFactory.onPlayerInteract(player, Action.RIGHT_CLICK_AIR, x, y, z, faceDir.ordinal(), worldObj); if(event.isCanceled()) return false; Block block = worldObj.getBlock(x, y, z); ItemStack stack = player.getCurrentEquippedItem(); if(stack != null && stack.getItem().onItemUseFirst(stack, player, worldObj, x, y, z, faceDir.ordinal(), dx, dy, dz)) return false; if(!worldObj.isAirBlock(x, y, z) && block.onBlockActivated(worldObj, x, y, z, player, faceDir.ordinal(), dx, dy, dz)) return false; if(stack != null) { boolean isGoingToShift = false; if(stack.getItem() instanceof ItemReed || stack.getItem() instanceof ItemRedstone) { isGoingToShift = true; } int useX = isGoingToShift ? xCoord : x; int useY = isGoingToShift ? yCoord : y; int useZ = isGoingToShift ? zCoord : z; if(stack.getItem().onItemUse(stack, player, worldObj, useX, useY, useZ, faceDir.ordinal(), dx, dy, dz)) return false; ItemStack copy = stack.copy(); player.setCurrentItemOrArmor(0, stack.getItem().onItemRightClick(stack, worldObj, player)); if(!copy.isItemEqual(stack)) return true; } return false; } catch(Throwable e) { Log.error("DroneAIBlockInteract crashed! Stacktrace: "); e.printStackTrace(); return false; } }