if(world.isRemote){
if(Mouse.isButtonDown(1) && твоя интегер переменная % 40 == 0)
твоя булев переменная = true;
else
твоя булев переменная = false;
}
if(!world.isRemote && твоя булев переменная == true)
//какой то код
Тогда игрок сможет, попадая в фазу, делать первый клик мгновенным. Нужен именно таймер.твоя интегер переменная % 40 == 0
if(!world.isRemote && isCooldown == false){
//выполнить код
isCooldown = true;
}
if(cooldown > 0)
cooldown--;
if(isCooldown == true)
cooldown = 40;
if(cooldown == 0)
isCooldown = false;
Можно кодом пж?можно просто сделать мапу EntityPlayer->Int
HashMap<EntityPlayer, Integer>
, в ней хранить таймерыpublic static final HashMap<EntityPlayer, Long> mapT = new HashMap<EntityPlayer, Long>();
@Override
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player){
if (!mapT.containsKey(player)) {
mapT.put(player, world.getTotalWorldTime() + (long)(20 * 2));
}
else {
if (mapT.get(player) >= world.getTotalWorldTime()) {
EntityM entity = new EntityM (world, player);
world.spawnEntityInWorld(entity);
mapT.replace(player, world.getTotalWorldTime() + (long)(20 * 2));
}
}
return itemstack;
}
Вроде бы у тебя задержка только между выстрелами.кто-то подскажет
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player){
long current=mapT.computeIfAbsent(player, 0);
if (current <= 0) {
EntityM entity = new EntityM (world, player);
world.spawnEntityInWorld(entity);
mapT.put(player, 20*2);//2 секунды
}
return itemstack;
}
//Server tick event handler
mapT.keySet.forEach(player->
mapT.put(player, mapT.computeIfAbsent(player, 1) - 1);
)
А он разве не должен будет нажать 40 раз ??}else mapT.put(player, current-1);
TickEvent.Server
, этож таймерВ игре он стреляет без задержкиВроде бы у тебя задержка только между выстрелами.
Типо стрельнул (сразу) потом должен подождать и по кругу.
Мне надо ,нажал пкм выстрел,подождал 2 сек,пкм выстрелЕсли тебе нужно сначала нажал, потом подождал, потом выстрел:
Значение чекать не в пкм, а в тик ивенте.
как это сделать через нбт?Попробуй как я выше описал, только через нбт
if(!world.isRemote && isCooldown == false){
//выполнить код
isCooldown = true;
}
if(cooldown > 0)
cooldown--;
if(isCooldown == true)
cooldown = 40;
if(cooldown == 0)
isCooldown = false;