mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-05-16 18:38:35 +08:00
feat: support multiplayer mode in teapot (#2317)
This commit is contained in:
committed by
GitHub
Unverified
parent
667008ecf1
commit
8563d4b574
+86
-54
@@ -21,30 +21,30 @@ public class PacketPlayerEnterSceneNotify extends BasePacket {
|
||||
player.setEnterSceneToken(Utils.randomRange(1000, 99999));
|
||||
|
||||
var proto =
|
||||
PlayerEnterSceneNotify.newBuilder()
|
||||
.setSceneId(player.getSceneId())
|
||||
.setPos(player.getPosition().toProto())
|
||||
.setSceneBeginTime(System.currentTimeMillis())
|
||||
.setType(EnterType.ENTER_TYPE_SELF)
|
||||
.setTargetUid(player.getUid())
|
||||
.setEnterSceneToken(player.getEnterSceneToken())
|
||||
.setWorldLevel(player.getWorldLevel())
|
||||
.setEnterReason(EnterReason.Login.getValue())
|
||||
.setIsFirstLoginEnterScene(player.isFirstLoginEnterScene())
|
||||
.setWorldType(1)
|
||||
.setSceneTransaction(
|
||||
"3-"
|
||||
+ player.getUid()
|
||||
+ "-"
|
||||
+ (int) (System.currentTimeMillis() / 1000)
|
||||
+ "-"
|
||||
+ 18402);
|
||||
PlayerEnterSceneNotify.newBuilder()
|
||||
.setSceneId(player.getSceneId())
|
||||
.setPos(player.getPosition().toProto())
|
||||
.setSceneBeginTime(System.currentTimeMillis())
|
||||
.setType(EnterType.ENTER_TYPE_SELF)
|
||||
.setTargetUid(player.getUid())
|
||||
.setEnterSceneToken(player.getEnterSceneToken())
|
||||
.setWorldLevel(player.getWorldLevel())
|
||||
.setEnterReason(EnterReason.Login.getValue())
|
||||
.setIsFirstLoginEnterScene(player.isFirstLoginEnterScene())
|
||||
.setWorldType(1)
|
||||
.setSceneTransaction(
|
||||
"3-"
|
||||
+ player.getUid()
|
||||
+ "-"
|
||||
+ (int) (System.currentTimeMillis() / 1000)
|
||||
+ "-"
|
||||
+ 18402);
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
public PacketPlayerEnterSceneNotify(
|
||||
Player player, EnterType type, EnterReason reason, int newScene, Position newPos) {
|
||||
Player player, EnterType type, EnterReason reason, int newScene, Position newPos) {
|
||||
this(player, player, type, reason, newScene, newPos);
|
||||
}
|
||||
|
||||
@@ -53,52 +53,52 @@ public class PacketPlayerEnterSceneNotify extends BasePacket {
|
||||
}
|
||||
|
||||
public PacketPlayerEnterSceneNotify(
|
||||
Player player,
|
||||
Player target,
|
||||
EnterType type,
|
||||
EnterReason reason,
|
||||
int newScene,
|
||||
Position newPos) {
|
||||
Player player,
|
||||
Player target,
|
||||
EnterType type,
|
||||
EnterReason reason,
|
||||
int newScene,
|
||||
Position newPos) {
|
||||
this(
|
||||
player,
|
||||
target,
|
||||
TeleportProperties.builder()
|
||||
.enterType(type)
|
||||
.enterReason(reason)
|
||||
.sceneId(newScene)
|
||||
.teleportTo(newPos)
|
||||
.build());
|
||||
player,
|
||||
target,
|
||||
TeleportProperties.builder()
|
||||
.enterType(type)
|
||||
.enterReason(reason)
|
||||
.sceneId(newScene)
|
||||
.teleportTo(newPos)
|
||||
.build());
|
||||
}
|
||||
|
||||
// Teleport or go somewhere
|
||||
public PacketPlayerEnterSceneNotify(
|
||||
Player player, Player target, TeleportProperties teleportProperties) {
|
||||
Player player, Player target, TeleportProperties teleportProperties) {
|
||||
super(PacketOpcodes.PlayerEnterSceneNotify);
|
||||
|
||||
player.setSceneLoadState(SceneLoadState.LOADING);
|
||||
player.setEnterSceneToken(Utils.randomRange(1000, 99999));
|
||||
|
||||
var proto =
|
||||
PlayerEnterSceneNotify.newBuilder()
|
||||
.setPrevSceneId(player.getSceneId())
|
||||
.setPrevPos(player.getPosition().toProto())
|
||||
.setSceneId(teleportProperties.getSceneId())
|
||||
.setPos(teleportProperties.getTeleportTo().toProto())
|
||||
.setSceneBeginTime(System.currentTimeMillis())
|
||||
.setType(teleportProperties.getEnterType())
|
||||
.setTargetUid(target.getUid())
|
||||
.setEnterSceneToken(player.getEnterSceneToken())
|
||||
.setWorldLevel(target.getWorld().getWorldLevel())
|
||||
.setEnterReason(teleportProperties.getEnterReason().getValue())
|
||||
.setWorldType(1)
|
||||
.setSceneTransaction(
|
||||
teleportProperties.getSceneId()
|
||||
+ "-"
|
||||
+ target.getUid()
|
||||
+ "-"
|
||||
+ (int) (System.currentTimeMillis() / 1000)
|
||||
+ "-"
|
||||
+ 18402);
|
||||
PlayerEnterSceneNotify.newBuilder()
|
||||
.setPrevSceneId(player.getSceneId())
|
||||
.setPrevPos(player.getPosition().toProto())
|
||||
.setSceneId(teleportProperties.getSceneId())
|
||||
.setPos(teleportProperties.getTeleportTo().toProto())
|
||||
.setSceneBeginTime(System.currentTimeMillis())
|
||||
.setType(teleportProperties.getEnterType())
|
||||
.setTargetUid(target.getUid())
|
||||
.setEnterSceneToken(player.getEnterSceneToken())
|
||||
.setWorldLevel(target.getWorld().getWorldLevel())
|
||||
.setEnterReason(teleportProperties.getEnterReason().getValue())
|
||||
.setWorldType(1)
|
||||
.setSceneTransaction(
|
||||
teleportProperties.getSceneId()
|
||||
+ "-"
|
||||
+ target.getUid()
|
||||
+ "-"
|
||||
+ (int) (System.currentTimeMillis() / 1000)
|
||||
+ "-"
|
||||
+ 18402);
|
||||
|
||||
// Apply the dungeon ID to the packet if it's a dungeon.
|
||||
if (teleportProperties.getDungeonId() != 0) {
|
||||
@@ -107,4 +107,36 @@ public class PacketPlayerEnterSceneNotify extends BasePacket {
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
// Go home
|
||||
public PacketPlayerEnterSceneNotify(
|
||||
Player player, int targetUid, TeleportProperties teleportProperties, boolean other) {
|
||||
super(PacketOpcodes.PlayerEnterSceneNotify);
|
||||
|
||||
player.setSceneLoadState(SceneLoadState.LOADING);
|
||||
player.setEnterSceneToken(Utils.randomRange(1000, 99999));
|
||||
|
||||
var proto =
|
||||
PlayerEnterSceneNotify.newBuilder()
|
||||
.setPrevSceneId(player.getSceneId())
|
||||
.setPrevPos(player.getPosition().toProto())
|
||||
.setSceneId(teleportProperties.getSceneId())
|
||||
.setPos(teleportProperties.getTeleportTo().toProto())
|
||||
.setSceneBeginTime(System.currentTimeMillis())
|
||||
.setType(other ? EnterType.ENTER_TYPE_OTHER_HOME : EnterType.ENTER_TYPE_SELF_HOME)
|
||||
.setTargetUid(targetUid)
|
||||
.setEnterSceneToken(player.getEnterSceneToken())
|
||||
.setEnterReason(teleportProperties.getEnterReason().getValue())
|
||||
.setWorldType(64)
|
||||
.setSceneTransaction(
|
||||
teleportProperties.getSceneId()
|
||||
+ "-"
|
||||
+ targetUid
|
||||
+ "-"
|
||||
+ (int) (System.currentTimeMillis() / 1000)
|
||||
+ "-"
|
||||
+ 27573);
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user