mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-22 20:04:56 +01:00
feat: unlock homeworld bgm and set homeworld bgm. (#1844)
* will be able to change home bgm. * feat: unlock homeworld bgm and set homeworld bgm. * Update src/main/java/emu/grasscutter/game/home/GameHome.java * Update GameHome.java * Get default unlocked home bgms from HomeWorldBgmData * fix: duplicate home items by sending packet
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
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.Unk2700BEDLIGJANCJClientReq;
|
||||
import emu.grasscutter.server.game.GameSession;
|
||||
import emu.grasscutter.server.packet.send.PacketChangeHomeBgmNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketChangeHomeBgmRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketUnlockedHomeBgmNotify;
|
||||
|
||||
@Opcodes(PacketOpcodes.Unk2700_BEDLIGJANCJ_ClientReq)
|
||||
public class HandlerChangeHomeBgmReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] header, byte[] payload) throws Exception {
|
||||
var req = Unk2700BEDLIGJANCJClientReq.Unk2700_BEDLIGJANCJ_ClientReq.parseFrom(payload);
|
||||
|
||||
int homeBgmId = req.getUnk2700BJHAMKKECEI();
|
||||
var home = session.getPlayer().getHome();
|
||||
if (!home.getUnlockedHomeBgmListInfo().contains(homeBgmId)) {
|
||||
home.addUnlockedHomeBgm(homeBgmId);
|
||||
session.send(new PacketUnlockedHomeBgmNotify(session.getPlayer()));
|
||||
}
|
||||
|
||||
home.getHomeSceneItem(session.getPlayer().getSceneId()).setHomeBgmId(homeBgmId);
|
||||
home.save();
|
||||
|
||||
session.send(new PacketChangeHomeBgmNotify(homeBgmId));
|
||||
session.send(new PacketChangeHomeBgmRsp());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user