@Override public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) { if (!world.isRemote) { if (NBTHelper.hasTag(itemStack, "owner") && NBTHelper.hasTag(itemStack, "timeout")) { /* If the timeout is 0, draw a new card. */ if (NBTHelper.getLong(itemStack, "timeout") == 0) { drawCard(itemStack, world, player); itemStack.damageItem(1, player); NBTHelper.setLong(itemStack, "timeout", world.getTotalWorldTime()); } else { ChatHelper.send(player, "Timeout time: " + NBTHelper.getLong(itemStack, "timeout")); ChatHelper.send(player, "World time: " + world.getTotalWorldTime()); } } else { /* Initialize NBT values */ NBTHelper.setLong(itemStack, "timeout", 0); NBTHelper.setString(itemStack, "owner", player.getDisplayName()); makeDeck(itemStack); } } return super.onItemRightClick(itemStack, world, player); }
@Override public void onUpdate( ItemStack itemStack, World world, Entity entity, int p_77663_4_, boolean p_77663_5_) { super.onUpdate(itemStack, world, entity, p_77663_4_, p_77663_5_); /* If the deck is on timeout */ if (NBTHelper.getLong(itemStack, "timeout") != 0) { /* Using world time to count time when player is offline. */ long timeoutDifference = world.getTotalWorldTime() - NBTHelper.getLong(itemStack, "timeout"); /* Handle the way Minecraft handles it's time value reaching the long limit */ if (timeoutDifference > TIMEOUT || timeoutDifference < -(TIMEOUT)) { NBTHelper.setLong(itemStack, "timeout", 0); } } }