Skip to content

Commit 11e35d3

Browse files
committed
New game libary
1 parent 6269994 commit 11e35d3

26 files changed

+983
-13
lines changed

.idea/uiDesigner.xml

+124
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/workspace.xml

+40-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
[![](https://jitpack.io/v/teraprath/TinyLib.svg)](https://jitpack.io/#teraprath/TinyLib)
55
<div>
66
<h1>TinyLib</h1>
7-
<p>Personal libary for Paper 1.20+<p>
7+
<p>All-in-One Libary for Paper 1.20+<p>
88
</div>
99
</div>
1010

@@ -16,11 +16,12 @@
1616
- Multi-Language Support
1717
- MiniMessage Format Support (Hex Colors, Gradiants & more)
1818
- Custom Guis & Villager Trades
19+
- Easily create round-based Minigames
1920
- More tiny utilities!
2021

2122
## Implementation
2223

23-
You can see the latest version [here](https://github.com/teraprath/TinyLib/releases/latest).
24+
You can get the latest version [here](https://github.com/teraprath/TinyLib/releases/latest).
2425

2526
**Using Maven:**
2627

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<groupId>com.github.teraprath.tinylib</groupId>
66
<artifactId>TinyLib</artifactId>
7-
<version>2.1.0</version>
7+
<version>2.2.0</version>
88

99
<name>TinyLib</name>
1010

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
package com.github.teraprath.tinylib.game.api;
2+
3+
import com.github.teraprath.tinylib.game.api.event.GameRetireEvent;
4+
import com.github.teraprath.tinylib.game.api.event.GameStateChangeEvent;
5+
import com.github.teraprath.tinylib.game.api.listener.GamePingListener;
6+
import com.github.teraprath.tinylib.game.api.listener.PlayerJoinListener;
7+
import com.github.teraprath.tinylib.game.api.listener.PlayerQuitListener;
8+
import com.github.teraprath.tinylib.game.api.listener.WaitingListener;
9+
import com.github.teraprath.tinylib.game.api.team.GameTeamManager;
10+
import com.github.teraprath.tinylib.game.api.timer.RunningTimer;
11+
import com.github.teraprath.tinylib.game.api.timer.ShutdownTimer;
12+
import com.github.teraprath.tinylib.game.api.timer.WaitingTimer;
13+
import com.github.teraprath.tinylib.game.state.GameState;
14+
import com.github.teraprath.tinylib.game.state.GameStateManager;
15+
import org.bukkit.GameMode;
16+
import org.bukkit.entity.Player;
17+
import org.bukkit.plugin.PluginManager;
18+
import org.bukkit.plugin.java.JavaPlugin;
19+
20+
import javax.annotation.Nonnull;
21+
import java.util.ArrayList;
22+
import java.util.List;
23+
24+
public class GameAPI extends GameStateManager {
25+
26+
private final JavaPlugin plugin;
27+
private final GameSettings settings;
28+
private final GameTeamManager teamManager;
29+
private final WaitingTimer waitingTimer;
30+
private final RunningTimer runningTimer;
31+
private final ShutdownTimer shutdownTimer;
32+
private final List<Player> alive;
33+
34+
public GameAPI(@Nonnull GameSettings settings, @Nonnull JavaPlugin plugin) {
35+
this.plugin = plugin;
36+
this.settings = settings;
37+
this.teamManager = new GameTeamManager();
38+
this.waitingTimer = new WaitingTimer(this);
39+
this.runningTimer = new RunningTimer(this);
40+
this.shutdownTimer = new ShutdownTimer(this);
41+
this.alive = new ArrayList<>();
42+
43+
}
44+
45+
public GameAPI init() {
46+
registerEvents();
47+
return this;
48+
}
49+
50+
private void registerEvents() {
51+
final PluginManager pm = plugin.getServer().getPluginManager();
52+
pm.registerEvents(new GamePingListener(this), this.plugin);
53+
pm.registerEvents(new PlayerJoinListener(this), this.plugin);
54+
pm.registerEvents(new PlayerQuitListener(this), this.plugin);
55+
pm.registerEvents(new WaitingListener(this), this.plugin);
56+
}
57+
58+
@Override
59+
public void onChange(GameState gameState) {
60+
if (gameState.equals(GameState.RUNNING)) {
61+
this.alive.addAll(plugin.getServer().getOnlinePlayers());
62+
}
63+
plugin.getServer().getPluginManager().callEvent(new GameStateChangeEvent(this));
64+
}
65+
66+
public GameSettings getSettings() {
67+
return settings;
68+
}
69+
70+
public GameTeamManager getTeamManager() {
71+
return teamManager;
72+
}
73+
74+
public WaitingTimer getWaitingTimer() {
75+
return waitingTimer;
76+
}
77+
78+
public RunningTimer getRunningTimer() {
79+
return runningTimer;
80+
}
81+
82+
public ShutdownTimer getShutdownTimer() {
83+
return shutdownTimer;
84+
}
85+
86+
public List<Player> getAlive() {
87+
return this.alive;
88+
}
89+
90+
public void retire(@Nonnull Player player) {
91+
this.alive.remove(player);
92+
player.setGameMode(GameMode.SPECTATOR);
93+
plugin.getServer().getPluginManager().callEvent(new GameRetireEvent(player, this));
94+
}
95+
96+
public JavaPlugin getPlugin() {
97+
return this.plugin;
98+
}
99+
}

0 commit comments

Comments
 (0)