mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-02-07 10:36:41 +01:00
Move PlayerTeleportEvent occurrences into World
This commit is contained in:
@@ -5,12 +5,11 @@ import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.net.proto.MapMarkPointTypeOuterClass.MapMarkPointType;
|
||||
import emu.grasscutter.net.proto.MarkMapReqOuterClass.MarkMapReq;
|
||||
import emu.grasscutter.net.proto.MarkMapReqOuterClass.MarkMapReq.Operation;
|
||||
import emu.grasscutter.server.event.player.PlayerTeleportEvent;
|
||||
import emu.grasscutter.server.event.player.PlayerTeleportEvent.TeleportType;
|
||||
import emu.grasscutter.server.packet.send.PacketMarkMapRsp;
|
||||
import emu.grasscutter.server.packet.send.PacketSceneEntityAppearNotify;
|
||||
import emu.grasscutter.utils.Position;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class MapMarksManager extends BasePlayerManager {
|
||||
@@ -21,7 +20,7 @@ public class MapMarksManager extends BasePlayerManager {
|
||||
}
|
||||
|
||||
public Map<String, MapMark> getMapMarks() {
|
||||
return getPlayer().getMapMarks();
|
||||
return this.getPlayer().getMapMarks();
|
||||
}
|
||||
|
||||
public void handleMapMarkReq(MarkMapReq req) {
|
||||
@@ -31,26 +30,26 @@ public class MapMarksManager extends BasePlayerManager {
|
||||
MapMark createMark = new MapMark(req.getMark());
|
||||
// keep teleporting functionality on fishhook mark.
|
||||
if (createMark.getMapMarkPointType() == MapMarkPointType.MAP_MARK_POINT_TYPE_FISH_POOL) {
|
||||
teleport(player, createMark);
|
||||
this.teleport(player, createMark);
|
||||
return;
|
||||
}
|
||||
addMapMark(createMark);
|
||||
this.addMapMark(createMark);
|
||||
}
|
||||
case OPERATION_MOD -> {
|
||||
MapMark oldMark = new MapMark(req.getOld());
|
||||
removeMapMark(oldMark.getPosition());
|
||||
this.removeMapMark(oldMark.getPosition());
|
||||
MapMark newMark = new MapMark(req.getMark());
|
||||
addMapMark(newMark);
|
||||
this.addMapMark(newMark);
|
||||
}
|
||||
case OPERATION_DEL -> {
|
||||
MapMark deleteMark = new MapMark(req.getMark());
|
||||
removeMapMark(deleteMark.getPosition());
|
||||
this.removeMapMark(deleteMark.getPosition());
|
||||
}
|
||||
}
|
||||
if (op != Operation.OPERATION_GET) {
|
||||
save();
|
||||
this.save();
|
||||
}
|
||||
player.getSession().send(new PacketMarkMapRsp(getMapMarks()));
|
||||
player.getSession().send(new PacketMarkMapRsp(this.getMapMarks()));
|
||||
}
|
||||
|
||||
public String getMapMarkKey(Position position) {
|
||||
@@ -58,12 +57,12 @@ public class MapMarksManager extends BasePlayerManager {
|
||||
}
|
||||
|
||||
public void removeMapMark(Position position) {
|
||||
getMapMarks().remove(getMapMarkKey(position));
|
||||
this.getMapMarks().remove(this.getMapMarkKey(position));
|
||||
}
|
||||
|
||||
public void addMapMark(MapMark mapMark) {
|
||||
if (getMapMarks().size() < mapMarkMaxCount) {
|
||||
getMapMarks().put(getMapMarkKey(mapMark.getPosition()), mapMark);
|
||||
if (this.getMapMarks().size() < mapMarkMaxCount) {
|
||||
this.getMapMarks().put(this.getMapMarkKey(mapMark.getPosition()), mapMark);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,14 +74,7 @@ public class MapMarksManager extends BasePlayerManager {
|
||||
}
|
||||
|
||||
Position pos = mapMark.getPosition();
|
||||
PlayerTeleportEvent event = new PlayerTeleportEvent(player, PlayerTeleportEvent.TeleportType.MAP,
|
||||
player.getPosition(), new Position(pos.getX(), y, pos.getZ()));
|
||||
|
||||
event.call(); if(event.isCanceled()) return;
|
||||
|
||||
player.getPosition().set(event.getDestination());
|
||||
if (mapMark.getSceneId() != player.getSceneId()) {
|
||||
player.getWorld().transferPlayerToScene(player, mapMark.getSceneId(), player.getPosition());
|
||||
} player.getScene().broadcastPacket(new PacketSceneEntityAppearNotify(player));
|
||||
player.getWorld().transferPlayerToScene(player, mapMark.getSceneId(), TeleportType.MAP, new Position(pos.getX(), y, pos.getZ()));
|
||||
player.getScene().broadcastPacket(new PacketSceneEntityAppearNotify(player));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user