implement furniture make system

This commit is contained in:
Akka
2022-06-16 17:25:20 +08:00
committed by Melledy
parent 7a247e70e0
commit 211d7d6fbf
19 changed files with 478 additions and 18 deletions

View File

@@ -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();
}
}

View File

@@ -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());
}
}

View File

@@ -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,

View File

@@ -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());
}
}

View File

@@ -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);
}
}

View File

@@ -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);
}
}

View File

@@ -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)

View File

@@ -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);
}
}

View File

@@ -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);

View File

@@ -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);
}
}