2020-04-24 03:25:58 +02:00
|
|
|
package net.minestom.server.entity;
|
2019-08-03 15:25:24 +02:00
|
|
|
|
2022-03-04 07:07:53 +01:00
|
|
|
import org.jetbrains.annotations.NotNull;
|
2020-10-25 22:19:27 +01:00
|
|
|
|
2020-10-21 16:26:55 +02:00
|
|
|
/**
|
|
|
|
* Represents the game mode of a player.
|
|
|
|
* <p>
|
|
|
|
* Can be set with {@link Player#setGameMode(GameMode)}.
|
|
|
|
*/
|
2019-08-03 15:25:24 +02:00
|
|
|
public enum GameMode {
|
2022-03-04 07:07:53 +01:00
|
|
|
SURVIVAL((byte) 0, true),
|
|
|
|
CREATIVE((byte) 1, false),
|
|
|
|
ADVENTURE((byte) 2, true),
|
|
|
|
SPECTATOR((byte) 3, false);
|
2019-08-03 15:25:24 +02:00
|
|
|
|
2020-09-24 01:50:25 +02:00
|
|
|
private final byte id;
|
|
|
|
private final boolean canTakeDamage;
|
2019-08-03 15:25:24 +02:00
|
|
|
|
2020-04-27 20:33:08 +02:00
|
|
|
GameMode(byte id, boolean canTakeDamage) {
|
2019-08-03 15:25:24 +02:00
|
|
|
this.id = id;
|
2020-04-27 20:33:08 +02:00
|
|
|
this.canTakeDamage = canTakeDamage;
|
2019-08-03 15:25:24 +02:00
|
|
|
}
|
|
|
|
|
2022-03-04 07:07:53 +01:00
|
|
|
public byte id() {
|
2019-08-03 15:25:24 +02:00
|
|
|
return id;
|
|
|
|
}
|
|
|
|
|
2020-04-27 20:33:08 +02:00
|
|
|
public boolean canTakeDamage() {
|
|
|
|
return canTakeDamage;
|
|
|
|
}
|
2020-10-25 22:19:27 +01:00
|
|
|
|
2022-03-04 07:07:53 +01:00
|
|
|
public static @NotNull GameMode fromId(int id) {
|
|
|
|
return switch (id) {
|
|
|
|
case 0 -> SURVIVAL;
|
|
|
|
case 1 -> CREATIVE;
|
|
|
|
case 2 -> ADVENTURE;
|
|
|
|
case 3 -> SPECTATOR;
|
|
|
|
default -> throw new IllegalArgumentException("Unknown game mode id: " + id);
|
|
|
|
};
|
2020-10-25 22:19:27 +01:00
|
|
|
}
|
2019-08-03 15:25:24 +02:00
|
|
|
}
|