Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
ziqian zhang
Grasscutter
Commits
610a364b
Unverified
Commit
610a364b
authored
Oct 16, 2022
by
hamusuke
Committed by
GitHub
Oct 15, 2022
Browse files
feat: set friend enter home option (#1860)
parent
a4747abf
Changes
9
Expand all
Show whitespace changes
Inline
Side-by-side
src/generated/main/java/emu/grasscutter/net/proto/SetFriendEnterHomeOptionReqOuterClass.java
0 → 100644
View file @
610a364b
This diff is collapsed.
Click to expand it.
src/generated/main/java/emu/grasscutter/net/proto/SetFriendEnterHomeOptionRspOuterClass.java
0 → 100644
View file @
610a364b
This diff is collapsed.
Click to expand it.
src/main/java/emu/grasscutter/game/home/GameHome.java
View file @
610a364b
...
...
@@ -38,6 +38,7 @@ public class GameHome {
List
<
FurnitureMakeSlotItem
>
furnitureMakeSlotItemList
;
ConcurrentHashMap
<
Integer
,
HomeSceneItem
>
sceneMap
;
Set
<
Integer
>
unlockedHomeBgmList
;
int
enterHomeOption
;
public
void
save
()
{
DatabaseHelper
.
saveHome
(
this
);
...
...
src/main/java/emu/grasscutter/game/player/Player.java
View file @
610a364b
...
...
@@ -939,7 +939,8 @@ public class Player {
.
setIsShowAvatar
(
this
.
isShowAvatars
())
.
addAllShowAvatarInfoList
(
socialShowAvatarInfoList
)
.
addAllShowNameCardIdList
(
this
.
getShowNameCardInfoList
())
.
setFinishAchievementNum
(
0
);
.
setFinishAchievementNum
(
0
)
.
setFriendEnterHomeOptionValue
(
this
.
getHome
()
==
null
?
0
:
this
.
getHome
().
getEnterHomeOption
());
return
social
;
}
...
...
src/main/java/emu/grasscutter/server/packet/recv/HandlerSetFriendEnterHomeOptionReq.java
0 → 100644
View file @
610a364b
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.SetFriendEnterHomeOptionReqOuterClass
;
import
emu.grasscutter.server.game.GameSession
;
import
emu.grasscutter.server.packet.send.PacketPlayerHomeCompInfoNotify
;
import
emu.grasscutter.server.packet.send.PacketSetFriendEnterHomeOptionRsp
;
@Opcodes
(
PacketOpcodes
.
SetFriendEnterHomeOptionReq
)
public
class
HandlerSetFriendEnterHomeOptionReq
extends
PacketHandler
{
@Override
public
void
handle
(
GameSession
session
,
byte
[]
header
,
byte
[]
payload
)
throws
Exception
{
var
req
=
SetFriendEnterHomeOptionReqOuterClass
.
SetFriendEnterHomeOptionReq
.
parseFrom
(
payload
);
session
.
getPlayer
().
getHome
().
setEnterHomeOption
(
req
.
getOptionValue
());
session
.
getPlayer
().
getHome
().
save
();
session
.
send
(
new
PacketPlayerHomeCompInfoNotify
(
session
.
getPlayer
()));
session
.
send
(
new
PacketSetFriendEnterHomeOptionRsp
());
}
}
src/main/java/emu/grasscutter/server/packet/recv/HandlerTryEnterHomeReq.java
View file @
610a364b
package
emu.grasscutter.server.packet.recv
;
import
emu.grasscutter.game.home.GameHome
;
import
emu.grasscutter.game.world.Scene
;
import
emu.grasscutter.net.packet.Opcodes
;
import
emu.grasscutter.net.packet.PacketHandler
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
import
emu.grasscutter.net.proto.FriendEnterHomeOptionOuterClass
;
import
emu.grasscutter.net.proto.RetcodeOuterClass
;
import
emu.grasscutter.net.proto.TryEnterHomeReqOuterClass
;
import
emu.grasscutter.server.event.player.PlayerTeleportEvent.TeleportType
;
import
emu.grasscutter.server.game.GameSession
;
...
...
@@ -15,11 +18,26 @@ public class HandlerTryEnterHomeReq extends PacketHandler {
@Override
public
void
handle
(
GameSession
session
,
byte
[]
header
,
byte
[]
payload
)
throws
Exception
{
TryEnterHomeReqOuterClass
.
TryEnterHomeReq
req
=
TryEnterHomeReqOuterClass
.
TryEnterHomeReq
.
parseFrom
(
payload
);
var
req
=
TryEnterHomeReqOuterClass
.
TryEnterHomeReq
.
parseFrom
(
payload
);
var
targetPlayer
=
session
.
getServer
().
getPlayerByUid
(
req
.
getTargetUid
(),
true
);
if
(
req
.
getTargetUid
()
!=
session
.
getPlayer
().
getUid
())
{
// I hope that tomorrow there will be a hero who can support multiplayer mode and write code like a poem
var
targetHome
=
GameHome
.
getByUid
(
req
.
getTargetUid
());
switch
(
targetHome
.
getEnterHomeOption
())
{
case
FriendEnterHomeOptionOuterClass
.
FriendEnterHomeOption
.
FRIEND_ENTER_HOME_OPTION_NEED_CONFIRM_VALUE
:
if
(!
targetPlayer
.
isOnline
())
{
session
.
send
(
new
PacketTryEnterHomeRsp
(
RetcodeOuterClass
.
Retcode
.
RET_HOME_OWNER_OFFLINE_VALUE
,
req
.
getTargetUid
()));
return
;
}
break
;
case
FriendEnterHomeOptionOuterClass
.
FriendEnterHomeOption
.
FRIEND_ENTER_HOME_OPTION_REFUSE_VALUE
:
session
.
send
(
new
PacketTryEnterHomeRsp
(
RetcodeOuterClass
.
Retcode
.
RET_HOME_HOME_REFUSE_GUEST_ENTER_VALUE
,
req
.
getTargetUid
()));
return
;
case
FriendEnterHomeOptionOuterClass
.
FriendEnterHomeOption
.
FRIEND_ENTER_HOME_OPTION_DIRECT_VALUE
:
break
;
}
session
.
send
(
new
PacketTryEnterHomeRsp
());
return
;
}
...
...
src/main/java/emu/grasscutter/server/packet/send/PacketPlayerHomeCompInfoNotify.java
View file @
610a364b
...
...
@@ -23,6 +23,7 @@ public class PacketPlayerHomeCompInfoNotify extends BasePacket {
PlayerHomeCompInfoOuterClass
.
PlayerHomeCompInfo
.
newBuilder
()
.
addAllUnlockedModuleIdList
(
player
.
getRealmList
())
.
addAllLevelupRewardGotLevelList
(
List
.
of
(
1
))
// Hardcoded
.
setFriendEnterHomeOptionValue
(
player
.
getHome
().
getEnterHomeOption
())
.
build
()
)
.
build
();
...
...
src/main/java/emu/grasscutter/server/packet/send/PacketSetFriendEnterHomeOptionRsp.java
0 → 100644
View file @
610a364b
package
emu.grasscutter.server.packet.send
;
import
emu.grasscutter.net.packet.BasePacket
;
import
emu.grasscutter.net.packet.PacketOpcodes
;
public
class
PacketSetFriendEnterHomeOptionRsp
extends
BasePacket
{
public
PacketSetFriendEnterHomeOptionRsp
()
{
super
(
PacketOpcodes
.
SetFriendEnterHomeOptionRsp
);
}
}
src/main/java/emu/grasscutter/server/packet/send/PacketTryEnterHomeRsp.java
View file @
610a364b
...
...
@@ -27,4 +27,15 @@ public class PacketTryEnterHomeRsp extends BasePacket {
this
.
setData
(
proto
);
}
public
PacketTryEnterHomeRsp
(
int
retCode
,
int
uid
)
{
super
(
PacketOpcodes
.
TryEnterHomeRsp
);
TryEnterHomeRspOuterClass
.
TryEnterHomeRsp
proto
=
TryEnterHomeRspOuterClass
.
TryEnterHomeRsp
.
newBuilder
()
.
setRetcode
(
retCode
)
.
setTargetUid
(
uid
)
.
build
();
this
.
setData
(
proto
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment