mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-05-23 22:49:56 +08:00
Copy some files from Grasscutter-Quests
NOT completely finished, nor is it completely done. Protocol issues remain! (including lack of packet IDs)
This commit is contained in:
+26
-16
@@ -3,6 +3,7 @@ package emu.grasscutter.server.packet.send;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.player.Player.SceneLoadState;
|
||||
import emu.grasscutter.game.props.EnterReason;
|
||||
import emu.grasscutter.game.world.data.TeleportProperties;
|
||||
import emu.grasscutter.net.packet.BasePacket;
|
||||
import emu.grasscutter.net.packet.PacketOpcodes;
|
||||
import emu.grasscutter.net.proto.EnterTypeOuterClass.EnterType;
|
||||
@@ -19,7 +20,7 @@ public class PacketPlayerEnterSceneNotify extends BasePacket {
|
||||
player.setSceneLoadState(SceneLoadState.LOADING);
|
||||
player.setEnterSceneToken(Utils.randomRange(1000, 99999));
|
||||
|
||||
PlayerEnterSceneNotify.Builder proto =
|
||||
var proto =
|
||||
PlayerEnterSceneNotify.newBuilder()
|
||||
.setSceneId(player.getSceneId())
|
||||
.setPos(player.getPosition().toProto())
|
||||
@@ -47,7 +48,10 @@ public class PacketPlayerEnterSceneNotify extends BasePacket {
|
||||
this(player, player, type, reason, newScene, newPos);
|
||||
}
|
||||
|
||||
// Teleport or go somewhere
|
||||
public PacketPlayerEnterSceneNotify(Player player, TeleportProperties teleportProperties) {
|
||||
this(player, player, teleportProperties);
|
||||
}
|
||||
|
||||
public PacketPlayerEnterSceneNotify(
|
||||
Player player,
|
||||
Player target,
|
||||
@@ -55,34 +59,40 @@ public class PacketPlayerEnterSceneNotify extends BasePacket {
|
||||
EnterReason reason,
|
||||
int newScene,
|
||||
Position newPos) {
|
||||
super(PacketOpcodes.PlayerEnterSceneNotify);
|
||||
this(
|
||||
player,
|
||||
target,
|
||||
TeleportProperties.builder()
|
||||
.enterType(type)
|
||||
.enterReason(reason)
|
||||
.sceneId(newScene)
|
||||
.teleportTo(newPos)
|
||||
.build());
|
||||
}
|
||||
|
||||
// Set previous position
|
||||
if (!(newScene == 3)) { // Hardcoded for now else weird positions will occur
|
||||
// Don't update position within same scene or teapot
|
||||
} else {
|
||||
// Only used for exiting teapot currently
|
||||
player.setPrevPos(player.getPosition());
|
||||
}
|
||||
// Teleport or go somewhere
|
||||
public PacketPlayerEnterSceneNotify(
|
||||
Player player, Player target, TeleportProperties teleportProperties) {
|
||||
super(PacketOpcodes.PlayerEnterSceneNotify);
|
||||
|
||||
player.setSceneLoadState(SceneLoadState.LOADING);
|
||||
player.setEnterSceneToken(Utils.randomRange(1000, 99999));
|
||||
|
||||
PlayerEnterSceneNotify.Builder proto =
|
||||
var proto =
|
||||
PlayerEnterSceneNotify.newBuilder()
|
||||
.setPrevSceneId(player.getSceneId())
|
||||
.setPrevPos(player.getPosition().toProto())
|
||||
.setSceneId(newScene)
|
||||
.setPos(newPos.toProto())
|
||||
.setSceneId(teleportProperties.getSceneId())
|
||||
.setPos(teleportProperties.getTeleportTo().toProto())
|
||||
.setSceneBeginTime(System.currentTimeMillis())
|
||||
.setType(type)
|
||||
.setType(teleportProperties.getEnterType())
|
||||
.setTargetUid(target.getUid())
|
||||
.setEnterSceneToken(player.getEnterSceneToken())
|
||||
.setWorldLevel(target.getWorld().getWorldLevel())
|
||||
.setEnterReason(reason.getValue())
|
||||
.setEnterReason(teleportProperties.getEnterReason().getValue())
|
||||
.setWorldType(1)
|
||||
.setSceneTransaction(
|
||||
newScene
|
||||
teleportProperties.getSceneId()
|
||||
+ "-"
|
||||
+ target.getUid()
|
||||
+ "-"
|
||||
|
||||
Reference in New Issue
Block a user