mirror of
https://github.com/Melledy/Grasscutter.git
synced 2024-11-26 14:17:58 +00:00
Call PacketItemAddHintNotify from addItem
This commit is contained in:
parent
4420918f9c
commit
d81895543f
@ -144,13 +144,11 @@ public final class GiveCommand implements CommandHandler {
|
|||||||
}
|
}
|
||||||
items.add(item);
|
items.add(item);
|
||||||
}
|
}
|
||||||
player.getInventory().addItems(items);
|
player.getInventory().addItems(items, ActionReason.SubfieldDrop);
|
||||||
player.sendPacket(new PacketItemAddHintNotify(items, ActionReason.SubfieldDrop));
|
|
||||||
} else {
|
} else {
|
||||||
GenshinItem genshinItem = new GenshinItem(itemData);
|
GenshinItem genshinItem = new GenshinItem(itemData);
|
||||||
genshinItem.setCount(amount);
|
genshinItem.setCount(amount);
|
||||||
player.getInventory().addItem(genshinItem);
|
player.getInventory().addItem(genshinItem, ActionReason.SubfieldDrop);
|
||||||
player.sendPacket(new PacketItemAddHintNotify(genshinItem, ActionReason.SubfieldDrop));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -584,8 +584,7 @@ public class GenshinPlayer {
|
|||||||
moonCardGetTimes.add(now);
|
moonCardGetTimes.add(now);
|
||||||
addMoonCardDays(1);
|
addMoonCardDays(1);
|
||||||
GenshinItem genshinItem = new GenshinItem(201, 90);
|
GenshinItem genshinItem = new GenshinItem(201, 90);
|
||||||
getInventory().addItem(genshinItem);
|
getInventory().addItem(genshinItem, ActionReason.BlessingRedeemReward);
|
||||||
session.send(new PacketItemAddHintNotify(genshinItem, ActionReason.BlessingRedeemReward));
|
|
||||||
session.send(new PacketCardProductRewardNotify(getMoonCardRemainDays()));
|
session.send(new PacketCardProductRewardNotify(getMoonCardRemainDays()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -730,10 +729,9 @@ public class GenshinPlayer {
|
|||||||
EntityItem drop = (EntityItem) entity;
|
EntityItem drop = (EntityItem) entity;
|
||||||
GenshinItem item = new GenshinItem(drop.getItemData(), drop.getCount());
|
GenshinItem item = new GenshinItem(drop.getItemData(), drop.getCount());
|
||||||
// Add to inventory
|
// Add to inventory
|
||||||
boolean success = getInventory().addItem(item);
|
boolean success = getInventory().addItem(item, ActionReason.SubfieldDrop);
|
||||||
if (success) {
|
if (success) {
|
||||||
this.sendPacket(new PacketGadgetInteractRsp(drop, InteractType.INTERACT_PICK_ITEM));
|
this.sendPacket(new PacketGadgetInteractRsp(drop, InteractType.INTERACT_PICK_ITEM));
|
||||||
this.sendPacket(new PacketItemAddHintNotify(item, ActionReason.SubfieldDrop));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,8 +17,10 @@ import emu.grasscutter.game.GenshinPlayer;
|
|||||||
import emu.grasscutter.game.avatar.AvatarStorage;
|
import emu.grasscutter.game.avatar.AvatarStorage;
|
||||||
import emu.grasscutter.game.avatar.GenshinAvatar;
|
import emu.grasscutter.game.avatar.GenshinAvatar;
|
||||||
import emu.grasscutter.game.entity.EntityAvatar;
|
import emu.grasscutter.game.entity.EntityAvatar;
|
||||||
|
import emu.grasscutter.game.props.ActionReason;
|
||||||
import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam;
|
import emu.grasscutter.net.proto.ItemParamOuterClass.ItemParam;
|
||||||
import emu.grasscutter.server.packet.send.PacketAvatarEquipChangeNotify;
|
import emu.grasscutter.server.packet.send.PacketAvatarEquipChangeNotify;
|
||||||
|
import emu.grasscutter.server.packet.send.PacketItemAddHintNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketStoreItemChangeNotify;
|
import emu.grasscutter.server.packet.send.PacketStoreItemChangeNotify;
|
||||||
import emu.grasscutter.server.packet.send.PacketStoreItemDelNotify;
|
import emu.grasscutter.server.packet.send.PacketStoreItemDelNotify;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||||
@ -98,7 +100,21 @@ public class Inventory implements Iterable<GenshinItem> {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean addItem(GenshinItem item, ActionReason reason) {
|
||||||
|
boolean result = addItem(item);
|
||||||
|
|
||||||
|
if (result && reason != null) {
|
||||||
|
getPlayer().sendPacket(new PacketItemAddHintNotify(item, reason));
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public void addItems(Collection<GenshinItem> items) {
|
public void addItems(Collection<GenshinItem> items) {
|
||||||
|
this.addItems(items, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addItems(Collection<GenshinItem> items, ActionReason reason) {
|
||||||
List<GenshinItem> changedItems = new LinkedList<>();
|
List<GenshinItem> changedItems = new LinkedList<>();
|
||||||
|
|
||||||
for (GenshinItem item : items) {
|
for (GenshinItem item : items) {
|
||||||
@ -108,21 +124,19 @@ public class Inventory implements Iterable<GenshinItem> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (changedItems.size() == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (reason != null) {
|
||||||
|
getPlayer().sendPacket(new PacketItemAddHintNotify(changedItems, reason));
|
||||||
|
}
|
||||||
|
|
||||||
getPlayer().sendPacket(new PacketStoreItemChangeNotify(changedItems));
|
getPlayer().sendPacket(new PacketStoreItemChangeNotify(changedItems));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addItemParams(Collection<ItemParam> items) {
|
public void addItemParams(Collection<ItemParam> items) {
|
||||||
List<GenshinItem> changedItems = new LinkedList<>();
|
addItems(items.stream().map(param -> new GenshinItem(param.getItemId(), param.getCount())).toList(), null);
|
||||||
|
|
||||||
for (ItemParam itemParam : items) {
|
|
||||||
GenshinItem toAdd = new GenshinItem(itemParam.getItemId(), itemParam.getCount());
|
|
||||||
GenshinItem result = putItem(toAdd);
|
|
||||||
if (result != null) {
|
|
||||||
changedItems.add(result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
getPlayer().sendPacket(new PacketStoreItemChangeNotify(changedItems));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private synchronized GenshinItem putItem(GenshinItem item) {
|
private synchronized GenshinItem putItem(GenshinItem item) {
|
||||||
|
@ -44,8 +44,7 @@ public class HandlerAvatarFetterLevelRewardReq extends PacketHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
GenshinItem item = new GenshinItem(cardId);
|
GenshinItem item = new GenshinItem(cardId);
|
||||||
session.getPlayer().getInventory().addItem(item);
|
session.getPlayer().getInventory().addItem(item, ActionReason.FetterLevelReward);
|
||||||
session.getPlayer().sendPacket(new PacketItemAddHintNotify(item, ActionReason.FetterLevelReward));
|
|
||||||
session.getPlayer().sendPacket(new PacketUnlockNameCardNotify(cardId));
|
session.getPlayer().sendPacket(new PacketUnlockNameCardNotify(cardId));
|
||||||
session.send(new PacketAvatarFetterDataNotify(avatar));
|
session.send(new PacketAvatarFetterDataNotify(avatar));
|
||||||
session.send(new PacketAvatarDataNotify(avatar.getPlayer()));
|
session.send(new PacketAvatarDataNotify(avatar.getPlayer()));
|
||||||
|
@ -54,8 +54,7 @@ public class PacketGetMailItemRsp extends GenshinPacket {
|
|||||||
genshinItem.setCount(mailItem.itemCount);
|
genshinItem.setCount(mailItem.itemCount);
|
||||||
genshinItem.setLevel(mailItem.itemLevel);
|
genshinItem.setLevel(mailItem.itemLevel);
|
||||||
genshinItem.setPromoteLevel(promoteLevel);
|
genshinItem.setPromoteLevel(promoteLevel);
|
||||||
player.getInventory().addItem(genshinItem);
|
player.getInventory().addItem(genshinItem, ActionReason.MailAttachment);
|
||||||
player.sendPacket(new PacketItemAddHintNotify(genshinItem, ActionReason.MailAttachment));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message.isAttachmentGot = true;
|
message.isAttachmentGot = true;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package emu.grasscutter.server.packet.send;
|
package emu.grasscutter.server.packet.send;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import emu.grasscutter.game.inventory.GenshinItem;
|
import emu.grasscutter.game.inventory.GenshinItem;
|
||||||
@ -21,7 +22,7 @@ public class PacketItemAddHintNotify extends GenshinPacket {
|
|||||||
this.setData(proto);
|
this.setData(proto);
|
||||||
}
|
}
|
||||||
|
|
||||||
public PacketItemAddHintNotify(List<GenshinItem> items, ActionReason reason) {
|
public PacketItemAddHintNotify(Collection<GenshinItem> items, ActionReason reason) {
|
||||||
super(PacketOpcodes.ItemAddHintNotify);
|
super(PacketOpcodes.ItemAddHintNotify);
|
||||||
|
|
||||||
ItemAddHintNotify.Builder proto = ItemAddHintNotify.newBuilder()
|
ItemAddHintNotify.Builder proto = ItemAddHintNotify.newBuilder()
|
||||||
|
Loading…
Reference in New Issue
Block a user