[1.7.10] Как работает метод getSeedItem?

4,167
68
693
Скажите пожалуйста, каким образом работает метод getSeedItem и актуален ли он для версии 1.7.10?
Пытаюсь сделать семена для растения и, как я понимаю, при добавлении этого метода в блок растения, этот блок должен появляться, если ты активируешь семенами, например, землю. Но! Лично у меня он нифига не работает.

Пример взял с учебника и, видимо, он был для старых версий.

Можно, конечно, пойти через семена (что-то типа onItemActivate... не помню точно как метод называется), но как-то это будет криво...
 
Liahim написал(а):
Скажите пожалуйста, каким образом работает метод getSeedItem и актуален ли он для версии 1.7.10?
Этот метод нужен для блока у которого унаследован класс "BlockCrops". Но этот метод у меня называется "func_149866_i".
Liahim написал(а):
если ты активируешь семенами, например, землю.
В предмете (в семенах):
Код:
public boolean onItemUse(ItemStack is, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) {
}
Делаешь проверку: если кликаешь по нужному блоку (, а так-же можно сделать на проверку по какой стороне блока), то над этим нужном блоке появляется твой блок с твом растением.
 
То есть всё-таки через семена.
И в этом случае никаких "func_149866_i" не нужно, верно?

А что означает: унаследован класс "BlockCrops"? Для чего он нужен, если можно просто указать дроп с блока? И И нафига нужна "func_149866_i", если есть "onItemUse"?

Извините за глупый вопрос. Чисто для понимания )
Если лениво, можно не отвечать )))

Спасибо за ответ.
 
Liahim написал(а):
А что означает: унаследован класс "BlockCrops"?
Код:
public class YouBlock extends BlockCrops

Liahim написал(а):
Для чего он нужен, если можно просто указать дроп с блока?
Заставить блок что-либо дропнуть, бывают разные способы.

Liahim написал(а):
И нафига нужна "func_149866_i", если есть "onItemUse"?
Метод "func_149866_i" нужен в случаи унаследования "BlockCrops", будет функционал как у пшеницы (и подобных растений), пшеница в определённый цикл роста, будет дропать семена и продукт.
"onItemUse" нужен, чтобы ставить блок с растением или по-другому сажать семена.
 
Народ! Если уж я такой нуб, можете объяснить смысл проверки if (!world.isRemote)?
В каких случаях её правильно применять и что она даёт?


Или скиньте ссылку, где об этом можно почитать?


Спасибо )
 
Это поле даже закомментировано в классе World. Ты вообще исходники смотришь?
 
Нет, то, что оно возвращает сервак или клиент - это понятно... Я пытаюсь понять ситуации, где его правильно применять.
Например: а блоке ростков в методе апдейта стоит "если сервак, значит апдейтить".
Вопрос: нафига? Что будет, если этой проверки не будет? Неужели дерево не вырастит?
 
Смотри:
Например, мы хоть заспавнить энтити. Если спавнить его на клиент и сервере, то оно заспавниться два раза. на сервере нормально, а на клиенте - энити-призрак. То есть его мы не взять не сможем ничего. Оно пропадет после перезахода. То есть мы спавним только на сервере, а сервер уже сам пакетами все что нужно передаст клиентам. Иначе же мы получил вот таких вот фантомов.
 
Ок. А если мой мод не разделён на сервер или клиент, это делать нужно?
Просто пока что, что с этой проверкой, что без неё, никаких фантомов я не замечал.

И ещё вопрос: фантомы появляются только у ентити? То есть для команды setBlock такая проверка не нужна или так же появляются блоки-призраки?

Я замечал другое, что если в setBlock указываешь метадату и, соответственно, флаг, блоки не всегда сразу апдейтятся. Как я понял, это зависит как раз от флага: 0 - после перезагрузки, 1 - хз..., 2 - точно сразу )
 
Если у тебя не будет такой проверки в момент установки блока, то есть ты без проверки будешь использовать setBlock
то на сервере он поставиться, а на клиенте...
это будет всё равно что какой то там игрок без прав доступа пытается установить блок, сервер ему конечно откажет. Если тебя не смущает возрастание лога об этих сообщениях на сервере, то конечно, можешь не ставить эту проверку.
Она касается всего и блоков, и Entity (мобов, предметов)
Что ещё хотел сказать, во время создания моба, если у него неправильно хранится nbt, то такой фантом может не только не заспавниться на сервере, но и потеряется при перезаходе на сервер. А урон, ты всё равно будешь от него получать. Со стороны будет казаться что, ты сам себя бьешь )))
А игроки будут бегать и кричать: "да что за лаги такие!? да как так!? читер-читер!" и т.д.
 
Salamandr написал(а):
А урон, ты всё равно будешь от него получать. Со стороны будет казаться что, ты сам себя бьешь )))
Вот это сейчас интересно было. А с каких пор урон стал обрабатываться на клиенте и сервер стал этому доверять?
 
Ага. Пахнет отрицательным уроном через чит-клиент.

Хотя в бетке и не такое было.
 
Liahim написал(а):
Да, да, понял, понял )))
Унаследование - класс который используется в качестве..Ну так сказать образца, к примеру extends Item дает знать, что он унаследует класс предмет, собственно игра посчитает что это предмет и можно унаследовать все его методы.(А можно и свои))
[merge_posts_bbcode]Добавлено: 14.07.2015 23:01:58[/merge_posts_bbcode]

Liahim написал(а):
Да, да, понял, понял )))
Унаследование - класс который используется в качестве..Ну так сказать образца, к примеру extends Item дает знать, что он унаследует класс предмет, собственно игра посчитает что это предмет и можно унаследовать все его методы.(А можно и свои))
 
Назад
Сверху