Alot of shit

This commit is contained in:
Luca
2021-11-21 20:21:58 +01:00
parent 1cca6eb41c
commit 27b010fced
55 changed files with 2623 additions and 198 deletions

View 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());
}
}
}