mirror of
https://github.com/Minestom/Minestom.git
synced 2024-09-29 23:17:59 +02:00
Add PlayerGameModeChangeEvent
This commit is contained in:
parent
51ef4779c9
commit
1514d8ac1f
@ -1286,8 +1286,18 @@ public class Player extends LivingEntity implements CommandSender, Localizable,
|
|||||||
* Changes the player {@link GameMode}
|
* Changes the player {@link GameMode}
|
||||||
*
|
*
|
||||||
* @param gameMode the new player GameMode
|
* @param gameMode the new player GameMode
|
||||||
|
* @return true if the gamemode was changed successfully, false otherwise (cancelled by event)
|
||||||
*/
|
*/
|
||||||
public void setGameMode(@NotNull GameMode gameMode) {
|
public boolean setGameMode(@NotNull GameMode gameMode) {
|
||||||
|
PlayerGameModeChangeEvent playerGameModeChangeEvent = new PlayerGameModeChangeEvent(this, gameMode);
|
||||||
|
EventDispatcher.call(playerGameModeChangeEvent);
|
||||||
|
if (playerGameModeChangeEvent.isCancelled()) {
|
||||||
|
// Abort
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
gameMode = playerGameModeChangeEvent.getNewGameMode();
|
||||||
|
|
||||||
this.gameMode = gameMode;
|
this.gameMode = gameMode;
|
||||||
// Condition to prevent sending the packets before spawning the player
|
// Condition to prevent sending the packets before spawning the player
|
||||||
if (isActive()) {
|
if (isActive()) {
|
||||||
@ -1320,6 +1330,8 @@ public class Player extends LivingEntity implements CommandSender, Localizable,
|
|||||||
if (isActive()) {
|
if (isActive()) {
|
||||||
refreshAbilities();
|
refreshAbilities();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -0,0 +1,56 @@
|
|||||||
|
package net.minestom.server.event.player;
|
||||||
|
|
||||||
|
import net.minestom.server.entity.GameMode;
|
||||||
|
import net.minestom.server.entity.Player;
|
||||||
|
import net.minestom.server.event.trait.CancellableEvent;
|
||||||
|
import net.minestom.server.event.trait.PlayerInstanceEvent;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the gamemode of a player is being modified.
|
||||||
|
*/
|
||||||
|
public class PlayerGameModeChangeEvent implements PlayerInstanceEvent, CancellableEvent {
|
||||||
|
|
||||||
|
private final Player player;
|
||||||
|
private GameMode newGameMode;
|
||||||
|
|
||||||
|
private boolean cancelled;
|
||||||
|
|
||||||
|
public PlayerGameModeChangeEvent(@NotNull Player player, @NotNull GameMode newGameMode) {
|
||||||
|
this.player = player;
|
||||||
|
this.newGameMode = newGameMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the target gamemode.
|
||||||
|
*
|
||||||
|
* @return the target gamemode
|
||||||
|
*/
|
||||||
|
public @NotNull GameMode getNewGameMode() {
|
||||||
|
return newGameMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changes the target gamemode.
|
||||||
|
*
|
||||||
|
* @param newGameMode the new target gamemode
|
||||||
|
*/
|
||||||
|
public void setNewGameMode(@NotNull GameMode newGameMode) {
|
||||||
|
this.newGameMode = newGameMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean cancel) {
|
||||||
|
this.cancelled = cancel;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull Player getPlayer() {
|
||||||
|
return player;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user