Build your own Minecraft minigame with flexible, extensible, and modular API.
Build your game with a simple style API with some built-in modules:
public class ExampleGame {
public static AbstractGame simpleGame() {
GameTemplate.of(plugin)
.withWaitingRoom(
1, // min player
2, // max player
Duration.ofSeconds(10), // waiting duration
new Location(Bukkit.getWorld("game_world"), 0, 64, 0) // waiting room spawn location
)
.withBroadcastMessagePlayerJoinAndQuit(
player -> "Player Join the game: " + player.getName(),
player -> "Player Quit the game: " + player.getName()
)
.setRemovePlayerOnQuit(true)
.setTeleportPlayerOnQuit(true)
.setQuitCommand("quit")
.setJoinCommand("join")
.addPhase(
0, // priority
() -> Phase.builder()
.onStart((it) -> Bukkit.broadcastMessage("Game Start!"))
.build()
)
.world(Bukkit.getWorld("game_world"))
.build();
}
}
Or, try a more complex, flexible style:
public class ExampleGame extends AbstractGame {
public ExampleGame(Plugin plugin) {
super(plugin);
}
@Override
public void init() {
super.init();
Bukkit.broadcastMessage("Game Created...");
installModule(new ExampleModule(this));
// do your own stuff...
}
@Override
protected FlowManager.FlowManagerBuilder generateFlowManager() {
FlowManager.FlowManagerBuilder builder = FlowManager.builder();
builder.addPhase(
0, // priority
() -> Phase.builder()
.onStart((it) -> Bukkit.broadcastMessage("Game Start!"))
.build()
);
PhaseAndModule<PhaseBlockingModule> blockingModule = ExtraPhases.blockingPhase();
builder.addPhase(
1,
blockingModule::getPhase
);
builder.addPhase(
1,
() -> Phase.builder()
.onStart((it) -> Bukkit.broadcastMessage("Waiting for game end..."))
.build()
);
builder.addPhase(
2,
() -> Phase.builder()
.onStart((it) -> Bukkit.broadcastMessage("Game end!"))
.build()
);
return builder;
}
}
Please read the Wiki for more information.
GameSenseLib is licensed under the Apache License 2.0.