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.Cancellable;
import org.bukkit.event.Event; 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.entity.Player;
import org.bukkit.event.HandlerList; 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.Location;
import org.bukkit.entity.Player; 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.Location;
import org.bukkit.entity.Player; 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.Location;
import org.bukkit.entity.Player; 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.Location;
import org.bukkit.entity.Player; 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 { 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.bukkit.Location;
import org.jetbrains.annotations.ApiStatus;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -19,7 +20,7 @@ public interface User {
boolean hasHome(String name); boolean hasHome(String name);
Location getHome(String name); Home getHome(String name);
void setHome(String name, Location location); void setHome(String name, Location location);
@ -29,13 +30,11 @@ public interface User {
List<String> getMatchingHomeNames(String homeName); List<String> getMatchingHomeNames(String homeName);
Map<String, Location> getHomeData(); Map<String, Home> getHomeData();
Set<String> getHomes(); Set<String> getHomes();
boolean allowTeleports(); UserSettings getUserSettings();
void allowTeleports(boolean allowTeleports);
Request request(); Request request();

View File

@ -1,4 +1,4 @@
package com.alttd.essentia.user; package com.alttd.essentia.api.user;
import org.bukkit.entity.Player; 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.StorageProvider;
import com.alttd.essentia.storage.StorageType; import com.alttd.essentia.storage.StorageType;
import com.alttd.essentia.user.EssentiaUserManager; import com.alttd.essentia.user.EssentiaUserManager;
import com.alttd.essentia.user.UserManager; import com.alttd.essentia.api.user.UserManager;
import lombok.Getter; import lombok.Getter;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin; 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.EssentiaPlugin;
import com.alttd.essentia.configuration.Config; 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.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;

View File

@ -15,7 +15,7 @@ import java.util.stream.Collectors;
public abstract class SubCommand implements TabExecutor { public abstract class SubCommand implements TabExecutor {
protected EssentiaPlugin plugin; protected EssentiaPlugin plugin;
private final String name; protected final String name;
private final String[] aliases; private final String[] aliases;
private final Map<String, SubCommand> subCommands = new LinkedHashMap<>(); 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.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config; import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.events.EssentiaEvent; import com.alttd.essentia.api.events.EssentiaEvent;
import com.alttd.essentia.events.PlayerTeleportBackEvent; import com.alttd.essentia.api.events.PlayerTeleportBackEvent;
import com.alttd.essentia.tasks.TeleportSounds; 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.Location;
import org.bukkit.entity.Player; 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.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config; import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.events.EssentiaEvent; import com.alttd.essentia.api.events.EssentiaEvent;
import com.alttd.essentia.events.PlayerTeleportBackEvent; import com.alttd.essentia.api.events.PlayerTeleportBackEvent;
import com.alttd.essentia.tasks.TeleportSounds; 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.Location;
import org.bukkit.entity.Player; 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.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config; import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.events.EssentiaEvent; import com.alttd.essentia.api.events.EssentiaEvent;
import com.alttd.essentia.events.PlayerRemoveHomeEvent; import com.alttd.essentia.api.events.PlayerRemoveHomeEvent;
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.Placeholder;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;

View File

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

View File

@ -3,7 +3,7 @@ package com.alttd.essentia.commands.player;
import com.alttd.essentia.EssentiaPlugin; import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config; 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.Placeholder;
import org.bukkit.entity.Player; 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.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config; import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.events.EssentiaEvent; import com.alttd.essentia.api.events.EssentiaEvent;
import com.alttd.essentia.events.PlayerSetHomeEvent; import com.alttd.essentia.api.events.PlayerSetHomeEvent;
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.Placeholder;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Player; 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.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config; import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.events.EssentiaEvent; import com.alttd.essentia.api.events.EssentiaEvent;
import com.alttd.essentia.events.PlayerTeleportSpawnEvent; import com.alttd.essentia.api.events.PlayerTeleportSpawnEvent;
import com.alttd.essentia.tasks.TeleportSounds; 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.Location;
import org.bukkit.World; import org.bukkit.World;
import org.bukkit.entity.Player; 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.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config; import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.request.EssentiaRequest; import com.alttd.essentia.api.request.Request;
import com.alttd.essentia.request.Request; import com.alttd.essentia.api.user.User;
import com.alttd.essentia.user.User;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class TeleportAcceptCommand extends PlayerSubCommand { 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.EssentiaPlugin;
import com.alttd.essentia.commands.PlayerSubCommand; import com.alttd.essentia.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config; import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.request.EssentiaRequest; import com.alttd.essentia.api.request.Request;
import com.alttd.essentia.request.Request; import com.alttd.essentia.api.user.User;
import com.alttd.essentia.user.User;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
public class TeleportDenyCommand extends PlayerSubCommand { 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.commands.PlayerSubCommand;
import com.alttd.essentia.configuration.Config; import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.request.TeleportEssentiaRequest; 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.Placeholder;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -50,7 +50,7 @@ public class TeleportRequestCommand extends PlayerSubCommand {
return true; return true;
} }
if (!targetUser.allowTeleports()) { if (!targetUser.getUserSettings().allowTeleports()) {
player.sendRichMessage(Config.TELEPORT_TOGGLED_OFF, placeholders); player.sendRichMessage(Config.TELEPORT_TOGGLED_OFF, placeholders);
return true; return true;
} }

View File

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

View File

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

View File

@ -187,6 +187,10 @@ public class Config {
public static String FEED_SELF = "You just fed yourself."; public static String FEED_SELF = "You just fed yourself.";
public static String FEED_OTHER = "You have fed <target>."; public static String FEED_OTHER = "You have fed <target>.";
public static String FEED_BY_OTHER = "<requester> has fed you."; 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() { private static void messages() {
REQUEST_TIMED_OUT = getString("messages.request.time-out", REQUEST_TIMED_OUT); REQUEST_TIMED_OUT = getString("messages.request.time-out", REQUEST_TIMED_OUT);
TELEPORT_ACCEPT_TARGET = getString("messages.request.teleport-accept-target", TELEPORT_ACCEPT_TARGET); 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.EssentiaPlugin;
import com.alttd.essentia.configuration.Config; import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.user.EssentiaUser; import com.alttd.essentia.user.EssentiaUser;
import com.alttd.essentia.user.User; import com.alttd.essentia.api.user.User;
import com.alttd.essentia.user.UserManager; import com.alttd.essentia.api.user.UserManager;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; 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; package com.alttd.essentia.request;
import com.alttd.essentia.EssentiaPlugin; import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.api.request.Request;
import com.alttd.essentia.configuration.Config; import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.tasks.RequestTimeout; import com.alttd.essentia.tasks.RequestTimeout;
import com.alttd.essentia.tasks.TeleportSounds; import com.alttd.essentia.tasks.TeleportSounds;

View File

@ -18,7 +18,7 @@ public class StorageManager {
return switch (type) { return switch (type) {
case MYSQL -> new SQLStorageProvider(plugin); case MYSQL -> new SQLStorageProvider(plugin);
case YAML -> new YamlStorageProvider(plugin, plugin.getDataFolder().getPath() + File.separator + "PlayerData"); 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; package com.alttd.essentia.storage;
import com.alttd.essentia.EssentiaPlugin; import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.api.events.EssentiaUserLoadEvent;
import com.alttd.essentia.configuration.Config; import com.alttd.essentia.configuration.Config;
import com.alttd.essentia.user.EssentiaUser; 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.bukkit.scheduler.BukkitRunnable;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -12,6 +14,8 @@ import java.util.UUID;
public abstract class StorageProvider { public abstract class StorageProvider {
protected final EssentiaPlugin plugin; protected final EssentiaPlugin plugin;
@Getter
private AutoSaveTask autoSaveTask; private AutoSaveTask autoSaveTask;
public StorageProvider(EssentiaPlugin plugin) { public StorageProvider(EssentiaPlugin plugin) {
@ -27,7 +31,7 @@ public abstract class StorageProvider {
plugin.userManager().addUser(user); plugin.userManager().addUser(user);
// TODO -- UserLoadEvent? new EssentiaUserLoadEvent(user).callEvent();
return user; return user;
} }

View File

@ -2,6 +2,8 @@ package com.alttd.essentia.storage.mysql;
import com.alttd.essentia.EssentiaPlugin; import com.alttd.essentia.EssentiaPlugin;
import com.alttd.essentia.configuration.Config; 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.storage.StorageProvider;
import com.alttd.essentia.user.EssentiaUser; import com.alttd.essentia.user.EssentiaUser;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
@ -34,14 +36,27 @@ public class SQLStorageProvider extends StorageProvider {
private void createTables() { private void createTables() {
// TODO -- create table // TODO -- create table
String userTable = "CREATE TABLE IF NOT EXISTS users(" + String userTable = "CREATE TABLE IF NOT EXISTS users(" +
"uuid VARCHAR(36) NOT NULL, " + "UUID VARCHAR(36) NOT NULL, " +
"DeathLocation mediumtext DEFAULT NULL, " + "DeathLocation mediumtext DEFAULT NULL, " +
"BackLocation mediumtext DEFAULT NULL, " + "BackLocation mediumtext DEFAULT NULL, " +
"TeleportToggled tinyint(1) 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)" + "PRIMARY KEY (uuid)" +
")"; ")";
addDatabaseQuery(new DatabaseQuery(userTable), false); addDatabaseQuery(new DatabaseQuery(userTable), false);
addDatabaseQuery(new DatabaseQuery(homeTable), false);
addDatabaseQuery(new DatabaseQuery(settingsTable), false);
} }
public DatabaseConnection getDatabaseConnection() { 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 // TODO -- make this async
@Override @Override
protected EssentiaUser load(UUID uuid) { protected EssentiaUser load(UUID uuid) {
@ -221,12 +220,12 @@ public class SQLStorageProvider extends StorageProvider {
return stringBuilder.toString(); return stringBuilder.toString();
} }
private Map<String, Location> locationMapStringToLocationMap(String locationMapString) { private Map<String, Home> locationMapStringToLocationMap(String locationMapString) {
Map<String, Location> locationMap = new HashMap<>(); Map<String, Home> locationMap = new HashMap<>();
String[] entries = locationMapString.split(";"); String[] entries = locationMapString.split(";");
for (String entry : entries) { for (String entry : entries) {
String[] data = entry.split("%"); String[] data = entry.split("%");
locationMap.put(data[0], locationStringToLocation(data[1])); locationMap.put(data[0], new EssentiaHome(data[0], locationStringToLocation(data[1])));
} }
return locationMap; return locationMap;
} }

View File

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

View File

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

View File

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