From 0ad8eb443bf91bb3d01f2e8970ff2a1698bba3d8 Mon Sep 17 00:00:00 2001 From: KingRainbow44 Date: Sun, 27 Aug 2023 23:29:21 -0400 Subject: [PATCH] Add `PlayerObtainItemEvent` --- .../grasscutter/game/inventory/Inventory.java | 13 +++++++++---- .../event/player/PlayerObtainItemEvent.java | 17 +++++++++++++++++ 2 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 src/main/java/emu/grasscutter/server/event/player/PlayerObtainItemEvent.java diff --git a/src/main/java/emu/grasscutter/game/inventory/Inventory.java b/src/main/java/emu/grasscutter/game/inventory/Inventory.java index 74bd301b8..8f15deb07 100644 --- a/src/main/java/emu/grasscutter/game/inventory/Inventory.java +++ b/src/main/java/emu/grasscutter/game/inventory/Inventory.java @@ -1,7 +1,5 @@ package emu.grasscutter.game.inventory; -import static emu.grasscutter.config.Configuration.INVENTORY_LIMITS; - import emu.grasscutter.Grasscutter; import emu.grasscutter.data.GameData; import emu.grasscutter.data.common.ItemParamData; @@ -13,14 +11,18 @@ import emu.grasscutter.game.props.*; import emu.grasscutter.game.props.ItemUseAction.UseItemParams; import emu.grasscutter.game.quest.enums.QuestContent; import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam; +import emu.grasscutter.server.event.player.PlayerObtainItemEvent; import emu.grasscutter.server.packet.send.*; import emu.grasscutter.utils.Utils; import it.unimi.dsi.fastutil.ints.*; import it.unimi.dsi.fastutil.longs.*; -import java.util.*; -import javax.annotation.Nullable; import lombok.val; +import javax.annotation.Nullable; +import java.util.*; + +import static emu.grasscutter.config.Configuration.INVENTORY_LIMITS; + public class Inventory extends BasePlayerManager implements Iterable { private final Long2ObjectMap store; private final Int2ObjectMap inventoryTypes; @@ -121,6 +123,9 @@ public class Inventory extends BasePlayerManager implements Iterable { if (result != null) { this.triggerAddItemEvents(result); getPlayer().sendPacket(new PacketStoreItemChangeNotify(result)); + + // Call PlayerObtainItemEvent. + new PlayerObtainItemEvent(this.getPlayer(), item).call(); return true; } diff --git a/src/main/java/emu/grasscutter/server/event/player/PlayerObtainItemEvent.java b/src/main/java/emu/grasscutter/server/event/player/PlayerObtainItemEvent.java new file mode 100644 index 000000000..35f8423fa --- /dev/null +++ b/src/main/java/emu/grasscutter/server/event/player/PlayerObtainItemEvent.java @@ -0,0 +1,17 @@ +package emu.grasscutter.server.event.player; + +import emu.grasscutter.game.inventory.GameItem; +import emu.grasscutter.game.player.Player; +import emu.grasscutter.server.event.types.PlayerEvent; +import lombok.Getter; + +@Getter +public final class PlayerObtainItemEvent extends PlayerEvent { + private final GameItem item; + + public PlayerObtainItemEvent(Player player, GameItem item) { + super(player); + + this.item = item; + } +}