1.7.0 beta 6
This commit is contained in:
parent
5615fa7f32
commit
1815b63bc9
14 changed files with 416 additions and 7 deletions
|
@ -23,6 +23,9 @@ import net.tylermurphy.hideAndSeek.command.*;
|
||||||
import net.tylermurphy.hideAndSeek.command.map.*;
|
import net.tylermurphy.hideAndSeek.command.map.*;
|
||||||
import net.tylermurphy.hideAndSeek.command.map.blockhunt.Enabled;
|
import net.tylermurphy.hideAndSeek.command.map.blockhunt.Enabled;
|
||||||
import net.tylermurphy.hideAndSeek.command.map.set.*;
|
import net.tylermurphy.hideAndSeek.command.map.set.*;
|
||||||
|
import net.tylermurphy.hideAndSeek.command.world.Create;
|
||||||
|
import net.tylermurphy.hideAndSeek.command.world.Delete;
|
||||||
|
import net.tylermurphy.hideAndSeek.command.world.Tp;
|
||||||
import net.tylermurphy.hideAndSeek.configuration.*;
|
import net.tylermurphy.hideAndSeek.configuration.*;
|
||||||
import net.tylermurphy.hideAndSeek.database.Database;
|
import net.tylermurphy.hideAndSeek.database.Database;
|
||||||
import net.tylermurphy.hideAndSeek.game.*;
|
import net.tylermurphy.hideAndSeek.game.*;
|
||||||
|
@ -39,6 +42,7 @@ import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
@ -56,16 +60,28 @@ public class Main extends JavaPlugin implements Listener {
|
||||||
private EntityHider entityHider;
|
private EntityHider entityHider;
|
||||||
private Game game;
|
private Game game;
|
||||||
private CommandGroup commandGroup;
|
private CommandGroup commandGroup;
|
||||||
|
private boolean loaded;
|
||||||
|
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
|
|
||||||
|
long start = System.currentTimeMillis();
|
||||||
|
|
||||||
|
getLogger().info("Loading Kenshin's Hide and Seek");
|
||||||
Main.instance = this;
|
Main.instance = this;
|
||||||
this.updateVersion();
|
|
||||||
|
getLogger().info("Getting minecraft version...");
|
||||||
|
this.updateVersion();;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
getLogger().info("Loading config.yml...");
|
||||||
Config.loadConfig();
|
Config.loadConfig();
|
||||||
|
getLogger().info("Loading maps.yml...");
|
||||||
Maps.loadMaps();
|
Maps.loadMaps();
|
||||||
|
getLogger().info("Loading localization.yml...");
|
||||||
Localization.loadLocalization();
|
Localization.loadLocalization();
|
||||||
|
getLogger().info("Loading items.yml...");
|
||||||
Items.loadItems();
|
Items.loadItems();
|
||||||
|
getLogger().info("Loading leaderboard.yml...");
|
||||||
Leaderboard.loadLeaderboard();
|
Leaderboard.loadLeaderboard();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
getLogger().severe(e.getMessage());
|
getLogger().severe(e.getMessage());
|
||||||
|
@ -73,12 +89,18 @@ public class Main extends JavaPlugin implements Listener {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getLogger().info("Creating internal scoreboard...");
|
||||||
this.board = new Board();
|
this.board = new Board();
|
||||||
|
getLogger().info("Connecting to database...");
|
||||||
this.database = new Database();
|
this.database = new Database();
|
||||||
|
getLogger().info("Loading disguises...");
|
||||||
this.disguiser = new Disguiser();
|
this.disguiser = new Disguiser();
|
||||||
|
getLogger().info("Loading entity hider...");
|
||||||
this.entityHider = new EntityHider(this, EntityHider.Policy.BLACKLIST);
|
this.entityHider = new EntityHider(this, EntityHider.Policy.BLACKLIST);
|
||||||
|
getLogger().info("Registering listeners...");
|
||||||
this.registerListeners();
|
this.registerListeners();
|
||||||
|
|
||||||
|
getLogger().info("Registering commands...");
|
||||||
this.commandGroup = new CommandGroup("hs",
|
this.commandGroup = new CommandGroup("hs",
|
||||||
new Help(),
|
new Help(),
|
||||||
new Reload(),
|
new Reload(),
|
||||||
|
@ -111,21 +133,38 @@ public class Main extends JavaPlugin implements Listener {
|
||||||
new Debug(),
|
new Debug(),
|
||||||
new GoTo()
|
new GoTo()
|
||||||
),
|
),
|
||||||
|
new CommandGroup("world",
|
||||||
|
new Create(),
|
||||||
|
new Delete(),
|
||||||
|
new net.tylermurphy.hideAndSeek.command.world.List(),
|
||||||
|
new Tp()
|
||||||
|
),
|
||||||
new SetExitLocation(),
|
new SetExitLocation(),
|
||||||
new Top(),
|
new Top(),
|
||||||
new Wins()
|
new Wins(),
|
||||||
|
new Confirm()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
getLogger().info("Loading game...");
|
||||||
game = new Game(null, board);
|
game = new Game(null, board);
|
||||||
|
|
||||||
|
getLogger().info("Scheduling tick tasks...");
|
||||||
getServer().getScheduler().runTaskTimer(this, this::onTick,0,1).getTaskId();
|
getServer().getScheduler().runTaskTimer(this, this::onTick,0,1).getTaskId();
|
||||||
|
|
||||||
|
getLogger().info("Registering outgoing bungeecord plugin channel...");
|
||||||
Bukkit.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
|
Bukkit.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
|
||||||
|
|
||||||
|
getLogger().info("Checking for PlaceholderAPI...");
|
||||||
if (getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
|
if (getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
|
||||||
|
getLogger().info("PlaceholderAPI found...");
|
||||||
|
getLogger().info("Registering PlaceholderAPI expansion...");
|
||||||
new PAPIExpansion().register();
|
new PAPIExpansion().register();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long end = System.currentTimeMillis();
|
||||||
|
getLogger().info("Finished loading plugin ("+(end-start)+"ms)");
|
||||||
|
loaded = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onDisable() {
|
public void onDisable() {
|
||||||
|
@ -223,4 +262,23 @@ public class Main extends JavaPlugin implements Listener {
|
||||||
return version >= v;
|
return version >= v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public java.util.List<String> getWorlds() {
|
||||||
|
java.util.List<String> worlds = new ArrayList<>();
|
||||||
|
File[] containers = getWorldContainer().listFiles();
|
||||||
|
if(containers != null) {
|
||||||
|
Arrays.stream(containers).forEach(file -> {
|
||||||
|
if (!file.isDirectory()) return;
|
||||||
|
String[] files = file.list();
|
||||||
|
if (files == null) return;
|
||||||
|
if (!Arrays.asList(files).contains("session.lock") && !Arrays.asList(files).contains("level.dat")) return;
|
||||||
|
worlds.add(file.getName());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return worlds;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isLoaded() {
|
||||||
|
return loaded;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,62 @@
|
||||||
|
package net.tylermurphy.hideAndSeek.command;
|
||||||
|
|
||||||
|
import net.tylermurphy.hideAndSeek.command.util.ICommand;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
import static net.tylermurphy.hideAndSeek.configuration.Config.errorPrefix;
|
||||||
|
import static net.tylermurphy.hideAndSeek.configuration.Localization.message;
|
||||||
|
|
||||||
|
public class Confirm implements ICommand {
|
||||||
|
|
||||||
|
public static final Map<UUID, Confirmation> confirmations = new HashMap<>();
|
||||||
|
|
||||||
|
public void execute(Player sender, String[] args) {
|
||||||
|
Confirmation confirmation = confirmations.get(sender.getUniqueId());
|
||||||
|
confirmations.remove(sender.getUniqueId());
|
||||||
|
if(confirmation == null) {
|
||||||
|
sender.sendMessage(errorPrefix + message("NO_CONFIRMATION"));
|
||||||
|
} else {
|
||||||
|
long now = System.currentTimeMillis();
|
||||||
|
float secs = (now - confirmation.start) / 1000F;
|
||||||
|
if(secs > 10) {
|
||||||
|
sender.sendMessage(errorPrefix + message("CONFIRMATION_TIMED_OUT"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
confirmation.callback.accept(confirmation.data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLabel() {
|
||||||
|
return "confirm";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUsage() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return "Confirm another command if required";
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> autoComplete(@NotNull String parameter, @NotNull String typed) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Confirmation {
|
||||||
|
public final Consumer<String> callback;
|
||||||
|
public final String data;
|
||||||
|
public final long start;
|
||||||
|
|
||||||
|
public Confirmation(String data, Consumer<String> callback) {
|
||||||
|
this.callback = callback;
|
||||||
|
this.data = data;
|
||||||
|
this.start = System.currentTimeMillis();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,66 @@
|
||||||
|
package net.tylermurphy.hideAndSeek.command.world;
|
||||||
|
|
||||||
|
import net.tylermurphy.hideAndSeek.Main;
|
||||||
|
import net.tylermurphy.hideAndSeek.command.util.ICommand;
|
||||||
|
import net.tylermurphy.hideAndSeek.util.Location;
|
||||||
|
import org.bukkit.WorldType;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static net.tylermurphy.hideAndSeek.configuration.Config.errorPrefix;
|
||||||
|
import static net.tylermurphy.hideAndSeek.configuration.Config.messagePrefix;
|
||||||
|
import static net.tylermurphy.hideAndSeek.configuration.Localization.message;
|
||||||
|
|
||||||
|
public class Create implements ICommand {
|
||||||
|
|
||||||
|
public void execute(Player sender, String[] args) {
|
||||||
|
List<String> worlds = Main.getInstance().getWorlds();
|
||||||
|
if(worlds.contains(args[0])) {
|
||||||
|
sender.sendMessage(errorPrefix + message("WORLD_EXISTS").addAmount(args[0]));
|
||||||
|
}
|
||||||
|
WorldType type;
|
||||||
|
if(args[1].equals("normal")) {
|
||||||
|
type = WorldType.NORMAL;
|
||||||
|
} else if(args[1].equals("flat")) {
|
||||||
|
type = WorldType.FLAT;
|
||||||
|
} else {
|
||||||
|
sender.sendMessage(errorPrefix + message("INVALID_WORLD_TYPE").addAmount(args[1]));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Location temp = new Location(args[0], 0, 0, 0);
|
||||||
|
|
||||||
|
if (temp.load(type) == null) {
|
||||||
|
sender.sendMessage(errorPrefix + message("WORLD_ADDED_FAILED"));
|
||||||
|
} else {
|
||||||
|
sender.sendMessage(messagePrefix + message("WORLD_ADDED").addAmount(args[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLabel() {
|
||||||
|
return "create";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUsage() {
|
||||||
|
return "<name> <type>";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return "Create a new world";
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> autoComplete(@NotNull String parameter, @NotNull String typed) {
|
||||||
|
if(parameter.equals("name")) {
|
||||||
|
return Collections.singletonList("name");
|
||||||
|
}
|
||||||
|
if(parameter.equals("type")) {
|
||||||
|
return Arrays.asList("normal", "flat");
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,74 @@
|
||||||
|
package net.tylermurphy.hideAndSeek.command.world;
|
||||||
|
|
||||||
|
import net.tylermurphy.hideAndSeek.Main;
|
||||||
|
import net.tylermurphy.hideAndSeek.command.Confirm;
|
||||||
|
import net.tylermurphy.hideAndSeek.command.util.ICommand;
|
||||||
|
import net.tylermurphy.hideAndSeek.world.WorldLoader;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static net.tylermurphy.hideAndSeek.configuration.Config.errorPrefix;
|
||||||
|
import static net.tylermurphy.hideAndSeek.configuration.Config.messagePrefix;
|
||||||
|
import static net.tylermurphy.hideAndSeek.configuration.Localization.message;
|
||||||
|
|
||||||
|
public class Delete implements ICommand {
|
||||||
|
|
||||||
|
public void execute(Player sender, String[] args) {
|
||||||
|
java.util.List<String> worlds = Main.getInstance().getWorlds();
|
||||||
|
if(!worlds.contains(args[0])) {
|
||||||
|
sender.sendMessage(errorPrefix + message("WORLD_DOESNT_EXIST").addAmount(args[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
Confirm.Confirmation confirmation = new Confirm.Confirmation(args[0], world -> {
|
||||||
|
java.util.List<String> worlds_now = Main.getInstance().getWorlds();
|
||||||
|
if(!worlds_now.contains(world)) {
|
||||||
|
sender.sendMessage(errorPrefix + message("WORLD_DOESNT_EXIST").addAmount(world));
|
||||||
|
}
|
||||||
|
World bukkit_world = Bukkit.getWorld(world);
|
||||||
|
if(bukkit_world != null && bukkit_world.getPlayers().size() > 0) {
|
||||||
|
sender.sendMessage(errorPrefix + message("WORLD_NOT_EMPTY"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String path = Main.getInstance().getWorldContainer().getPath() + File.separator + world;
|
||||||
|
if (!Bukkit.getServer().unloadWorld(world, false)) {
|
||||||
|
sender.sendMessage(errorPrefix + message("WORLD_REMOVED_FAILED"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
WorldLoader.deleteDirectory(new File(path));
|
||||||
|
} catch (Exception e) {
|
||||||
|
sender.sendMessage(errorPrefix + message("WORLD_REMOVED_FAILED"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
sender.sendMessage(messagePrefix + message("WORLD_REMOVED").addAmount(world));
|
||||||
|
});
|
||||||
|
|
||||||
|
Confirm.confirmations.put(sender.getUniqueId(), confirmation);
|
||||||
|
sender.sendMessage(messagePrefix + message("CONFIRMATION"));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLabel() {
|
||||||
|
return "delete";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUsage() {
|
||||||
|
return "<name>";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return "Delete a world";
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> autoComplete(@NotNull String parameter, @NotNull String typed) {
|
||||||
|
if(parameter.equals("name")) {
|
||||||
|
return Main.getInstance().getWorlds();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
package net.tylermurphy.hideAndSeek.command.world;
|
||||||
|
|
||||||
|
import net.tylermurphy.hideAndSeek.Main;
|
||||||
|
import net.tylermurphy.hideAndSeek.command.util.ICommand;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import static net.tylermurphy.hideAndSeek.configuration.Config.errorPrefix;
|
||||||
|
import static net.tylermurphy.hideAndSeek.configuration.Config.messagePrefix;
|
||||||
|
import static net.tylermurphy.hideAndSeek.configuration.Localization.message;
|
||||||
|
|
||||||
|
public class List implements ICommand {
|
||||||
|
|
||||||
|
public void execute(Player sender, String[] args) {
|
||||||
|
java.util.List<String> worlds = Main.getInstance().getWorlds();
|
||||||
|
if(worlds.isEmpty()) {
|
||||||
|
sender.sendMessage(errorPrefix + message("NO_WORLDS"));
|
||||||
|
} else {
|
||||||
|
StringBuilder response = new StringBuilder(messagePrefix + message("LIST_WORLDS"));
|
||||||
|
for (String world : worlds) {
|
||||||
|
boolean loaded = Bukkit.getWorld(world) != null;
|
||||||
|
response.append("\n ").append(world).append(": ").append(loaded ? ChatColor.GREEN + "LOADED" : ChatColor.YELLOW + "NOT LOADED").append(ChatColor.WHITE);
|
||||||
|
}
|
||||||
|
sender.sendMessage(response.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLabel() {
|
||||||
|
return "list";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUsage() {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return "List all worlds in the server";
|
||||||
|
}
|
||||||
|
|
||||||
|
public java.util.List<String> autoComplete(@NotNull String parameter, @NotNull String typed) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,49 @@
|
||||||
|
package net.tylermurphy.hideAndSeek.command.world;
|
||||||
|
|
||||||
|
import net.tylermurphy.hideAndSeek.Main;
|
||||||
|
import net.tylermurphy.hideAndSeek.command.util.ICommand;
|
||||||
|
import net.tylermurphy.hideAndSeek.util.Location;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static net.tylermurphy.hideAndSeek.configuration.Config.errorPrefix;
|
||||||
|
import static net.tylermurphy.hideAndSeek.configuration.Localization.message;
|
||||||
|
|
||||||
|
public class Tp implements ICommand {
|
||||||
|
public void execute(Player sender, String[] args) {
|
||||||
|
Location test = new Location(args[0], 0, 0,0);
|
||||||
|
if(!test.exists()) {
|
||||||
|
sender.sendMessage(errorPrefix + message("WORLD_DOESNT_EXIT"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
World world = test.load();
|
||||||
|
if(world == null) {
|
||||||
|
sender.sendMessage(errorPrefix + message("WORLD_LOAD_FAILED"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Location loc = new Location(world.getName(), world.getSpawnLocation());
|
||||||
|
loc.teleport(sender);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLabel() {
|
||||||
|
return "tp";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUsage() {
|
||||||
|
return "<world>";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return "Teleport to another world";
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<String> autoComplete(@NotNull String parameter, @NotNull String typed) {
|
||||||
|
if(parameter.equals("world")) {
|
||||||
|
return Main.getInstance().getWorlds();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
|
@ -318,11 +318,11 @@ public class ConfigManager {
|
||||||
int index = 0;
|
int index = 0;
|
||||||
for(String part : parts) {
|
for(String part : parts) {
|
||||||
if (index == 0) {
|
if (index == 0) {
|
||||||
index = yaml.indexOf(part + ":", index);
|
index = yaml.indexOf("\n" + part + ":", index) + 1;
|
||||||
} else {
|
} else {
|
||||||
index = yaml.indexOf(" " + part + ":", index) + 1;
|
index = yaml.indexOf(" " + part + ":", index) + 1;
|
||||||
}
|
}
|
||||||
if (index == -1) break;
|
if (index == 0) break;
|
||||||
}
|
}
|
||||||
return index;
|
return index;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ package net.tylermurphy.hideAndSeek.configuration;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import net.tylermurphy.hideAndSeek.Main;
|
||||||
import net.tylermurphy.hideAndSeek.util.Location;
|
import net.tylermurphy.hideAndSeek.util.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
@ -72,6 +73,7 @@ public class Maps {
|
||||||
ConfigurationSection data = maps.getConfigurationSection(name);
|
ConfigurationSection data = maps.getConfigurationSection(name);
|
||||||
if(data == null) return null;
|
if(data == null) return null;
|
||||||
Map map = new Map(name);
|
Map map = new Map(name);
|
||||||
|
Main.getInstance().getLogger().info("Loading map: " + name + "...");
|
||||||
map.setSpawn(getSpawn(data, "game"));
|
map.setSpawn(getSpawn(data, "game"));
|
||||||
map.setLobby(getSpawn(data, "lobby"));
|
map.setLobby(getSpawn(data, "lobby"));
|
||||||
map.setSeekerLobby(getSpawn(data, "seeker"));
|
map.setSeekerLobby(getSpawn(data, "seeker"));
|
||||||
|
|
|
@ -45,8 +45,10 @@ public class Database {
|
||||||
public Database(){
|
public Database(){
|
||||||
|
|
||||||
if(databaseType.equals("SQLITE")) {
|
if(databaseType.equals("SQLITE")) {
|
||||||
|
Main.getInstance().getLogger().info("SQLITE database chosen");
|
||||||
connection = new SQLiteConnection();
|
connection = new SQLiteConnection();
|
||||||
} else {
|
} else {
|
||||||
|
Main.getInstance().getLogger().info("MYSQL database chosen");
|
||||||
connection = new MySQLConnection();
|
connection = new MySQLConnection();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -21,6 +21,7 @@ package net.tylermurphy.hideAndSeek.database.connections;
|
||||||
|
|
||||||
import com.zaxxer.hikari.HikariConfig;
|
import com.zaxxer.hikari.HikariConfig;
|
||||||
import com.zaxxer.hikari.HikariDataSource;
|
import com.zaxxer.hikari.HikariDataSource;
|
||||||
|
import net.tylermurphy.hideAndSeek.Main;
|
||||||
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
@ -35,6 +36,13 @@ public class MySQLConnection implements DatabaseConnection {
|
||||||
|
|
||||||
HikariConfig config = new HikariConfig();
|
HikariConfig config = new HikariConfig();
|
||||||
|
|
||||||
|
Main.getInstance().getLogger().info("Database host: " + databaseHost);
|
||||||
|
Main.getInstance().getLogger().info("Database port: " + databasePort);
|
||||||
|
Main.getInstance().getLogger().info("Database user: " + databaseUser);
|
||||||
|
Main.getInstance().getLogger().info("Database pass: xxxxxxxxxxx");
|
||||||
|
Main.getInstance().getLogger().info("Database name: " + databaseName);
|
||||||
|
|
||||||
|
|
||||||
config.setJdbcUrl("jdbc:mariadb://"+databaseHost+":"+databasePort+"/"+databaseName);
|
config.setJdbcUrl("jdbc:mariadb://"+databaseHost+":"+databasePort+"/"+databaseName);
|
||||||
config.addDataSourceProperty("cachePrepStmts", "true");
|
config.addDataSourceProperty("cachePrepStmts", "true");
|
||||||
config.addDataSourceProperty("prepStmtCacheSize", "250");
|
config.addDataSourceProperty("prepStmtCacheSize", "250");
|
||||||
|
|
|
@ -4,6 +4,7 @@ import net.tylermurphy.hideAndSeek.Main;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.WorldCreator;
|
import org.bukkit.WorldCreator;
|
||||||
|
import org.bukkit.WorldType;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
@ -42,13 +43,30 @@ public class Location {
|
||||||
this.z = z;
|
this.z = z;
|
||||||
}
|
}
|
||||||
|
|
||||||
public World load() {
|
public Location(@NotNull String world, @NotNull org.bukkit.Location location) {
|
||||||
|
this.world = world;
|
||||||
|
this.x = location.getX();
|
||||||
|
this.y = location.getY();
|
||||||
|
this.z = location.getZ();
|
||||||
|
}
|
||||||
|
|
||||||
|
public World load(WorldType type) {
|
||||||
World bukkitWorld = Bukkit.getWorld(world);
|
World bukkitWorld = Bukkit.getWorld(world);
|
||||||
if(bukkitWorld != null) return bukkitWorld;
|
if(bukkitWorld != null) return bukkitWorld;
|
||||||
|
if (type == null) {
|
||||||
Bukkit.getServer().createWorld(new WorldCreator(world));
|
Bukkit.getServer().createWorld(new WorldCreator(world));
|
||||||
|
} else {
|
||||||
|
Bukkit.getServer().createWorld(new WorldCreator(world).type(type));
|
||||||
|
}
|
||||||
return Bukkit.getWorld(world);
|
return Bukkit.getWorld(world);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public World load() {
|
||||||
|
if(!exists()) return null;
|
||||||
|
if(!Main.getInstance().isLoaded()) return null;
|
||||||
|
return load(null);
|
||||||
|
}
|
||||||
|
|
||||||
private org.bukkit.Location toBukkit() {
|
private org.bukkit.Location toBukkit() {
|
||||||
return new org.bukkit.Location(
|
return new org.bukkit.Location(
|
||||||
Bukkit.getWorld(world),
|
Bukkit.getWorld(world),
|
||||||
|
|
|
@ -155,7 +155,7 @@ public class WorldLoader {
|
||||||
out.close();
|
out.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void deleteDirectory(File directoryToBeDeleted) {
|
public static void deleteDirectory(File directoryToBeDeleted) {
|
||||||
File[] allContents = directoryToBeDeleted.listFiles();
|
File[] allContents = directoryToBeDeleted.listFiles();
|
||||||
if (allContents != null) {
|
if (allContents != null) {
|
||||||
for (File file : allContents) {
|
for (File file : allContents) {
|
||||||
|
|
|
@ -107,6 +107,20 @@ Localization:
|
||||||
BLOCKHUNT_BLOCK_REMOVED: "Removed {AMOUNT} from blockhunt config."
|
BLOCKHUNT_BLOCK_REMOVED: "Removed {AMOUNT} from blockhunt config."
|
||||||
BLOCKHUNT_LIST_BLOCKS: "The following blockhunt blocks are:"
|
BLOCKHUNT_LIST_BLOCKS: "The following blockhunt blocks are:"
|
||||||
NO_BLOCKS: "There are no blockhunt blocks in this map."
|
NO_BLOCKS: "There are no blockhunt blocks in this map."
|
||||||
|
WORLD_EXISTS: "A world named {AMOUNT} already exists."
|
||||||
|
WORLD_DOESNT_EXIST: "There is no world named {AMOUNT} that exists."
|
||||||
|
WORLD_ADDED: "Created a world named {AMOUNT}."
|
||||||
|
WORLD_ADDED_FAILED: "Failed to create new world."
|
||||||
|
WORLD_REMOVED: "Deleted a world named {AMOUNT}."
|
||||||
|
WORLD_REMOVED_FAILED: "Failed to delete world."
|
||||||
|
WORLD_NOT_EMPTY: "World must be empty to be deleted."
|
||||||
|
LIST_WORLDS: "The following worlds are:"
|
||||||
|
NO_WORLDS: "Failed to fetch any worlds."
|
||||||
|
WORLD_LOAD_FAILED: "Failed to load world."
|
||||||
|
INVALID_WORLD_TYPE: "Invalid world type: {AMOUNT}."
|
||||||
|
NO_CONFIRMATION: "You have nothing to confirm."
|
||||||
|
CONFIRMATION_TIMED_OUT: "The confirmation has timed out."
|
||||||
|
CONFIRMATION: "Run /hs confirm within 10s to confirm."
|
||||||
|
|
||||||
# DO NOT EDIT IT OR IT MAY BREAK OR RESET FILE
|
# DO NOT EDIT IT OR IT MAY BREAK OR RESET FILE
|
||||||
version: 4
|
version: 4
|
||||||
|
|
|
@ -62,4 +62,14 @@ permissions:
|
||||||
default: op
|
default: op
|
||||||
hs.map.blockhunt.list:
|
hs.map.blockhunt.list:
|
||||||
default: op
|
default: op
|
||||||
|
hs.world.create:
|
||||||
|
default: op
|
||||||
|
hs.world.delete:
|
||||||
|
default: op
|
||||||
|
hs.world.list:
|
||||||
|
default: op
|
||||||
|
hs.world.tp:
|
||||||
|
default: op
|
||||||
|
hs.confirm:
|
||||||
|
default: op
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue