ItemFishedEvent event

Версия Minecraft
1.12.2
API
Forge
Пытаюсь добавить дроп перемета после отлова рыбы удочкой.

Java:
import net.minecraft.init.*;
import net.minecraft.item.*;
import net.minecraft.util.text.*;
import net.minecraftforge.event.entity.player.*;
import net.minecraftforge.fml.common.*;
import net.minecraftforge.fml.common.eventhandler.*;

@Mod.EventBusSubscriber
public class EventsHandler
{
    @SubscribeEvent
    public static void onItemFished(ItemFishedEvent event)
    {
        event.getEntityPlayer().sendMessage(new TextComponentString("TEST"));
        event.getDrops().add(new ItemStack(Items.COOKIE));
    }
}

Но после поимки чего-либо, просто вижу моё сообщение "TEST", почему не получается добавить дроп?
 

VeniVidiVici

Санта Барбарис
327
15
198
Может я дико туплю, если так, меня, думаю, кто-нибудь поправит. Но я не уверен, что получится сменить лут из ивента. Насколько я понимаю сам код метода handleHookRetraction() выносит список дропа в ивент форджа, но сам дроп от ивента не зависит. И по идее никак не влияет, разве что совсем его убрать, отключив ивент и заспавнив свой предмет. А если именно менять, то надо менять через свой EntityFishHook (?) Повторюсь, не уверен в корректности своего ответа
1625409286297.png
 

sk9zist :l

Исправился
981
18
157
хуком попробуй менять
 

sk9zist :l

Исправился
981
18
157
 
154
17
97
Исходя из комментарию к ивенту, изменить дроп в нем действительно не получится. Предлагают использовать луттейблы.

ItemFishedEvent:
/**
[LIST]
[*]Use this to get the items the player will receive.
[*]You cannot use this to modify the drops the player will get.
[*]If you want to affect the loot, you should use LootTables.
[/LIST]
*/
public NonNullList<ItemStack> getDrops()
{
    return stacks;
}
Но если хочешь простой вариант - то реально легче спавнить предмет.
 

sk9zist :l

Исправился
981
18
157
Да.
 
Сверху