This commit is contained in:
Len 2024-07-27 23:39:55 +02:00
parent 5cc798c482
commit fe83919200
43 changed files with 346 additions and 107 deletions

View File

@ -1,4 +1,4 @@
package com.alttd.essentia.events;
package com.alttd.essentia.api.events;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;

View File

@ -0,0 +1,32 @@
package com.alttd.essentia.api.events;
import com.alttd.essentia.api.user.User;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
public class EssentiaUserLoadEvent extends EssentiaEvent {
private static final HandlerList handlerList = new HandlerList();
private final User user;
public EssentiaUserLoadEvent(User user) {
this.user = user;
}
public User getUser() {
return user;
}
@NotNull
@Override
public HandlerList getHandlers() {
return handlerList;
}
@NotNull
public static HandlerList getHandlerList() {
return handlerList;
}
}

View File

@ -1,4 +1,4 @@
package com.alttd.essentia.events;
package com.alttd.essentia.api.events;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;

View File

@ -1,4 +1,4 @@
package com.alttd.essentia.events;
package com.alttd.essentia.api.events;
import org.bukkit.Location;
import org.bukkit.entity.Player;

View File

@ -1,4 +1,4 @@
package com.alttd.essentia.events;
package com.alttd.essentia.api.events;
import org.bukkit.Location;
import org.bukkit.entity.Player;

View File

@ -1,4 +1,4 @@
package com.alttd.essentia.events;
package com.alttd.essentia.api.events;
import org.bukkit.Location;
import org.bukkit.entity.Player;

View File

@ -1,4 +1,4 @@
package com.alttd.essentia.events;
package com.alttd.essentia.api.events;
import org.bukkit.Location;
import org.bukkit.entity.Player;

View File

@ -0,0 +1,10 @@
package com.alttd.essentia.api.model;
import org.bukkit.Location;
public interface Home {
String name();
Location location();
}

View File

@ -0,0 +1,16 @@
package com.alttd.essentia.api.model;
public interface UserSettings {
boolean godMode();
void godMode(boolean godMode);
boolean allowTeleports();
void allowTeleports(boolean allowTeleports);
boolean flying();
void flying(boolean flying);
}

View File

@ -1,4 +1,4 @@
package com.alttd.essentia.request;
package com.alttd.essentia.api.request;
public interface Request {

View File

@ -1,8 +1,9 @@
package com.alttd.essentia.user;
package com.alttd.essentia.api.user;
import com.alttd.essentia.request.Request;
import com.alttd.essentia.api.model.Home;
import com.alttd.essentia.api.model.UserSettings;
import com.alttd.essentia.api.request.Request;
import org.bukkit.Location;
import org.jetbrains.annotations.ApiStatus;
import java.util.List;
import java.util.Map;
@ -19,7 +20,7 @@ public interface User {
boolean hasHome(String name);
Location getHome(String name);
Home getHome(String name);
void setHome(String name, Location location);
@ -29,13 +30,11 @@ public interface User {
List<String> getMatchingHomeNames(String homeName);
Map<String, Location> getHomeData();
Map<String, Home> getHomeData();
Set<String> getHomes();
boolean allowTeleports();
void allowTeleports(boolean allowTeleports);
UserSettings getUserSettings();
Request request();

View File

@ -1,4 +1,4 @@
package com.alttd.essentia.user;
package com.alttd.essentia.api.user;
import org.bukkit.entity.Player;

View File

@ -8,7 +8,7 @@ import com.alttd.essentia.storage.StorageManager;
import com.alttd.essentia.storage.StorageProvider;
import com.alttd.essentia.storage.StorageType;
import com.alttd.essentia.user.EssentiaUserManager;
import com.alttd.essentia.user.UserManager;
import com.alttd.essentia.api.user.UserManager;
import lombok.Getter;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

View File

@ -2,7 +2,7 @@ package com.alttd.essentia.commands;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.user.User;
import com.alttd.essentia.api.user.User;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

View File

@ -15,7 +15,7 @@ import java.util.stream.Collectors;
public abstract class SubCommand implements TabExecutor {
protected EssentiaPlugin plugin;
private final String name;
protected final String name;
private final String[] aliases;
private final Map<String, SubCommand> subCommands = new LinkedHashMap<>();

View File

@ -0,0 +1,39 @@
package com.alttd.essentia.commands.admin;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.commands.AdminSubCommand;
import com.alttd.essentia.configuration.Config;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class BurnCommand extends AdminSubCommand {
public BurnCommand(EssentiaPlugin plugin) {
super(plugin, "burn");
}
@Override
protected boolean execute(CommandSender sender, String... args) {
Player target = args.length > 0 ? org.bukkit.Bukkit.getPlayer(args[0]) : sender instanceof Player player ? player : null;
if (target == null) {
sender.sendRichMessage(Config.PLAYER_NOT_FOUND);
return true;
}
if (!sender.hasPermission("essentia.command." + name + (target != sender ? ".other" : "")) ) {
sender.sendRichMessage(Config.COMMAND_NO_PERMISSION);
return true;
}
TagResolver placeholders = TagResolver.resolver(
Placeholder.component("requester", sender.name()),
Placeholder.component("target", target.displayName())
);
target.setFireTicks((int) (3000L / 50));
sender.sendRichMessage(target == sender ? Config.BURN_SELF : Config.BURN_OTHER, placeholders);
if (target != sender)
target.sendRichMessage(Config.BURN_BY_OTHER, placeholders);
return true;
}
}

View File

@ -0,0 +1,40 @@
package com.alttd.essentia.commands.admin;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.commands.AdminSubCommand;
import com.alttd.essentia.configuration.Config;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class InfoCommand extends AdminSubCommand {
public InfoCommand(EssentiaPlugin plugin) {
super(plugin, "info");
}
@Override
protected boolean execute(CommandSender sender, String... args) {
Player target = args.length > 0 ? org.bukkit.Bukkit.getPlayer(args[0]) : sender instanceof Player player ? player : null;
if (target == null) {
sender.sendRichMessage(Config.PLAYER_NOT_FOUND);
return true;
}
if (!sender.hasPermission("essentia.command." + name + (target != sender ? ".other" : "")) ) {
sender.sendRichMessage(Config.COMMAND_NO_PERMISSION);
return true;
}
TagResolver placeholders = TagResolver.resolver(
Placeholder.component("requester", sender.name()),
Placeholder.component("target", target.displayName())
);
// Todo Show player info
// target.setHealth(20);
// sender.sendRichMessage(target == sender ? Config.HEAL_SELF : Config.HEAL_OTHER, placeholders);
// if (target != sender)
// target.sendRichMessage(Config.HEAL_BY_OTHER, placeholders);
return true;
}
}

View File

@ -0,0 +1,40 @@
package com.alttd.essentia.commands.admin;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.commands.AdminSubCommand;
import com.alttd.essentia.configuration.Config;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class smiteCommand extends AdminSubCommand {
public smiteCommand(EssentiaPlugin plugin) {
super(plugin, "smite");
}
@Override
protected boolean execute(CommandSender sender, String... args) {
Player target = args.length > 0 ? org.bukkit.Bukkit.getPlayer(args[0]) : sender instanceof Player player ? player : null;
if (target == null) {
sender.sendRichMessage(Config.PLAYER_NOT_FOUND);
return true;
}
if (!sender.hasPermission("essentia.command." + name + (target != sender ? ".other" : "")) ) {
sender.sendRichMessage(Config.COMMAND_NO_PERMISSION);
return true;
}
TagResolver placeholders = TagResolver.resolver(
Placeholder.component("requester", sender.name()),
Placeholder.component("target", target.displayName())
);
// Todo smite the user xD
// target.setHealth(20);
// sender.sendRichMessage(target == sender ? Config.HEAL_SELF : Config.HEAL_OTHER, placeholders);
// if (target != sender)
// target.sendRichMessage(Config.HEAL_BY_OTHER, placeholders);
return true;
}
}

View File

@ -3,10 +3,10 @@ package com.alttd.essentia.commands.player;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.events.EssentiaEvent;
import com.alttd.essentia.events.PlayerTeleportBackEvent;
import com.alttd.essentia.api.events.EssentiaEvent;
import com.alttd.essentia.api.events.PlayerTeleportBackEvent;
import com.alttd.essentia.tasks.TeleportSounds;
import com.alttd.essentia.user.User;
import com.alttd.essentia.api.user.User;
import org.bukkit.Location;
import org.bukkit.entity.Player;

View File

@ -3,10 +3,10 @@ package com.alttd.essentia.commands.player;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.events.EssentiaEvent;
import com.alttd.essentia.events.PlayerTeleportBackEvent;
import com.alttd.essentia.api.events.EssentiaEvent;
import com.alttd.essentia.api.events.PlayerTeleportBackEvent;
import com.alttd.essentia.tasks.TeleportSounds;
import com.alttd.essentia.user.User;
import com.alttd.essentia.api.user.User;
import org.bukkit.Location;
import org.bukkit.entity.Player;

View File

@ -3,9 +3,9 @@ package com.alttd.essentia.commands.player;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.events.EssentiaEvent;
import com.alttd.essentia.events.PlayerRemoveHomeEvent;
import com.alttd.essentia.user.User;
import com.alttd.essentia.api.events.EssentiaEvent;
import com.alttd.essentia.api.events.PlayerRemoveHomeEvent;
import com.alttd.essentia.api.user.User;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import org.bukkit.entity.Player;

View File

@ -1,12 +1,13 @@
package com.alttd.essentia.commands.player;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.api.model.Home;
import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.events.EssentiaEvent;
import com.alttd.essentia.events.PlayerTeleportHomeEvent;
import com.alttd.essentia.api.events.EssentiaEvent;
import com.alttd.essentia.api.events.PlayerTeleportHomeEvent;
import com.alttd.essentia.tasks.TeleportSounds;
import com.alttd.essentia.user.User;
import com.alttd.essentia.api.user.User;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import org.bukkit.Location;
import org.bukkit.command.Command;
@ -24,7 +25,7 @@ public class HomeCommand extends PlayerSubCommand {
@Override
protected boolean execute(Player player, User user, String... args) {
String home = null;
String home;
if (args.length == 0) {
int count = user.getHomeCount();
if (count <= 1) {
@ -47,8 +48,12 @@ public class HomeCommand extends PlayerSubCommand {
// return true
// }
// }
Location homeLoc = user.getHome(home);
Home essentiaHome = user.getHome(home);
if (essentiaHome == null) {
player.sendRichMessage(Config.HOME_DOES_NOT_EXIST, Placeholder.parsed("home", home));
return true;
}
Location homeLoc = essentiaHome.location();
if (homeLoc == null) {
player.sendRichMessage(Config.HOME_DOES_NOT_EXIST, Placeholder.parsed("home", home));
return true;

View File

@ -3,7 +3,7 @@ package com.alttd.essentia.commands.player;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.user.User;
import com.alttd.essentia.api.user.User;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import org.bukkit.entity.Player;

View File

@ -3,9 +3,9 @@ package com.alttd.essentia.commands.player;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.events.EssentiaEvent;
import com.alttd.essentia.events.PlayerSetHomeEvent;
import com.alttd.essentia.user.User;
import com.alttd.essentia.api.events.EssentiaEvent;
import com.alttd.essentia.api.events.PlayerSetHomeEvent;
import com.alttd.essentia.api.user.User;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import org.bukkit.Location;
import org.bukkit.entity.Player;

View File

@ -3,10 +3,10 @@ package com.alttd.essentia.commands.player;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.events.EssentiaEvent;
import com.alttd.essentia.events.PlayerTeleportSpawnEvent;
import com.alttd.essentia.api.events.EssentiaEvent;
import com.alttd.essentia.api.events.PlayerTeleportSpawnEvent;
import com.alttd.essentia.tasks.TeleportSounds;
import com.alttd.essentia.user.User;
import com.alttd.essentia.api.user.User;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Player;

View File

@ -3,9 +3,8 @@ package com.alttd.essentia.commands.player;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.request.EssentiaRequest;
import com.alttd.essentia.request.Request;
import com.alttd.essentia.user.User;
import com.alttd.essentia.api.request.Request;
import com.alttd.essentia.api.user.User;
import org.bukkit.entity.Player;
public class TeleportAcceptCommand extends PlayerSubCommand {

View File

@ -3,9 +3,8 @@ package com.alttd.essentia.commands.player;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.request.EssentiaRequest;
import com.alttd.essentia.request.Request;
import com.alttd.essentia.user.User;
import com.alttd.essentia.api.request.Request;
import com.alttd.essentia.api.user.User;
import org.bukkit.entity.Player;
public class TeleportDenyCommand extends PlayerSubCommand {

View File

@ -4,7 +4,7 @@ import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.request.TeleportEssentiaRequest;
import com.alttd.essentia.user.User;
import com.alttd.essentia.api.user.User;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.bukkit.Bukkit;
@ -50,7 +50,7 @@ public class TeleportRequestCommand extends PlayerSubCommand {
return true;
}
if (!targetUser.allowTeleports()) {
if (!targetUser.getUserSettings().allowTeleports()) {
player.sendRichMessage(Config.TELEPORT_TOGGLED_OFF, placeholders);
return true;
}

View File

@ -4,7 +4,7 @@ import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.request.TeleportHereEssentiaRequest;
import com.alttd.essentia.user.User;
import com.alttd.essentia.api.user.User;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.bukkit.Bukkit;
@ -50,7 +50,7 @@ public class TeleportRequestHereCommand extends PlayerSubCommand {
return true;
}
if (!targetUser.allowTeleports()) {
if (!targetUser.getUserSettings().allowTeleports()) {
player.sendRichMessage(Config.TELEPORT_TOGGLED_OFF, placeholders);
return true;
}

View File

@ -3,7 +3,7 @@ package com.alttd.essentia.commands.player;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.user.User;
import com.alttd.essentia.api.user.User;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.apache.commons.lang3.BooleanUtils;
@ -17,9 +17,9 @@ public class TeleportToggleCommand extends PlayerSubCommand {
@Override
protected boolean execute(Player player, User user, String... args) {
user.allowTeleports(!user.allowTeleports());
user.getUserSettings().allowTeleports(!user.getUserSettings().allowTeleports());
TagResolver placeholders = TagResolver.resolver(
Placeholder.parsed("toggle", BooleanUtils.toStringOnOff(user.allowTeleports()))
Placeholder.parsed("toggle", BooleanUtils.toStringOnOff(user.getUserSettings().allowTeleports()))
);
player.sendRichMessage(Config.TELEPORT_TOGGLE_SET, placeholders);
return true;

View File

@ -187,6 +187,10 @@ public class Config {
public static String FEED_SELF = "You just fed yourself.";
public static String FEED_OTHER = "You have fed <target>.";
public static String FEED_BY_OTHER = "<requester> has fed you.";
public static String BURN_SELF = "You have set yourself on fire.";
public static String BURN_OTHER = "<target>'s has been set in fire.";
public static String BURN_BY_OTHER = "<requester> has set you on fire.";
private static void messages() {
REQUEST_TIMED_OUT = getString("messages.request.time-out", REQUEST_TIMED_OUT);
TELEPORT_ACCEPT_TARGET = getString("messages.request.teleport-accept-target", TELEPORT_ACCEPT_TARGET);

View File

@ -3,8 +3,8 @@ package com.alttd.essentia.listeners;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.user.EssentiaUser;
import com.alttd.essentia.user.User;
import com.alttd.essentia.user.UserManager;
import com.alttd.essentia.api.user.User;
import com.alttd.essentia.api.user.UserManager;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;

View File

@ -0,0 +1,5 @@
package com.alttd.essentia.model;
import org.bukkit.Location;
public record EssentiaHome(String name, Location location) implements com.alttd.essentia.api.model.Home {}

View File

@ -0,0 +1,36 @@
package com.alttd.essentia.model;
import com.alttd.essentia.api.model.UserSettings;
import lombok.Getter;
@Getter
public class EssentiaUserSettings implements UserSettings {
boolean godMode;
boolean flying;
double flySpeed;
double walkSpeed;
boolean pTime;
boolean pWeather;
boolean allowTeleports;
private boolean needsSaving;
@Override
public void godMode(boolean godMode) {
this.godMode = godMode;
this.needsSaving = true;
}
@Override
public void allowTeleports(boolean allowTeleports) {
this.allowTeleports = allowTeleports;
this.needsSaving = true;
}
@Override
public void flying(boolean flying) {
this.flying = flying;
this.needsSaving = true;
}
}

View File

@ -0,0 +1,3 @@
package com.alttd.essentia.model;
public record Kit() {}

View File

@ -0,0 +1,4 @@
package com.alttd.essentia.model;
public record PlayerInventory() {
}

View File

@ -1,6 +1,7 @@
package com.alttd.essentia.request;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.api.request.Request;
import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.tasks.RequestTimeout;
import com.alttd.essentia.tasks.TeleportSounds;

View File

@ -18,7 +18,7 @@ public class StorageManager {
return switch (type) {
case MYSQL -> new SQLStorageProvider(plugin);
case YAML -> new YamlStorageProvider(plugin, plugin.getDataFolder().getPath() + File.separator + "PlayerData");
case SQLITE -> throw new UnsupportedOperationException(); // TODO
case SQLITE -> throw new UnsupportedOperationException(); // FIXME
};
}

View File

@ -1,9 +1,11 @@
package com.alttd.essentia.storage;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.api.events.EssentiaUserLoadEvent;
import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.user.EssentiaUser;
import com.alttd.essentia.user.User;
import com.alttd.essentia.api.user.User;
import lombok.Getter;
import org.bukkit.scheduler.BukkitRunnable;
import org.jetbrains.annotations.NotNull;
@ -12,6 +14,8 @@ import java.util.UUID;
public abstract class StorageProvider {
protected final EssentiaPlugin plugin;
@Getter
private AutoSaveTask autoSaveTask;
public StorageProvider(EssentiaPlugin plugin) {
@ -27,7 +31,7 @@ public abstract class StorageProvider {
plugin.userManager().addUser(user);
// TODO -- UserLoadEvent?
new EssentiaUserLoadEvent(user).callEvent();
return user;
}

View File

@ -2,6 +2,8 @@ package com.alttd.essentia.storage.mysql;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.api.model.Home;
import com.alttd.essentia.model.EssentiaHome;
import com.alttd.essentia.storage.StorageProvider;
import com.alttd.essentia.user.EssentiaUser;
import org.bukkit.Bukkit;
@ -34,14 +36,27 @@ public class SQLStorageProvider extends StorageProvider {
private void createTables() {
// TODO -- create table
String userTable = "CREATE TABLE IF NOT EXISTS users(" +
"uuid VARCHAR(36) NOT NULL, " +
"UUID VARCHAR(36) NOT NULL, " +
"DeathLocation mediumtext DEFAULT NULL, " +
"BackLocation mediumtext DEFAULT NULL, " +
"TeleportToggled tinyint(1) DEFAULT NULL, " +
"HomesLocation mediumtext DEFAULT NULL, "+
"PRIMARY KEY (uuid)" +
")";
String homeTable = "CREATE TABLE IF NOT EXISTS homes(" +
"UUID VARCHAR(36) NOT NULL, " +
"Name mediumtext DEFAULT NULL, " +
"HomeLocation mediumtext DEFAULT NULL, "+
")";
String settingsTable = "CREATE TABLE IF NOT EXISTS homes(" +
"UUID VARCHAR(36) NOT NULL, " +
"TeleportToggled tinyint(1) DEFAULT NULL, " +
"GodMode tinyint(1) DEFAULT NULL, " +
"Flying tinyint(1) DEFAULT NULL, " +
"PRIMARY KEY (uuid)" +
")";
addDatabaseQuery(new DatabaseQuery(userTable), false);
addDatabaseQuery(new DatabaseQuery(homeTable), false);
addDatabaseQuery(new DatabaseQuery(settingsTable), false);
}
public DatabaseConnection getDatabaseConnection() {
@ -108,22 +123,6 @@ public class SQLStorageProvider extends StorageProvider {
}
}
boolean hasTable(String table) {
DatabaseConnection connection = getDatabaseConnection();
boolean match = false;
try (ResultSet rs = connection.get().getMetaData().getTables(null, null, table, null)) {
while (rs.next()) {
if (table.equalsIgnoreCase(rs.getString("TABLE_NAME"))) {
match = true;
break;
}
}
} catch (SQLException e) {
return match;
}
return match;
}
// TODO -- make this async
@Override
protected EssentiaUser load(UUID uuid) {
@ -221,12 +220,12 @@ public class SQLStorageProvider extends StorageProvider {
return stringBuilder.toString();
}
private Map<String, Location> locationMapStringToLocationMap(String locationMapString) {
Map<String, Location> locationMap = new HashMap<>();
private Map<String, Home> locationMapStringToLocationMap(String locationMapString) {
Map<String, Home> locationMap = new HashMap<>();
String[] entries = locationMapString.split(";");
for (String entry : entries) {
String[] data = entry.split("%");
locationMap.put(data[0], locationStringToLocation(data[1]));
locationMap.put(data[0], new EssentiaHome(data[0], locationStringToLocation(data[1])));
}
return locationMap;
}

View File

@ -1,6 +1,8 @@
package com.alttd.essentia.storage.yaml;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.api.model.Home;
import com.alttd.essentia.model.EssentiaHome;
import com.alttd.essentia.storage.StorageProvider;
import com.alttd.essentia.user.EssentiaUser;
import org.bukkit.Bukkit;
@ -47,10 +49,10 @@ public class YamlStorageProvider extends StorageProvider {
setStoredLocation(config, "teleports.back", user.getBackLocation(false));
setStoredLocation(config, "teleports.death", user.getBackLocation(true));
for (Map.Entry<String, Location> entry : user.getHomeData().entrySet()) {
setStoredLocation(config, "home." + entry.getKey(), entry.getValue());
for (Map.Entry<String, Home> entry : user.getHomeData().entrySet()) {
setStoredLocation(config, "home." + entry.getKey(), entry.getValue().location());
}
config.set("allow-teleports", user.allowTeleports());
config.set("allow-teleports", user.getUserSettings().allowTeleports());
config.save(configFile);
}
@ -90,14 +92,14 @@ public class YamlStorageProvider extends StorageProvider {
return new Location(world, x, y, z, yaw, pitch);
}
public Map<String, Location> getHomeData(YamlConfiguration config) {
public Map<String, Home> getHomeData(YamlConfiguration config) {
ConfigurationSection section = config.getConfigurationSection("home");
if (section == null) {
return null;
}
Map<String, Location> map = new HashMap<>();
Map<String, Home> map = new HashMap<>();
for (String key : section.getValues(false).keySet()) {
map.put(key, getStoredLocation(config, "home." + key));
map.put(key, new EssentiaHome(key, getStoredLocation(config, "home." + key)));
}
return map;

View File

@ -1,6 +1,11 @@
package com.alttd.essentia.user;
import com.alttd.essentia.request.Request;
import com.alttd.essentia.api.model.Home;
import com.alttd.essentia.api.model.UserSettings;
import com.alttd.essentia.api.request.Request;
import com.alttd.essentia.api.user.User;
import com.alttd.essentia.model.EssentiaHome;
import com.alttd.essentia.model.EssentiaUserSettings;
import org.bukkit.Location;
import java.util.*;
@ -12,8 +17,8 @@ public class EssentiaUser implements User {
protected Location backLocation;
protected Location deathLocation;
protected Map<String, Location> homes;
protected boolean allowTeleports;
protected Map<String, Home> homes;
protected UserSettings userSettings;
protected Request request;
private boolean saving;
@ -24,7 +29,7 @@ public class EssentiaUser implements User {
this.backLocation = builder.backLocation;
this.deathLocation = builder.deathLocation;
this.homes = builder.homes;
this.allowTeleports = builder.allowTeleports;
this.userSettings = builder.userSettings;
}
@Override
@ -53,13 +58,13 @@ public class EssentiaUser implements User {
}
@Override
public Location getHome(String name) {
public Home getHome(String name) {
return homes.get(name);
}
@Override
public void setHome(String name, Location location) {
homes.put(name, location);
homes.put(name, new EssentiaHome(name, location));
needsSaving = true;
}
@ -82,7 +87,7 @@ public class EssentiaUser implements User {
}
@Override
public Map<String, Location> getHomeData() {
public Map<String, Home> getHomeData() {
return homes;
}
@ -92,14 +97,8 @@ public class EssentiaUser implements User {
}
@Override
public boolean allowTeleports() {
return allowTeleports;
}
@Override
public void allowTeleports(boolean allowTeleports) {
this.allowTeleports = allowTeleports;
needsSaving = true;
public UserSettings getUserSettings() {
return userSettings;
}
public boolean saving() {
@ -133,8 +132,8 @@ public class EssentiaUser implements User {
protected UUID uuid;
protected Location backLocation = null;
protected Location deathLocation = null;
protected Map<String, Location> homes = new HashMap<>();
protected boolean allowTeleports;
protected Map<String, Home> homes = new HashMap<>();
protected EssentiaUserSettings userSettings = new EssentiaUserSettings();
public Builder uuid(UUID uuid) {
this.uuid = uuid;
@ -151,13 +150,13 @@ public class EssentiaUser implements User {
return this;
}
public Builder homes(Map<String, Location> homes) {
public Builder homes(Map<String, Home> homes) {
this.homes = homes;
return this;
}
public Builder allowTeleports(boolean allowTeleports) {
this.allowTeleports = allowTeleports;
this.userSettings.allowTeleports(allowTeleports);
return this;
}

View File

@ -1,6 +1,9 @@
package com.alttd.essentia.user;
import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.api.user.User;
import com.alttd.essentia.api.user.UserManager;
import com.alttd.essentia.model.EssentiaUserSettings;
import org.bukkit.entity.Player;
import java.util.Map;
@ -60,9 +63,9 @@ public class EssentiaUserManager implements UserManager {
@Override
public void saveAllUsers() {
for (User user : getUsers().values()) {
if (user instanceof EssentiaUser essentiaUser) {
if (user instanceof EssentiaUser essentiaUser && essentiaUser.getUserSettings() instanceof EssentiaUserSettings essentiaUserSettings) {
try {
if (essentiaUser.saving() || !essentiaUser.needsSaving()) {
if (essentiaUser.saving() || !essentiaUser.needsSaving() || !essentiaUserSettings.needsSaving()) {
continue;
}
plugin.storageProvider().startSaving(essentiaUser);