mirror of
https://github.com/TotalFreedomMC/TF-Marriage.git
synced 2024-06-02 01:51:23 +00:00
117 lines
3.2 KiB
Java
117 lines
3.2 KiB
Java
package com.lenis0012.bukkit.marriage2.internal;
|
|
|
|
import java.util.Collections;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
import java.util.UUID;
|
|
|
|
import com.lenis0012.bukkit.marriage2.MData;
|
|
import com.lenis0012.bukkit.marriage2.internal.data.DataConverter;
|
|
import org.bukkit.event.Listener;
|
|
|
|
import com.lenis0012.bukkit.marriage2.MPlayer;
|
|
import com.lenis0012.bukkit.marriage2.commands.Command;
|
|
import com.lenis0012.bukkit.marriage2.config.Message;
|
|
import com.lenis0012.bukkit.marriage2.config.Settings;
|
|
import com.lenis0012.bukkit.marriage2.internal.data.DataManager;
|
|
import com.lenis0012.bukkit.marriage2.internal.data.MarriageData;
|
|
import com.lenis0012.bukkit.marriage2.internal.data.MarriagePlayer;
|
|
import com.lenis0012.bukkit.marriage2.misc.ListQuery;
|
|
|
|
public class MarriageCore extends MarriageBase {
|
|
private final Map<UUID, MarriagePlayer> players = Collections.synchronizedMap(new HashMap<UUID, MarriagePlayer>());
|
|
private DataManager dataManager;
|
|
|
|
public MarriageCore(MarriagePlugin plugin) {
|
|
super(plugin);
|
|
}
|
|
|
|
@Register(name = "config", type = Register.Type.ENABLE, priority = 0)
|
|
public void loadConfig() {
|
|
// plugin.saveDefaultConfig();
|
|
enable();
|
|
Settings.reloadAll(this);
|
|
Message.reloadAll(this);
|
|
}
|
|
|
|
@Register(name = "database", type = Register.Type.ENABLE)
|
|
public void loadDatabase() {
|
|
this.dataManager = new DataManager(this, plugin.getConfig());
|
|
}
|
|
|
|
@Register(name = "listeners", type = Register.Type.ENABLE)
|
|
public void registerListeners() {
|
|
for(Listener listener : findObjects("com.lenis0012.bukkit.marriage2.listeners", Listener.class, this)) {
|
|
register(listener);
|
|
}
|
|
}
|
|
|
|
@Register(name = "commands", type = Register.Type.ENABLE)
|
|
public void registerCommands() {
|
|
for(Class<? extends Command> command : findClasses("com.lenis0012.bukkit.marriage2.commands", Command.class)) {
|
|
register(command);
|
|
}
|
|
}
|
|
|
|
@Register(name = "database", type = Register.Type.DISABLE)
|
|
public void saveDatabase() {
|
|
unloadAll();
|
|
}
|
|
|
|
@Register(name = "converter", type = Register.Type.ENABLE, priority = 10)
|
|
public void loadConverter() {
|
|
DataConverter converter = new DataConverter(this);
|
|
if(converter.isOutdated()) {
|
|
converter.convert();
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public MPlayer getMPlayer(UUID uuid) {
|
|
MarriagePlayer player = players.get(uuid);
|
|
if(player == null) {
|
|
player = dataManager.loadPlayer(uuid);
|
|
players.put(uuid, player);
|
|
}
|
|
|
|
return player;
|
|
}
|
|
|
|
@Override
|
|
public MData marry(MPlayer player1, MPlayer player2) {
|
|
MarriageData mdata = new MarriageData(player1.getUniqueId(), player2.getUniqueId());
|
|
((MarriagePlayer) player1).addMarriage(mdata);
|
|
((MarriagePlayer) player2).addMarriage(mdata);
|
|
return mdata;
|
|
}
|
|
|
|
@Override
|
|
public ListQuery getMarriageList(int scale, int page) {
|
|
return dataManager.listMarriages(page, page);
|
|
}
|
|
|
|
/**
|
|
* Unload player from the memory
|
|
*
|
|
* @param uuid of player
|
|
*/
|
|
public void unloadPlayer(UUID uuid) {
|
|
final MarriagePlayer mPlayer = players.remove(uuid);
|
|
if(mPlayer != null) {
|
|
new Thread() {
|
|
@Override
|
|
public void run() {
|
|
dataManager.savePlayer(mPlayer);
|
|
}
|
|
}.start();
|
|
}
|
|
}
|
|
|
|
public void unloadAll() {
|
|
for(MarriagePlayer mp : players.values()) {
|
|
dataManager.savePlayer(mp);
|
|
}
|
|
players.clear();
|
|
}
|
|
}
|