Implement destroying materials from the inventory menu

This commit is contained in:
Melledy
2024-05-19 02:31:15 -07:00
parent 49725edd0d
commit dca4a211f3
3 changed files with 454 additions and 0 deletions

View File

@@ -580,6 +580,18 @@ public class InventoryService extends BaseGameService {
return player.getInventory().addItems(returnItems);
}
public boolean destroyItem(Player player, int itemId, int count) {
// Sanity check
if (count <= 0) return true;
// Remove items from inventory
if (player.getInventory().removePileItem(itemId, count)) {
return true;
} else {
return false;
}
}
public List<GameItem> composeItem(Player player, int composeId, int count, List<ItemParam> costItems) {
// Sanity check
if (count <= 0) return null;

View File

@@ -0,0 +1,20 @@
package emu.lunarcore.server.packet.recv;
import emu.lunarcore.proto.DestroyItemCsReqOuterClass.DestroyItemCsReq;
import emu.lunarcore.server.game.GameSession;
import emu.lunarcore.server.packet.CmdId;
import emu.lunarcore.server.packet.Opcodes;
import emu.lunarcore.server.packet.PacketHandler;
@Opcodes(CmdId.DestroyItemCsReq)
public class HandlerDestroyItemCsReq extends PacketHandler {
@Override
public void handle(GameSession session, byte[] data) throws Exception {
var req = DestroyItemCsReq.parseFrom(data);
session.getServer().getInventoryService().destroyItem(session.getPlayer(), req.getItemId(), req.getItemCount());
session.send(CmdId.DestroyItemScRsp);
}
}