Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Большое спасибо все работает!Kuroi написал(а):это воткни в класс итема, лень описывать что там за циферки и прочие. тут сам разберись.Код:public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player) { player.addPotionEffect((new PotionEffect(Potion.digSpeed.getId(), 20, 0))); return itemstack; }
Точно! Спасибо!Agravaine написал(а):Проверку на !world.isRemote добавь, ибо эффект не пропадет.
Не могли бы вы написать код, а то я начинающий и половину ваших слов я не понимаю.Kotor написал(а):Сделай в классе переменную, в методе onItemRightClick устанавливай ей значение 1200 (1 минута = 60сек умножить на 20 тиков), а в методе onUpdate уменьшай ее на единицу. Также в методе onItemRightClick сделай условие, если твоя переменная равна нулю, то накладывай эффект и устанавливай значение 1200.
[merge_posts_bbcode]Добавлено: 03.11.2014 09:40:35[/merge_posts_bbcode]
Хотя я делаю так через данные в игроке:
В методе onItemRightClick проверяю, если player.getEntityData().getInteger("нбт_переменная") больше нуля, то return is, то есть завершаю метод. Если условие не выполняется и нбт_переменная равна нулю, то метод идет дальше, где выполняются остальные действия, а также player.getEntityData().setInteger("нбт_переменная ", 10) (устанавливается значение 10, что в итоге даст полсекунды задержки). В методе onUpdate я уменьшаю переменную на единицу - player.getEntityData().setInteger("нбт_переменная",player.getEntityData().getInteger("нбт_переменная")-1);
Так делать нельзя, потому что эта переменная будет одна для всех игроков.Kotor написал(а):Сделай в классе переменную, в методе onItemRightClick устанавливай ей значение 1200 (1 минута = 60сек умножить на 20 тиков), а в методе onUpdate уменьшай ее на единицу. Также в методе onItemRightClick сделай условие, если твоя переменная равна нулю, то накладывай эффект и устанавливай значение 1200.
@Override
public void onUpdate(ItemStack itemstack, World world, Entity p_77663_3_, int p_77663_4_, boolean p_77663_5_) {
if (itemstack.hasTagCompound() && !world.isRemote) {
NBTTagCompound nbt = itemstack.getTagCompound();
int counter = nbt.getInteger("counter");
if (counter > 0) {
nbt.setInteger("counter", --counter);
itemstack.setTagCompound(nbt);
}
}
}
@Override
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player) {
if (!world.isRemote) {
int counter;
if (itemstack.hasTagCompound())
counter = itemstack.getTagCompound().getInteger("counter");
else
counter = 0;
if (counter == 0) {
NBTTagCompound nbt = new NBTTagCompound();
nbt.setInteger("counter", 500);
itemstack.setTagCompound(nbt);
player.addPotionEffect((new PotionEffect(Potion.digSpeed.getId(), 20, 0)));
} else {
// Пока перезаряжается.
}
}
return itemstack;
}
Поэтому у меня есть еще и второй вариант. Это будет для всех предметов такого типа, но для одного игрока. А если сделать, как Лаз говорит, то будет только для одного предмета.Asd73 написал(а):Так делать нельзя, потому что эта переменная будет одна для всех игроков.
В каком смысле дрыгаться?Agravaine написал(а):Неее, тогда он пудет дрыгаться в руках!!!
[font=Verdana, Helvetica, Arial, sans-serif]Да мне понравился ответ Лаз, но я не могу это реализовать так как я только начинающий, и что где менять я не знаю, я пытался удалять НБТ но после этого у меня выскакивало куча ошибок, скорее всего я не то удалил. Если надо я могу рассказать идею мода.[/font]Kotor написал(а):Поэтому у меня есть еще и второй вариант. Это будет для всех предметов такого типа, но для одного игрока. А если сделать, как Лаз говорит, то будет только для одного предмета.Asd73 написал(а):Так делать нельзя, потому что эта переменная будет одна для всех игроков.
Выбирайте, JankoZ.
И что это мне даст?LazyRavenMan написал(а):setMaxDamage попробуй
При виде от первого лица, предмет в руках будет дергаться при изменении дамага. Хотя это может я такой криворукий.JankoZ написал(а):В каком смысле дрыгаться?Agravaine написал(а):Неее, тогда он пудет дрыгаться в руках!!!
@Override
public void onUpdate(ItemStack itemstack, World world, Entity p_77663_3_, int p_77663_4_, boolean p_77663_5_) {
if (itemstack.getItemDamage() > 0 && !world.isRemote) {
itemstack.setItemDamage(itemstack.getItemDamage() - 1);
}
}
@Override
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer player) {
if (!world.isRemote && itemstack.getItemDamage() == 0) {
itemstack.setItemDamage(200);
player.addPotionEffect((new PotionEffect(Potion.digSpeed.getId(), 20, 0)));
}
return itemstack;
}