Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>com.modnmetl</groupId>
<artifactId>virtualrealty</artifactId>
<version>2.4.0</version>
<version>2.5.0</version>
<packaging>jar</packaging>

<description>A plot creation and management plugin for Minecraft</description>
Expand Down
193 changes: 130 additions & 63 deletions src/main/java/com/modnmetl/virtualrealty/VirtualRealty.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,36 +6,33 @@
import com.modnmetl.virtualrealty.commands.plot.PlotCommand;
import com.modnmetl.virtualrealty.commands.vrplot.VirtualRealtyCommand;
import com.modnmetl.virtualrealty.configs.*;
import com.modnmetl.virtualrealty.enums.PlotSize;
import com.modnmetl.virtualrealty.enums.ServerVersion;
import com.modnmetl.virtualrealty.exceptions.MaterialMatchException;
import com.modnmetl.virtualrealty.listeners.player.PlayerActionListener;
import com.modnmetl.virtualrealty.listeners.protection.BorderProtectionListener;
import com.modnmetl.virtualrealty.listeners.PlotEntranceListener;
import com.modnmetl.virtualrealty.listeners.protection.PlotProtectionListener;
import com.modnmetl.virtualrealty.listeners.protection.WorldProtectionListener;
import com.modnmetl.virtualrealty.listeners.stake.DraftListener;
import com.modnmetl.virtualrealty.listeners.stake.ConfirmationListener;
import com.modnmetl.virtualrealty.managers.DynmapManager;
import com.modnmetl.virtualrealty.managers.MetricsManager;
import com.modnmetl.virtualrealty.managers.PlotManager;
import com.modnmetl.virtualrealty.managers.PlotMemberManager;
import com.modnmetl.virtualrealty.objects.Plot;
import com.modnmetl.virtualrealty.model.plot.PlotSize;
import com.modnmetl.virtualrealty.model.other.ServerVersion;
import com.modnmetl.virtualrealty.exception.MaterialMatchException;
import com.modnmetl.virtualrealty.listener.player.PlayerActionListener;
import com.modnmetl.virtualrealty.listener.protection.BorderProtectionListener;
import com.modnmetl.virtualrealty.listener.PlotEntranceListener;
import com.modnmetl.virtualrealty.listener.protection.PlotProtectionListener;
import com.modnmetl.virtualrealty.listener.protection.WorldProtectionListener;
import com.modnmetl.virtualrealty.listener.stake.DraftListener;
import com.modnmetl.virtualrealty.listener.stake.ConfirmationListener;
import com.modnmetl.virtualrealty.manager.DynmapManager;
import com.modnmetl.virtualrealty.manager.MetricsManager;
import com.modnmetl.virtualrealty.manager.PlotManager;
import com.modnmetl.virtualrealty.model.plot.Plot;
import com.modnmetl.virtualrealty.registry.VirtualPlaceholders;
import com.modnmetl.virtualrealty.sql.Database;
import com.modnmetl.virtualrealty.utils.Loader;
import com.modnmetl.virtualrealty.utils.configuration.ConfigurationFactory;
import com.modnmetl.virtualrealty.utils.multiversion.VMaterial;
import com.modnmetl.virtualrealty.utils.UpdateChecker;
import com.modnmetl.virtualrealty.util.loader.Loader;
import com.modnmetl.virtualrealty.util.configuration.ConfigurationFactory;
import com.modnmetl.virtualrealty.util.multiversion.VMaterial;
import com.modnmetl.virtualrealty.util.UpdateChecker;
import com.zaxxer.hikari.HikariDataSource;
import lombok.Getter;
import lombok.Setter;
import net.minecraft.server.v1_13_R2.MinecraftServer;
import org.apache.commons.io.FileUtils;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.command.PluginCommand;
import org.bukkit.craftbukkit.v1_13_R2.CraftServer;
import org.bukkit.permissions.Permission;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitTask;
Expand All @@ -59,7 +56,9 @@ public final class VirtualRealty extends JavaPlugin {
@Getter
private static VirtualRealty instance;
@Getter
public MetricsManager metricsManager;
private MetricsManager metricsManager;
@Getter
private PlotManager plotManager;

@Getter
public ConfigurationFactory configFactory = new ConfigurationFactory();
Expand All @@ -80,6 +79,7 @@ public final class VirtualRealty extends JavaPlugin {
private static Object premium;
public static boolean upToDate;
public static String latestVersion;
public static boolean developmentBuild;

//FILES
@Getter
Expand All @@ -97,8 +97,8 @@ public final class VirtualRealty extends JavaPlugin {

@Override
public void onEnable() {
classLoader = getClassLoader();
instance = this;
classLoader = getClassLoader();
try {
jarFiles.add(new JarFile(getFile()));
} catch (IOException e) {
Expand All @@ -111,47 +111,32 @@ public void onEnable() {
plotsSchemaFolder = new File(plotsFolder.getAbsolutePath(), "primary-terrain");
plotsSchemaFolder.mkdirs();
reloadConfigs();
this.locale = new Locale(pluginConfiguration.locale.split("_")[0], pluginConfiguration.locale.split("_")[1]);
this.locale = new Locale(getPluginConfiguration().locale.split("_")[0], getPluginConfiguration().locale.split("_")[1]);
configureMessages();
if (ServerVersion.valueOf(pluginConfiguration.initServerVersion) == ServerVersion.LEGACY && currentServerVersion == ServerVersion.MODERN) {
if (ServerVersion.valueOf(getPluginConfiguration().initServerVersion) == ServerVersion.LEGACY && currentServerVersion == ServerVersion.MODERN) {
this.getLogger().severe(" » ------------------------------------------------------------------------------------------------ « ");
this.getLogger().severe(" You cannot migrate existing legacy plots (1.8-1.12) to a non-legacy server version (1.13 and higher)");
this.getLogger().severe(" You cannot migrate existing legacy plots (<1.13) to a non-legacy server version (1.13 and higher)");
this.getLogger().severe(" » ------------------------------------------------------------------------------------------------ « ");
this.getPluginLoader().disablePlugin(this);
return;
}
if (ServerVersion.valueOf(pluginConfiguration.initServerVersion) == ServerVersion.MODERN && currentServerVersion == ServerVersion.LEGACY) {
if (ServerVersion.valueOf(getPluginConfiguration().initServerVersion) == ServerVersion.MODERN && currentServerVersion == ServerVersion.LEGACY) {
this.getLogger().severe(" » ------------------------------------------------------------------------------------------------ « ");
this.getLogger().severe(" You cannot migrate existing non-legacy plots (1.13 and higher) to a legacy server version (1.8-1.12)");
this.getLogger().severe(" You cannot migrate existing non-legacy plots (1.13 and higher) to a legacy server version (<1.13)");
this.getLogger().severe(" » ------------------------------------------------------------------------------------------------ « ");
this.getPluginLoader().disablePlugin(this);
return;
}
String[] updateCheck = UpdateChecker.getUpdate();
if (updateCheck != null) {
if (!updateCheck[0].equals(this.getDescription().getVersion())) {
upToDate = false;
latestVersion = updateCheck[0];
this.getLogger().info("A newer version is available!");
this.getLogger().info("The current version you use: " + this.getDescription().getVersion());
this.getLogger().info("Latest version available: " + updateCheck[0]);
this.getLogger().info("Download link: https://www.spigotmc.org/resources/virtual-realty.95599/");
} else {
upToDate = true;
latestVersion = this.getDescription().getVersion();
this.getLogger().info("Plugin is up to date!");
}
}
checkUpdates();
if (!pluginConfiguration.license.key.isEmpty() && !pluginConfiguration.license.email.isEmpty()) {
try {
new Loader(pluginConfiguration.license.key, pluginConfiguration.license.email, this.getDescription().getVersion(), getLoader(), VirtualRealty.getPluginConfiguration().loaderDebugMode);
new Loader(pluginConfiguration.license.key, pluginConfiguration.license.email, this.getDescription().getVersion(), getLoader(), pluginConfiguration.loaderDebugMode);
} catch (IOException | InstantiationException | IllegalAccessException | ClassNotFoundException e) {
e.printStackTrace();
getLogger().log(Level.WARNING, "Load of premium features failed.");
}
}
metricsManager = new MetricsManager(this, 14066);
metricsManager.registerMetrics();
loadMetrics();
loadSizesConfiguration();
try {
Database.connectToDatabase(databaseFile);
Expand All @@ -160,19 +145,12 @@ public void onEnable() {
this.getPluginLoader().disablePlugin(this);
return;
}
PlotManager.loadPlots();
PlotMemberManager.loadMembers();
if (pluginConfiguration.dynmapMarkers) {
dynmapManager = new DynmapManager(this);
dynmapManager.registerDynmap();
}
loadPlotsData();
loadDynMapHook();
registerCommands();
configureCommands();
loadCommandsConfiguration();
registerListeners();
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
new VirtualPlaceholders(this).register();
debug("Registered new placeholders");
}
registerPlaceholders();
debug("Server version: " + this.getServer().getBukkitVersion() + " | " + this.getServer().getVersion());
}

Expand All @@ -189,7 +167,7 @@ public void onDisable() {
gridStructureEntryEntry.getKey().removeGrid();
});
DraftListener.DRAFT_MAP.clear();
PlotManager.getPlots().forEach(Plot::update);
plotManager.getPlots().forEach(Plot::update);
tasks.forEach(BukkitTask::cancel);
try {
DataSource dataSource;
Expand All @@ -206,8 +184,93 @@ public void onDisable() {
FileUtils.deleteQuietly(loaderFile);
}

public static void debug(String message) {
if (VirtualRealty.getPluginConfiguration().debugMode) VirtualRealty.getInstance().getLogger().warning("DEBUG > " + message);
public void registerPlaceholders() {
if (!Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) return;
new VirtualPlaceholders(this).register();
debug("Registered new placeholders");
}

public void checkUpdates() {
String[] currentVersionNumbers = this.getDescription().getVersion().split("\\.");
String[] updateCheck = UpdateChecker.getUpdate();
if (updateCheck != null) {
String updateVersion = updateCheck[0];
String[] cloudVersionNumbers = updateVersion.split("\\.");
int currentMajor = Integer.parseInt(currentVersionNumbers[0]);
int currentMinor = Integer.parseInt(currentVersionNumbers[1]);
int currentPatch = Integer.parseInt(currentVersionNumbers[2]);

int updateMajor = Integer.parseInt(cloudVersionNumbers[0]);
int updateMinor = Integer.parseInt(cloudVersionNumbers[1]);
int updatePatch = Integer.parseInt(cloudVersionNumbers[2]);

boolean patchUpdate = updatePatch > currentPatch;
boolean minorUpdate = updateMinor > currentMinor;
boolean majorUpdate = updateMajor > currentMajor;

boolean majorDevelopment = currentMajor > updateMajor;
boolean minorDevelopment = currentMinor > updateMinor;

if (currentMajor == updateMajor && currentMinor == updateMinor && currentPatch == updatePatch) {
upToDate = true;
latestVersion = this.getDescription().getVersion();
this.getLogger().info("Plugin is up to date!");
return;
}
if (majorUpdate) {
registerUpdate(updateVersion, false);
} else {
if (minorUpdate) {
if (majorDevelopment) {
registerUpdate(updateVersion, true);
return;
}
registerUpdate(updateVersion, false);
} else {
if (patchUpdate) {
if (majorDevelopment || minorDevelopment) {
registerUpdate(updateVersion, true);
return;
}
registerUpdate(updateVersion, false);
} else {
registerUpdate(updateVersion, true);
}
}
}
}
}

private void registerUpdate(String version, boolean development) {
upToDate = false;
latestVersion = version;
if (development) {
developmentBuild = true;
this.getLogger().warning("You are running a development build!");
return;
}
this.getLogger().info("A newer version is available!");
this.getLogger().info("The current version you use: " + this.getDescription().getVersion());
this.getLogger().info("Latest version available: " + version);
this.getLogger().info("Download link: https://www.spigotmc.org/resources/virtual-realty.95599/");
}

public void loadPlotsData() {
plotManager = new PlotManager(this);
plotManager.loadPlots();
plotManager.loadMembers();
}

public void loadDynMapHook() {
if (getPluginConfiguration().dynmapMarkers) {
dynmapManager = new DynmapManager(this);
dynmapManager.registerDynmap();
}
}

public void loadMetrics() {
metricsManager = new MetricsManager(this, 14066);
metricsManager.registerMetrics();
}

public void configureMessages() {
Expand All @@ -216,9 +279,8 @@ public void configureMessages() {
configFactory.loadMessagesConfiguration(messagesConfigurationFile);
}

public void configureCommands() {
public void loadCommandsConfiguration() {
commandsConfiguration = configFactory.loadCommandsConfiguration(commandsConfigurationFile);
commandsConfiguration.refreshHelpMessages();
commandsConfiguration.assignAliases();
CommandRegistry.setupPlaceholders();
}
Expand Down Expand Up @@ -278,7 +340,7 @@ private void registerListeners() {
new ConfirmationListener(this);
try {
List<Class<?>> classes = new ArrayList<>();
classes.add(Class.forName("com.modnmetl.virtualrealty.listeners.premium.PanelListener", true, getLoader()));
classes.add(Class.forName("com.modnmetl.virtualrealty.listener.premium.PanelListener", true, getLoader()));
for (Class<?> aClass : classes) {
aClass.getConstructors()[0].newInstance(this);
}
Expand Down Expand Up @@ -389,4 +451,9 @@ public void setClassLoader(ClassLoader newClassLoader) {
classLoader = newClassLoader;
}

public static void debug(String message) {
if (!VirtualRealty.getPluginConfiguration().debugMode) return;
VirtualRealty.getInstance().getLogger().warning("DEBUG > " + message);
}

}
Loading