Implement the Home System (Serenitea Pot)

This commit is contained in:
Akka
2022-06-14 20:51:13 +08:00
committed by Melledy
parent 399275e89f
commit e16633e34b
38 changed files with 997 additions and 39 deletions

View File

@@ -0,0 +1,57 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.FurnitureCurModuleArrangeCountNotifyOuterClass;
import emu.grasscutter.net.proto.Uint32PairOuterClass;
public class PacketFurnitureCurModuleArrangeCountNotify extends BasePacket {
public PacketFurnitureCurModuleArrangeCountNotify() {
super(PacketOpcodes.FurnitureCurModuleArrangeCountNotify);
var proto = FurnitureCurModuleArrangeCountNotifyOuterClass.FurnitureCurModuleArrangeCountNotify.newBuilder();
proto.addFurnitureArrangeCountList(Uint32PairOuterClass.Uint32Pair.newBuilder()
.setKey(360101)
.setValue(7)
.build());
proto.addFurnitureArrangeCountList(Uint32PairOuterClass.Uint32Pair.newBuilder()
.setKey(360201)
.setValue(7)
.build());
proto.addFurnitureArrangeCountList(Uint32PairOuterClass.Uint32Pair.newBuilder()
.setKey(360301)
.setValue(7)
.build());
proto.addFurnitureArrangeCountList(Uint32PairOuterClass.Uint32Pair.newBuilder()
.setKey(360401)
.setValue(2)
.build());
proto.addFurnitureArrangeCountList(Uint32PairOuterClass.Uint32Pair.newBuilder()
.setKey(360402)
.setValue(4)
.build());
proto.addFurnitureArrangeCountList(Uint32PairOuterClass.Uint32Pair.newBuilder()
.setKey(364301)
.setValue(1)
.build());
proto.addFurnitureArrangeCountList(Uint32PairOuterClass.Uint32Pair.newBuilder()
.setKey(364401)
.setValue(1)
.build());
proto.addFurnitureArrangeCountList(Uint32PairOuterClass.Uint32Pair.newBuilder()
.setKey(3750102)
.setValue(1)
.build());
this.setData(proto);
}
}

View File

@@ -0,0 +1,50 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.HomeBasicInfoNotifyOuterClass;
import emu.grasscutter.net.proto.HomeBasicInfoOuterClass;
import emu.grasscutter.net.proto.HomeLimitedShopInfoOuterClass;
import emu.grasscutter.net.proto.VectorOuterClass;
public class PacketHomeBasicInfoNotify extends BasePacket {
public PacketHomeBasicInfoNotify(Player player, boolean editMode) {
super(PacketOpcodes.HomeBasicInfoNotify);
if(player.getCurrentRealmId() == null){
return;
}
var proto = HomeBasicInfoNotifyOuterClass.HomeBasicInfoNotify.newBuilder();
var sceneId = player.getCurrentRealmId() + 2000;
var homeScene = player.getHome().getHomeSceneItem(sceneId);
proto.setBasicInfo(HomeBasicInfoOuterClass.HomeBasicInfo.newBuilder()
.setCurModuleId(player.getCurrentRealmId())
.setCurRoomSceneId(homeScene.getRoomSceneId())
.setIsInEditMode(editMode)
.setHomeOwnerUid(player.getUid())
.setLevel(1)
.setOwnerNickName(player.getNickname())
.setLimitedShopInfo(HomeLimitedShopInfoOuterClass.HomeLimitedShopInfo.newBuilder()
.setDjinnPos(VectorOuterClass.Vector.newBuilder()
.setZ(192)
.setX(792)
.setY(316.7f)
.build())
.setDjinnRot(VectorOuterClass.Vector.newBuilder()
.setY(176)
.build())
.setNextCloseTime(Integer.MAX_VALUE)
.setNextGuestOpenTime(0)
.setNextOpenTime(0)
.setUid(player.getUid())
.build())
.build());
this.setData(proto);
}
}

View File

@@ -0,0 +1,18 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.HomeChangeEditModeRspOuterClass;
public class PacketHomeChangeEditModeRsp extends BasePacket {
public PacketHomeChangeEditModeRsp(boolean enterEditMode) {
super(PacketOpcodes.HomeChangeEditModeRsp);
var proto = HomeChangeEditModeRspOuterClass.HomeChangeEditModeRsp.newBuilder();
proto.setIsEnterEditMode(enterEditMode);
this.setData(proto);
}
}

View File

@@ -25,6 +25,11 @@ public class PacketHomeComfortInfoNotify extends BasePacket {
comfortInfoList.add(
HomeModuleComfortInfoOuterClass.HomeModuleComfortInfo.newBuilder()
.setModuleId(moduleId)
.setRoomSceneComfortValue(1050)
.addWorldSceneBlockComfortValueList(750)
.addWorldSceneBlockComfortValueList(0)
.addWorldSceneBlockComfortValueList(0)
.addWorldSceneBlockComfortValueList(0)
.build()
);
}

View File

@@ -0,0 +1,31 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.game.home.HomeSceneItem;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.HomeGetArrangementInfoRspOuterClass;
import java.util.List;
public class PacketHomeGetArrangementInfoRsp extends BasePacket {
public PacketHomeGetArrangementInfoRsp(Player player, List<Integer> sceneIdList) {
super(PacketOpcodes.HomeGetArrangementInfoRsp);
var home = player.getHome();
var homeScenes = sceneIdList.stream()
.map(home::getHomeSceneItem)
.map(HomeSceneItem::toProto)
.toList();
home.save();
var proto = HomeGetArrangementInfoRspOuterClass.HomeGetArrangementInfoRsp.newBuilder();
proto.addAllSceneArrangementInfoList(homeScenes);
this.setData(proto);
}
}

View File

@@ -0,0 +1,19 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.game.home.GameHome;
import emu.grasscutter.game.player.Player;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.HomeMarkPointNotifyOuterClass;
public class PacketHomeMarkPointNotify extends BasePacket {
public PacketHomeMarkPointNotify(Player player, GameHome home) {
super(PacketOpcodes.HomeMarkPointNotify);
var proto = HomeMarkPointNotifyOuterClass.HomeMarkPointNotify.newBuilder();
this.setData(proto);
}
}

View File

@@ -0,0 +1,17 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.HomeSceneArrangementInfoOuterClass;
public class PacketHomeSceneInitFinishRsp extends BasePacket {
public PacketHomeSceneInitFinishRsp() {
super(PacketOpcodes.HomeSceneInitFinishRsp);
var proto = HomeSceneArrangementInfoOuterClass.HomeSceneArrangementInfo.newBuilder();
this.setData(proto);
}
}

View File

@@ -0,0 +1,18 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.HomeSceneJumpRspOuterClass;
public class PacketHomeSceneJumpRsp extends BasePacket {
public PacketHomeSceneJumpRsp(boolean enterRoomScene) {
super(PacketOpcodes.HomeSceneJumpRsp);
var proto = HomeSceneJumpRspOuterClass.HomeSceneJumpRsp.newBuilder();
proto.setIsEnterRoomScene(enterRoomScene);
this.setData(proto);
}
}

View File

@@ -0,0 +1,18 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.HomeUnknown1NotifyOuterClass;
public class PacketHomeUnknown1Notify extends BasePacket {
public PacketHomeUnknown1Notify(boolean isEnterEditMode) {
super(PacketOpcodes.HomeUnknown1Notify);
var proto = HomeUnknown1NotifyOuterClass.HomeUnknown1Notify.newBuilder();
proto.setIsEnterEditMode(isEnterEditMode);
this.setData(proto);
}
}

View File

@@ -0,0 +1,12 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
public class PacketHomeUnknown2Rsp extends BasePacket {
public PacketHomeUnknown2Rsp() {
super(PacketOpcodes.HomeUnknown2Rsp);
}
}

View File

@@ -0,0 +1,12 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
public class PacketHomeUpdateArrangementInfoRsp extends BasePacket {
public PacketHomeUpdateArrangementInfoRsp() {
super(PacketOpcodes.HomeUpdateArrangementInfoRsp);
}
}

View File

@@ -0,0 +1,27 @@
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.UnlockedFurnitureFormulaDataNotifyOuterClass;
public class PacketUnlockedFurnitureFormulaDataNotify extends BasePacket {
public PacketUnlockedFurnitureFormulaDataNotify() {
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.setIsAll(true);
this.setData(proto);
}
}