Своё улов в рыбалке

Версия Minecraft
1.7.10
63
5
20
Возник вопрос при добавления своего лута при ловли рыбы. Добавлять рыбу и предметы я научился, а вот как удалить конкретный лут из ванили я не знаю как. Нашёл такой метод: FishingHooks.removeTreasure(null), только не знаю,что нужно писать вместо null.
 
Решение
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)...
7,099
324
1,510
Почитай про Predicate. Если коротко, то это такой объект, который принимает другие объекты и говорит: этот подходит ,а этот нет.
 
63
5
20
hohserg написал(а):
Почитай про Predicate. Если коротко, то это такой объект, который принимает другие объекты и говорит: этот подходит ,а этот нет.

Я знаю. Я уже дофига чего перепробовал и не хочет работать.
 
1,007
36
206
pasha2004 написал(а):
так писал, пишет ошибку, что Item не может быть Predicate<WeightedRandomFishable> (или как то так)

UPD: The method removeTreasure(Predicate<WeightedRandomFishable>) in the type FishingHooks is not applicable for the arguments (Item)

Код покажи, указывать нужно так Items.stick
 
63
5
20
junkil335 написал(а):
pasha2004 написал(а):
так писал, пишет ошибку, что Item не может быть Predicate<WeightedRandomFishable> (или как то так)

UPD: The method removeTreasure(Predicate<WeightedRandomFishable>) in the type FishingHooks is not applicable for the arguments (Item)

Код покажи, указывать нужно так Items.stick

Мог бы прочитать выше ошибку, при написание строчки. Но если думаешь,что где-то я накосячил, то вот строчка:
FishingHooks.removeFish(Items.fish);
подчёркивает removeFish и предлагает в скобочках добавить каст Predicate<WeightedRandomFishable> и получается:
FishingHooks.removeFish((Predicate<WeightedRandomFishable>)Items.fish);
Тогда после запуска майна, он крашается с логом:
java.lang.ClassCastException: net.minecraft.item.ItemFishFood cannot be cast to com.google.common.base.Predicate
 
63
5
20
Garik1303 написал(а):
pasha2004 написал(а):

Посмотри как сделана в моде "Невермайн"(Сорри ту май инглешь)


И да! Будьте здоровы!



Ничего нового, там просто добавлен новый лут, а я хочу вырезать старый.
 
63
5
20
MJaroslav написал(а):
Если так хочешь, могу поковыряться в удочке


Это же лучше, чем мне свой мод писать)0)



Не совсем понял о чём ты. А если будешь ковыряться, то ничего, кроме ДОБАВЛЕНИЯ итемов  в улов ты не найдёшь. Мне же,как говорил, нужно снести старый ДРОП и установить свой. С первым действием у меня проблемы.
 
1,200
37
237
pasha2004 написал(а):
MJaroslav написал(а):
Если так хочешь, могу поковыряться в удочке


Это же лучше, чем мне свой мод писать)0)



Не совсем понял о чём ты. А если будешь ковыряться, то ничего, кроме ДОБАВЛЕНИЯ итемов  в улов ты не найдёшь. Мне же,как говорил, нужно снести старый ДРОП и установить свой. С первым действием у меня проблемы.



Ну... у меня появилась задумка для костыля, но делать его буду днём
 
63
5
20
MJaroslav написал(а):
pasha2004 написал(а):
MJaroslav написал(а):
Если так хочешь, могу поковыряться в удочке


Это же лучше, чем мне свой мод писать)0)



Не совсем понял о чём ты. А если будешь ковыряться, то ничего, кроме ДОБАВЛЕНИЯ итемов  в улов ты не найдёшь. Мне же,как говорил, нужно снести старый ДРОП и установить свой. С первым действием у меня проблемы.



Ну... у меня появилась задумка для костыля, но делать его буду днём



А зачем делать костыли, если есть FishingHooks.removeFish(...)?
Только что нужно писать в скобках - неизвестно.
 
1,200
37
237
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'ом)
 
63
5
20
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уй мне =)
 
Сверху