1.6.4 Таймер

Всем привет! Мне нужно сделать портящуюся еду.
То-есть добавить таймер, и чтобы по истечению времени предмет исчезал, или заменялся на другой.
Надеюсь вы мне поможете.
 
Типа создать NBT тег, потом создать условие в upDate методе, чтобы какое-то определённое время отнималось или прибавлялось у нашему NBT тегу. И чтобы по истечении времени, что-то происходило.
[merge_posts_bbcode]Добавлено: 09.12.2014 10:37:26[/merge_posts_bbcode]

Либо можно не создавать NBT тег, а использовать стандартный метадату повреждения.
 
Тимаха, а если делать метадату, то как её заставить отниматься потихоньку самостоятельно
 
У меня:
Код:
public void onUpdate(ItemStack is, World world, Entity entity, int par4, boolean flag) {
if (!world.isRemote) {
NBTTagCompound tag = is.getTagCompound();
//-------------------------
if (tag == null) {
//Если NBT и NBT тега нет, до мы даём свой.
tag = new NBTTagCompound();
tag.setByte("Spoilage", (byte)0);
}
//-------------------------
if (tag != null) {
if (tag.hasKey("Spoilage")) {
if (tag.getByte("Spoilage") > 126 && tag.getByte("Spoilage") < -126) {
//Если значение больше 126 и меньше -126, то он уничтожается от порчи.
--is.stackSize;
/*
} else if (tag.getByte("Spoilage") < 0) {
//Если меньше нуля, то что вы захотите (у меня будет положительный другой эффект)
*/
} else {
//В остальных случаях...
if (world.getWorldTime() % (20 * 60) == 0) {
//Каждую минуту..
tag.setByte("Spoilage", (byte)(tag.getByte("Spoilage") + 1));
//Будет прибавляться...
}
}
}
}
//-------------------------
}
}
Приблизительно, как-то так...
 
Приметно так, точно не знаю:
Код:
public void onUpdate(ItemStack is, World world, Entity entity, int par4, boolean flag) {
if (!world.isRemote) {
if (is.getItemDamage() < 0 && is.getItemDamage() >= is.getMaxDamage()) {
--is.stackSize;
} else {
if (world.getWorldTime() % (20 * 60) == 0) {
is.setItemDamage(1);
}
}
}
}
 
Код:
if (!world.isRemote) {

Нах оно тут? Либо просто нафиг убрать, либо убрать '!'.
[merge_posts_bbcode]Добавлено: 09.12.2014 19:19:30[/merge_posts_bbcode]

Код:
is.setItemDamage(1);

На
Код:
is.damageItem(1, (EntityLivingBase)entity);
 
Dragon2488 написал(а):
Код:
if (!world.isRemote) {
Нах оно тут? Либо просто нафиг убрать, либо убрать '!'.
Чтобы действия были на сервере, если убрать '!' , то будет на клиенте. Т.е. предмет как-бы останется в инверторе, и не удалиться, и будет просто дрожать предмет будет (наверное) в руках.
Убрать можно, а я так делаю, потому-что мне так нравиться (на самом деле по другой причине, которую не могу написать или сказать).
 
Просто забыл уже, что она false на сервере и true на клиенте, подумал наоборот. Извеняюсь.
 
Назад
Сверху