mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-19 18:34:49 +01:00
implement furniture make system
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.FurnitureMakeReq)
|
||||
public class HandlerFurnitureMakeReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
session.getPlayer().getFurnitureManager().queryStatus();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.FurnitureMakeStartReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.FurnitureMakeStartReq)
|
||||
public class HandlerFurnitureMakeStartReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = FurnitureMakeStartReqOuterClass.FurnitureMakeStartReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getFurnitureManager().startMake(req.getMakeId(), req.getAvatarId());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -24,7 +24,7 @@ public class HandlerHomeSceneJumpReq extends PacketHandler {
|
||||
|
||||
Scene scene = session.getPlayer().getWorld().getSceneById(req.getIsEnterRoomScene() ? homeScene.getRoomSceneId() : realmId);
|
||||
Position pos = scene.getScriptManager().getConfig().born_pos;
|
||||
|
||||
|
||||
session.getPlayer().getWorld().transferPlayerToScene(
|
||||
session.getPlayer(),
|
||||
req.getIsEnterRoomScene() ? homeScene.getRoomSceneId() : realmId,
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
package emu.grasscutter.server.packet.recv;
|
||||
|
||||
import emu.grasscutter.net.packet.Opcodes;
|
||||
import emu.grasscutter.net.packet.PacketHandler;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.TakeFurnitureMakeReqOuterClass;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
|
||||
@Opcodes(PacketOpcodes.TakeFurnitureMakeReq)
|
||||
public class HandlerTakeFurnitureMakeReq extends PacketHandler {
|
||||
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = TakeFurnitureMakeReqOuterClass.TakeFurnitureMakeReq.parseFrom(payload);
|
||||
|
||||
session.getPlayer().getFurnitureManager().take(req.getIndex(), req.getMakeId(), req.getIsFastFinish());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.game.home.FurnitureMakeSlotItem;
|
||||
import emu.grasscutter.game.home.GameHome;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.FurnitureMakeRspOuterClass;
|
||||
import emu.grasscutter.net.proto.FurnitureMakeSlotOuterClass;
|
||||
|
||||
public class PacketFurnitureMakeRsp extends BasePacket {
|
||||
|
||||
public PacketFurnitureMakeRsp(GameHome home) {
|
||||
super(PacketOpcodes.FurnitureMakeRsp);
|
||||
|
||||
var proto = FurnitureMakeRspOuterClass.FurnitureMakeRsp.newBuilder();
|
||||
|
||||
proto.setFurnitureMakeSlot(FurnitureMakeSlotOuterClass.FurnitureMakeSlot.newBuilder()
|
||||
.addAllFurnitureMakeDataList(home.getFurnitureMakeSlotItemList().stream()
|
||||
.map(FurnitureMakeSlotItem::toProto)
|
||||
.toList())
|
||||
.build());
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.FurnitureMakeDataOuterClass;
|
||||
import emu.grasscutter.net.proto.FurnitureMakeSlotOuterClass;
|
||||
import emu.grasscutter.net.proto.FurnitureMakeStartRspOuterClass;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class PacketFurnitureMakeStartRsp extends BasePacket {
|
||||
|
||||
public PacketFurnitureMakeStartRsp(int ret, List<FurnitureMakeDataOuterClass.FurnitureMakeData> furnitureMakeData) {
|
||||
super(PacketOpcodes.FurnitureMakeStartRsp);
|
||||
|
||||
var proto = FurnitureMakeStartRspOuterClass.FurnitureMakeStartRsp.newBuilder();
|
||||
|
||||
proto.setRetcode(ret);
|
||||
|
||||
if(furnitureMakeData != null){
|
||||
proto.setFurnitureMakeSlot(FurnitureMakeSlotOuterClass.FurnitureMakeSlot.newBuilder()
|
||||
.addAllFurnitureMakeDataList(furnitureMakeData)
|
||||
.build());
|
||||
}
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -12,13 +12,16 @@ import java.util.Collection;
|
||||
|
||||
public class PacketHomeMarkPointNotify extends BasePacket {
|
||||
|
||||
public PacketHomeMarkPointNotify(Player player, GameHome home) {
|
||||
public PacketHomeMarkPointNotify(Player player) {
|
||||
super(PacketOpcodes.HomeMarkPointNotify);
|
||||
|
||||
var proto = HomeMarkPointNotifyOuterClass.HomeMarkPointNotify.newBuilder();
|
||||
|
||||
if(player.getRealmList() == null){
|
||||
return;
|
||||
}
|
||||
for(var moduleId : player.getRealmList()){
|
||||
var homeScene = home.getHomeSceneItem(moduleId + 2000);
|
||||
var homeScene = player.getHome().getHomeSceneItem(moduleId + 2000);
|
||||
|
||||
var markPointData = HomeMarkPointSceneDataOuterClass.HomeMarkPointSceneData.newBuilder()
|
||||
.setModuleId(moduleId)
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.data.common.ItemParamData;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.FurnitureMakeDataOuterClass;
|
||||
import emu.grasscutter.net.proto.FurnitureMakeSlotOuterClass;
|
||||
import emu.grasscutter.net.proto.ItemParamOuterClass;
|
||||
import emu.grasscutter.net.proto.TakeFurnitureMakeRspOuterClass;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class PacketTakeFurnitureMakeRsp extends BasePacket {
|
||||
|
||||
public PacketTakeFurnitureMakeRsp(int ret,
|
||||
int makeId,
|
||||
List<ItemParamOuterClass.ItemParam> output,
|
||||
List<FurnitureMakeDataOuterClass.FurnitureMakeData> others) {
|
||||
super(PacketOpcodes.TakeFurnitureMakeRsp);
|
||||
|
||||
var proto = TakeFurnitureMakeRspOuterClass.TakeFurnitureMakeRsp.newBuilder();
|
||||
|
||||
proto.setRetcode(ret)
|
||||
.setMakeId(makeId);
|
||||
|
||||
if(output != null){
|
||||
proto.addAllOutputItemList(output);
|
||||
}
|
||||
|
||||
if(others != null){
|
||||
proto.setFurnitureMakeSlot(FurnitureMakeSlotOuterClass.FurnitureMakeSlot.newBuilder()
|
||||
.addAllFurnitureMakeDataList(others)
|
||||
.build());
|
||||
}
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -4,22 +4,16 @@ import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.UnlockedFurnitureFormulaDataNotifyOuterClass;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public class PacketUnlockedFurnitureFormulaDataNotify extends BasePacket {
|
||||
|
||||
public PacketUnlockedFurnitureFormulaDataNotify() {
|
||||
public PacketUnlockedFurnitureFormulaDataNotify(Set<Integer> unlockList) {
|
||||
super(PacketOpcodes.UnlockedFurnitureFormulaDataNotify);
|
||||
|
||||
var proto = UnlockedFurnitureFormulaDataNotifyOuterClass.UnlockedFurnitureFormulaDataNotify.newBuilder();
|
||||
|
||||
proto.addFurnitureIdList(361207);
|
||||
proto.addFurnitureIdList(362202);
|
||||
proto.addFurnitureIdList(362304);
|
||||
proto.addFurnitureIdList(363102);
|
||||
proto.addFurnitureIdList(363103);
|
||||
proto.addFurnitureIdList(363203);
|
||||
proto.addFurnitureIdList(370201);
|
||||
proto.addFurnitureIdList(370302);
|
||||
|
||||
proto.addAllFurnitureIdList(unlockList);
|
||||
proto.setIsAll(true);
|
||||
|
||||
this.setData(proto);
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
package emu.grasscutter.server.packet.send;
|
||||
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.UnlockedFurnitureSuiteDataNotifyOuterClass;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public class PacketUnlockedFurnitureSuiteDataNotify extends BasePacket {
|
||||
|
||||
public PacketUnlockedFurnitureSuiteDataNotify(Set<Integer> unlockList) {
|
||||
super(PacketOpcodes.UnlockedFurnitureSuiteDataNotify);
|
||||
|
||||
var proto = UnlockedFurnitureSuiteDataNotifyOuterClass.UnlockedFurnitureSuiteDataNotify.newBuilder();
|
||||
|
||||
proto.addAllFurnitureSuiteIdList(unlockList);
|
||||
proto.setIsAll(true);
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user