pasha2004 написал(а):А зачем делать костыли, если есть FishingHooks.removeFish(...)?
Только что нужно писать в скобках - неизвестно.
for (WeightedRandomFishable loot : (List<WeightedRandomFishable>) EntityFishHook.field_146036_f)
FishingHooks.removeFish(Predicates.not(Predicates.equalTo(loot)));
for (WeightedRandomFishable loot : (List<WeightedRandomFishable>) EntityFishHook.field_146041_e)
FishingHooks.removeTreasure(Predicates.not(Predicates.equalTo(loot)));
for (WeightedRandomFishable loot : (List<WeightedRandomFishable>) EntityFishHook.field_146039_d)...
pasha2004 написал(а):MJaroslav написал(а):pasha2004 написал(а):А зачем делать костыли, если есть FishingHooks.removeFish(...)?
Только что нужно писать в скобках - неизвестно.
Всё известно, недокодер (я) разобрался:
Вот, я экспериментировал с полным удалением улова и добавлением своего (ибо при пустых списках улова - краш):
Код:for (WeightedRandomFishable loot : (List<WeightedRandomFishable>) EntityFishHook.field_146036_f) FishingHooks.removeFish(Predicates.not(Predicates.equalTo(loot))); for (WeightedRandomFishable loot : (List<WeightedRandomFishable>) EntityFishHook.field_146041_e) FishingHooks.removeTreasure(Predicates.not(Predicates.equalTo(loot))); for (WeightedRandomFishable loot : (List<WeightedRandomFishable>) EntityFishHook.field_146039_d) FishingHooks.removeJunk(Predicates.not(Predicates.equalTo(loot))); FishingHooks.addFish(new WeightedRandomFishable(new ItemStack(Items.apple), 1)); FishingHooks.addTreasure(new WeightedRandomFishable(new ItemStack(Items.diamond), 1)); FishingHooks.addJunk(new WeightedRandomFishable(new ItemStack(Items.bone), 1));
А если короче, то юзай вот это:
Код:FishingHooks.removeJunk(Predicates.not(Predicates.equalTo(копия нужного для удаления WeightedRandomFishable)));
/Но так как там проверка просто equals, то есть шанс, что это нифига не заработает, ибо нужна точная копия (да.. ну и берд я сморозил)/
Ну... ты может свой Predicate написать, главное, чтобы он возвращал false в методе apply, если input равен тому, что надо удалить (ну я это так понял ¯\_(ツ)_/¯)
Хм... может написать костыльный мод, чтобы весь улов настраивался конфигом? (Да, злюкой-Json'ом)
Супер! Только одна незадача,как и откуда копировать этот полный список (на примере удаления рыбы)? Пытался копировать из EntityFishHook, то ли руки у меня кривые, но ничего не получилось, и пишет,что формат данных не тот. ДоHELPуй мне =)
MJaroslav написал(а):pasha2004 написал(а):MJaroslav написал(а):pasha2004 написал(а):А зачем делать костыли, если есть FishingHooks.removeFish(...)?
Только что нужно писать в скобках - неизвестно.
Всё известно, недокодер (я) разобрался:
Вот, я экспериментировал с полным удалением улова и добавлением своего (ибо при пустых списках улова - краш):
Код:for (WeightedRandomFishable loot : (List<WeightedRandomFishable>) EntityFishHook.field_146036_f) FishingHooks.removeFish(Predicates.not(Predicates.equalTo(loot))); for (WeightedRandomFishable loot : (List<WeightedRandomFishable>) EntityFishHook.field_146041_e) FishingHooks.removeTreasure(Predicates.not(Predicates.equalTo(loot))); for (WeightedRandomFishable loot : (List<WeightedRandomFishable>) EntityFishHook.field_146039_d) FishingHooks.removeJunk(Predicates.not(Predicates.equalTo(loot))); FishingHooks.addFish(new WeightedRandomFishable(new ItemStack(Items.apple), 1)); FishingHooks.addTreasure(new WeightedRandomFishable(new ItemStack(Items.diamond), 1)); FishingHooks.addJunk(new WeightedRandomFishable(new ItemStack(Items.bone), 1));
А если короче, то юзай вот это:
Код:FishingHooks.removeJunk(Predicates.not(Predicates.equalTo(копия нужного для удаления WeightedRandomFishable)));
/Но так как там проверка просто equals, то есть шанс, что это нифига не заработает, ибо нужна точная копия (да.. ну и берд я сморозил)/
Ну... ты может свой Predicate написать, главное, чтобы он возвращал false в методе apply, если input равен тому, что надо удалить (ну я это так понял ¯\_(ツ)_/¯)
Хм... может написать костыльный мод, чтобы весь улов настраивался конфигом? (Да, злюкой-Json'ом)
Супер! Только одна незадача,как и откуда копировать этот полный список (на примере удаления рыбы)? Пытался копировать из EntityFishHook, то ли руки у меня кривые, но ничего не получилось, и пишет,что формат данных не тот. ДоHELPуй мне =)
Ну.. вот те поля: field_146036_f, field_146041_e и field_146039_d. Они устроены так: преобразователь_в_лист(Массив WeightedRandomFishable).
Просто бери нужный WeightedRandomFishable из его массива (new WeightedRandomFishable[] {вот отсюда бери}).
/только не путай мусор, сокровища и рыбу/
FishingHooks.removeFish(Predicates.not(Predicates.equalTo(new WeightedRandomFishable(new ItemStack(Items.fish, 1, ItemFishFood.FishType.COD.func_150976_a()), 60))));
pasha2004 написал(а):Всё, разобрался, спасибо!