Alot of shit
This commit is contained in:
108
src/main/java/rip/tilly/bedwars/utils/assemble/Assemble.java
Normal file
108
src/main/java/rip/tilly/bedwars/utils/assemble/Assemble.java
Normal file
@ -0,0 +1,108 @@
|
||||
package rip.tilly.bedwars.utils.assemble;
|
||||
|
||||
import rip.tilly.bedwars.utils.assemble.events.AssembleBoardCreateEvent;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@Getter @Setter
|
||||
public class Assemble {
|
||||
|
||||
private JavaPlugin plugin;
|
||||
|
||||
private AssembleAdapter adapter;
|
||||
private AssembleThread thread;
|
||||
private AssembleListener listeners;
|
||||
private AssembleStyle assembleStyle = AssembleStyle.MODERN;
|
||||
|
||||
private Map<UUID, AssembleBoard> boards;
|
||||
|
||||
private long ticks = 2;
|
||||
private boolean hook = false, debugMode = true;
|
||||
|
||||
/**
|
||||
* Assemble.
|
||||
*
|
||||
* @param plugin instance.
|
||||
* @param adapter
|
||||
*/
|
||||
public Assemble(JavaPlugin plugin, AssembleAdapter adapter) {
|
||||
if (plugin == null) {
|
||||
throw new RuntimeException("Assemble can not be instantiated without a plugin instance!");
|
||||
}
|
||||
|
||||
this.plugin = plugin;
|
||||
this.adapter = adapter;
|
||||
this.boards = new ConcurrentHashMap<>();
|
||||
|
||||
this.setup();
|
||||
}
|
||||
|
||||
/**
|
||||
* Setup Assemble.
|
||||
*/
|
||||
public void setup() {
|
||||
// Register Events.
|
||||
this.listeners = new AssembleListener(this);
|
||||
this.plugin.getServer().getPluginManager().registerEvents(listeners, this.plugin);
|
||||
|
||||
// Ensure that the thread has stopped running.
|
||||
if (this.thread != null) {
|
||||
this.thread.stop();
|
||||
this.thread = null;
|
||||
}
|
||||
|
||||
// Register new boards for existing online players.
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
// Make sure it doesn't double up.
|
||||
AssembleBoardCreateEvent createEvent = new AssembleBoardCreateEvent(player);
|
||||
|
||||
Bukkit.getPluginManager().callEvent(createEvent);
|
||||
if (createEvent.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
getBoards().putIfAbsent(player.getUniqueId(), new AssembleBoard(player, this));
|
||||
}
|
||||
|
||||
// Start Thread.
|
||||
this.thread = new AssembleThread(this);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
public void cleanup() {
|
||||
// Stop thread.
|
||||
if (this.thread != null) {
|
||||
this.thread.stop();
|
||||
this.thread = null;
|
||||
}
|
||||
|
||||
// Unregister listeners.
|
||||
if (listeners != null) {
|
||||
HandlerList.unregisterAll(listeners);
|
||||
listeners = null;
|
||||
}
|
||||
|
||||
// Destroy player scoreboards.
|
||||
for (UUID uuid : getBoards().keySet()) {
|
||||
Player player = Bukkit.getPlayer(uuid);
|
||||
|
||||
if (player == null || !player.isOnline()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
getBoards().remove(uuid);
|
||||
player.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user