Implemented respawning

This commit is contained in:
kuroppoi 2021-06-02 00:13:00 +02:00
parent d1e00bded3
commit ff4e5611a7
3 changed files with 31 additions and 0 deletions

View file

@ -56,6 +56,7 @@ import brainwine.gameserver.server.requests.BlocksIgnoreRequest;
import brainwine.gameserver.server.requests.BlocksRequest;
import brainwine.gameserver.util.MapHelper;
import brainwine.gameserver.util.MathUtils;
import brainwine.gameserver.util.Vector2i;
import brainwine.gameserver.zone.Chunk;
import brainwine.gameserver.zone.MetaBlock;
import brainwine.gameserver.zone.Zone;
@ -109,6 +110,7 @@ public class Player extends Entity implements CommandExecutor {
private String clientVersion;
private Placement lastPlacement;
private Item heldItem = Item.AIR;
private Vector2i spawnPoint = new Vector2i(0, 0);
private int teleportX;
private int teleportY;
private long lastHeartbeat;
@ -201,6 +203,8 @@ public class Player extends Entity implements CommandExecutor {
y = spawn.getY();
}
spawnPoint.setX((int)x);
spawnPoint.setY((int)y);
sendMessage(new ConfigurationMessage(id, getClientConfig(), GameConfiguration.getClientConfig(this), zone.getClientConfig(this)));
sendMessage(new ZoneStatusMessage(zone.getStatusConfig()));
sendMessage(new ZoneStatusMessage(zone.getStatusConfig()));
@ -365,6 +369,15 @@ public class Player extends Entity implements CommandExecutor {
sendMessage(new PlayerPositionMessage((int)x, (int)y + 1));
}
public void respawn() {
int x = spawnPoint.getX();
int y = spawnPoint.getY();
sendMessage(new PlayerPositionMessage(x, y));
sendMessage(new HealthMessage(health));
sendMessageToPeers(new EntityStatusMessage(this, EntityStatus.REVIVED));
zone.sendMessage(new EffectMessage(x, y, "spawn", 20));
}
/**
* Teleports the player to the specified position.
*

View file

@ -50,6 +50,7 @@ import brainwine.gameserver.server.requests.HeartbeatRequest;
import brainwine.gameserver.server.requests.InventoryMoveRequest;
import brainwine.gameserver.server.requests.InventoryUseRequest;
import brainwine.gameserver.server.requests.MoveRequest;
import brainwine.gameserver.server.requests.RespawnRequest;
import brainwine.gameserver.server.requests.StatusRequest;
import brainwine.gameserver.server.requests.TransactionRequest;
import brainwine.gameserver.server.requests.ZoneChangeRequest;
@ -90,6 +91,7 @@ public class NetworkRegistry {
registerRequest(23, ZoneSearchRequest.class);
registerRequest(24, ZoneChangeRequest.class);
registerRequest(25, BlocksIgnoreRequest.class);
registerRequest(26, RespawnRequest.class);
registerRequest(41, TransactionRequest.class);
registerRequest(45, DialogRequest.class);
registerRequest(47, ConsoleRequest.class);

View file

@ -0,0 +1,16 @@
package brainwine.gameserver.server.requests;
import org.msgpack.type.Value;
import brainwine.gameserver.entity.player.Player;
import brainwine.gameserver.server.PlayerRequest;
public class RespawnRequest extends PlayerRequest {
public Value status;
@Override
public void process(Player player) {
player.respawn();
}
}