Проблема с счётчиком в онлайне (внутри предмета)

Версия Minecraft
1.7.10
Есть вот такой вот код в предмете:
Java:
    public ItemStack onItemRightClick(ItemStack p1, World p2, EntityPlayer p3)
    {
        Date date = new Date();
        if(timer <= (int) date.getTime() && (!p2.isRemote)) {
            if (!p3.capabilities.isCreativeMode)
            {
                --p1.stackSize;
            }

            p2.playSoundAtEntity(p3, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F));
            
            if (!p2.isRemote)
            {
                EntityDStick = new EntityDStick(p2, p3);
                
                p2.spawnEntityInWorld(new EntityDStick(p2, p3));
            }
            timer = (int) date.getTime() + 9000;
        } else if (timer-(int) date.getTime() > 0) {
            double time2 = (timer-(int) date.getTime())/1000.00;
            p3.addChatMessage(new ChatComponentTranslation("tile.timer.current", time2));   
        }
        return p1;
    }

Нужен он, чтобы задерживать время между бросками, но на сервере же у нас переменная общая и действует на всех игроков, поэтому нужно как-то привязать переменную timer к определённому игроку, так вот, как это можно сделать? Вообще существуют ли какие-то методы привязки переменных?
 
Решение
Оххх, ну ты и дичь пишешь конечно, извиняй не в обиду.
Не нужен там вообще Date. Юзай время мира - World#getTotalWorldTime() и опирайся на него.
Если хочешь чтобы задержка была у КОНКРЕТНОГО предмета - пиши время в нбт стака(ItemStack#stackTagCompound). Только он null по-умолчанию, не забудь добавить проверку и инициализировать.
Если нужно именно для игрока - юзай IExtendedEntityProperties, в гугле полно инфы.

tox1cozZ

aka Agravaine
8,455
598
2,892
Оххх, ну ты и дичь пишешь конечно, извиняй не в обиду.
Не нужен там вообще Date. Юзай время мира - World#getTotalWorldTime() и опирайся на него.
Если хочешь чтобы задержка была у КОНКРЕТНОГО предмета - пиши время в нбт стака(ItemStack#stackTagCompound). Только он null по-умолчанию, не забудь добавить проверку и инициализировать.
Если нужно именно для игрока - юзай IExtendedEntityProperties, в гугле полно инфы.
 
3,005
192
592

tox1cozZ

aka Agravaine
8,455
598
2,892
Он же возвращает время "жизни" мира от создания, так что он в любом случае тикает.
А вот World#getWorldTime() - это уже непосредственно время суток, оно при doDaylightCycle = false будет на месте стоять.
 
Сверху