Minestom/src/main/java/net/minestom/server/entity/GameMode.java

42 lines
974 B
Java
Raw Normal View History

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;
/**
* 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
GameMode(byte id, boolean canTakeDamage) {
2019-08-03 15:25:24 +02:00
this.id = id;
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;
}
public boolean canTakeDamage() {
return canTakeDamage;
}
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);
};
}
2019-08-03 15:25:24 +02:00
}