О метадате и экземплярах итемов

7,166
329
1,544
Такой вопрос: если у меня есть new MyItem() и MyModCore.myItem, где применено setUnlocalizedName и GameRegistry.registerItem, а также установлена какая-то метадата, эти два определения одно и то же или они отличаются, и испоьзовать new MyItem() для добавления рецепта, например, не стоит?
 
new MyItem() - создаёшь экземпляр класса.
А если ты используешь переменную, которую зарегистрировал в игре, то ты будешь использовать общий экземпляр класса (Item один на всю игру, разнообразие доставляет ItemStack)
 
Наверное, это особенность языка, поясните: что значит общий экземпляр? Ведь я же создал новый, просто класс, на основе которого он создан наследуется из Item, ну так я все равно в конструкторе своего класса вызвал super();
[merge_posts_bbcode]Добавлено: 10.04.2015 19:21:54[/merge_posts_bbcode]

Вопрос был в другом: если я создам новый экземпляр, то он будет так же зареган? А если два и более экземпляров класса зарегать? Или установить UnlocalizedName разными? они просто обновятся под последний вызов, или будут в игре несколько разных предметов?
 
:)что серьезно? так это же происходит на сервере еще...Ну типо, если я мод написал, поставил на клиент, зашел на какой-нибудь сервер, то каким макаром другие игроки смогут пользоваться модом? у их клиентов он не стоит, или сервер загружает текстурки и рецепты из каждого подключенного клиенты? Еще вопрос: как вообще сервер знает, какой рецепт есть, а какого нету?
 
hohserg написал(а):
:)что серьезно? так это же происходит на сервере еще...Ну типо, если я мод написал, поставил на клиент, зашел на какой-нибудь сервер, то каким макаром другие игроки смогут пользоваться модом? у их клиентов он не стоит, или сервер загружает текстурки и рецепты из каждого подключенного клиенты? Еще вопрос: как вообще сервер знает, какой рецепт есть, а какого нету?
Если честно - я не знаю.

При GameRegistry мы используем переменную (Item = new gun();), к примеру, и предмет использует эту переменную => класс gun();.
Если зарегистрировать 2 раза с разными неймами... Наверное, будет клон итема. Чистый итем мы не используем в игре, а используем ItemStack, так-что смысла ноль, разве что тебе надо изменить у всех игроков предмет, при этом имея ещё и исходный Item
 
под "разве что тебе надо изменить у всех игроков предмет." ты имеешь ввиду серверный мод?
 
Общий экземпляр - все игроки используют один и тот-же экземпляр класса, а разные данные в ItemStack, а не этом Item (Поэтому мы можем напрямую сравнивать (ItemStack.getItem() = ItemStack.getItem();))

Насчёт рецептов - на сервере хранится тоже, само-собой.

А если ты попытаешься зайти с лишним модом, то кикнет, если ты попытаешься взять что-то синхронизированное с сервером.
[merge_posts_bbcode]Добавлено: 10.04.2015 13:41:13[/merge_posts_bbcode]

hohserg написал(а):
под "разве что тебе надо изменить у всех игроков предмет." ты имеешь ввиду серверный мод?
Я же сказал - все используют один и тот-же итем, и меняться класс будет у всех.
[merge_posts_bbcode]Добавлено: 10.04.2015 13:42:14[/merge_posts_bbcode]

hohserg написал(а):
под "разве что тебе надо изменить у всех игроков предмет." ты имеешь ввиду серверный мод?
Плохо объясняешь - что значит серверный мод-то?

[merge_posts_bbcode]Добавлено: 10.04.2015 13:43:31[/merge_posts_bbcode]

И вообще не понял, что ты хочешь сделать ;D
 
ну та часть мода, что только для сервера.
[merge_posts_bbcode]Добавлено: 10.04.2015 19:44:11[/merge_posts_bbcode]

SideOnly
 
В смысле, ты имеешь ввиду тот факт, что мы изменяем класс итема на 1 клиенте и на сервере, а у других клиентов остался старый? Я не углублялся в синхронизацию сервера с клиентом, так-что Хз. Тут надо Драгона ждать.
 
Если мод стоит на сервере, а на клиенте его нет, то сервер тебя не пустит.
Если на сервере не стоит мод, а у клиента стоит - серверу пофиг. Ты просто не сможешь ничего взять(предмет или блок) - он сразу пропадет.
[merge_posts_bbcode]Добавлено: 10.04.2015 18:23:27[/merge_posts_bbcode]

Да не трогайте вы предмет. Он один раз создался и все. Что-то надо делать - оборачиваем его в new ItemStack(YourItem).
 
Agravaine написал(а):
Если мод стоит на сервере, а на клиенте его нет, то сервер тебя не пустит.
Если на сервере не стоит мод, а у клиента стоит - серверу пофиг. Ты просто не сможешь ничего взять(предмет или блок) - он сразу пропадет.
[merge_posts_bbcode]Добавлено: 10.04.2015 18:23:27[/merge_posts_bbcode]

Да не трогайте вы предмет. Он один раз создался и все. Что-то надо делать - оборачиваем его в new ItemStack(YourItem).
Не знаю, у меня кикает, из-за ошибки поиска класса.
 
Назад
Сверху