diff --git a/.github/workflows/codacy-analysis.yml b/.github/workflows/codacy-analysis.yml new file mode 100644 index 000000000..2228ef468 --- /dev/null +++ b/.github/workflows/codacy-analysis.yml @@ -0,0 +1,46 @@ +# This workflow checks out code, performs a Codacy security scan +# and integrates the results with the +# GitHub Advanced Security code scanning feature. For more information on +# the Codacy security scan action usage and parameters, see +# https://github.com/codacy/codacy-analysis-cli-action. +# For more information on Codacy Analysis CLI in general, see +# https://github.com/codacy/codacy-analysis-cli. + +name: Codacy Security Scan + +on: + push: + branches: [ 1.16 ] + pull_request: + branches: [ 1.16 ] + +jobs: + codacy-security-scan: + name: Codacy Security Scan + runs-on: ubuntu-latest + steps: + # Checkout the repository to the GitHub Actions runner + - name: Checkout code + uses: actions/checkout@v2 + + # Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis + - name: Run Codacy Analysis CLI + uses: codacy/codacy-analysis-cli-action@1.1.0 + with: + # Check https://github.com/codacy/codacy-analysis-cli#project-token to get your project token from your Codacy repository + # You can also omit the token and run the tools that support default configurations + project-token: ${{ secrets.CODACY_PROJECT_TOKEN }} + verbose: true + output: results.sarif + format: sarif + # Adjust severity of non-security issues + gh-code-scanning-compat: true + # Force 0 exit code to allow SARIF file generation + # This will handover control about PR rejection to the GitHub side + max-allowed-issues: 2147483647 + + # Upload the SARIF file generated in the previous step + - name: Upload SARIF results file + uses: github/codeql-action/upload-sarif@v1 + with: + sarif_file: results.sarif diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 000000000..42eca3a2c --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,67 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ 1.16 ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ 1.16 ] + schedule: + - cron: '33 5 * * 4' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + language: [ 'java' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] + # Learn more: + # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 + + # ℹī¸ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl + + # ✏ī¸ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 diff --git a/Bukkit/build.gradle b/Bukkit/build.gradle index 6e8f3e4f2..2f2409d14 100644 --- a/Bukkit/build.gradle +++ b/Bukkit/build.gradle @@ -15,7 +15,6 @@ repositories { maven { url = "https://mvn.intellectualsites.com/content/repositories/releases" } maven { url = "https://mvn.intellectualsites.com/content/repositories/snapshots" } maven { url = "http://repo.mvdw-software.be/content/groups/public/" } - maven { url = "https://telesphoreo.me/repo/maven" } mavenLocal() } @@ -42,7 +41,7 @@ dependencies { compile("se.hyperver.hyperverse:Core:0.6.0-SNAPSHOT"){ transitive = false } compile('com.sk89q:squirrelid:1.0.0-SNAPSHOT'){ transitive = false } compile('be.maximvdw:MVdWPlaceholderAPI:3.1.1'){ transitive = false } - implementation('me.totalfreedom:TotalFreedomMod:2020.11'){ transitive = false } + implementation('com.github.AtlasMediaGroup:TotalFreedomMod:0be2aa7'){ transitive = false } } sourceCompatibility = 1.8 @@ -101,12 +100,14 @@ shadowJar { include(dependency("org.bstats:bstats-bukkit:1.7")) include(dependency("org.khelekore:prtree:1.7.0-SNAPSHOT")) include(dependency("com.sk89q:squirrelid:1.0.0-SNAPSHOT")) + include(dependency("com.intellectualsites.paster:Paster:1.0.1-SNAPSHOT")) } relocate('net.kyori.text', 'com.plotsquared.formatting.text') relocate("io.papermc.paperlib", "com.plotsquared.bukkit.paperlib") relocate("org.bstats", "com.plotsquared.metrics") relocate('com.sk89q.squirrelid', 'com.plotsquared.squirrelid') relocate('org.khelekore.prtree', 'com.plotsquared.prtree') + relocate('com.intellectualsites.paster', 'com.plotsquared.core.paster') archiveFileName = "${project.name}-${parent.version}.jar" destinationDirectory = file "../target" } @@ -118,4 +119,4 @@ shadowJar.doLast { build.dependsOn(shadowJar) build.finalizedBy(copyFiles) -copyFiles.dependsOn(createPom) +copyFiles.dependsOn(createPom) \ No newline at end of file diff --git a/Bukkit/pom.xml b/Bukkit/pom.xml index e773a0ead..ac13e0f48 100644 --- a/Bukkit/pom.xml +++ b/Bukkit/pom.xml @@ -21,7 +21,7 @@ com.plotsquared PlotSquared-Core - 5.13.9 + 5.13.10 compile @@ -147,9 +147,9 @@ runtime - me.totalfreedom + com.github.AtlasMediaGroup TotalFreedomMod - 2020.11 + 0be2aa7 runtime diff --git a/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitMain.java b/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitMain.java index c28c38995..8d6723659 100644 --- a/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitMain.java +++ b/Bukkit/src/main/java/com/plotsquared/bukkit/BukkitMain.java @@ -74,6 +74,7 @@ import com.plotsquared.core.configuration.ChatFormatter; import com.plotsquared.core.configuration.ConfigurationNode; import com.plotsquared.core.configuration.ConfigurationSection; import com.plotsquared.core.configuration.Settings; +import com.plotsquared.core.configuration.Storage; import com.plotsquared.core.database.DBFunc; import com.plotsquared.core.generator.GeneratorWrapper; import com.plotsquared.core.generator.HybridGen; @@ -1018,6 +1019,10 @@ public final class BukkitMain extends JavaPlugin implements Listener, IPlotMain< })); metrics.addCustomChart(new Metrics.SimplePie("premium", () -> PremiumVerification.isPremium() ? "Premium" : "Non-Premium")); + metrics.addCustomChart(new Metrics.SimplePie("worlds", () -> Settings.Enabled_Components.WORLDS ? "true" : "false")); + metrics.addCustomChart(new Metrics.SimplePie("economy", () -> Settings.Enabled_Components.ECONOMY ? "true" : "false")); + metrics.addCustomChart(new Metrics.SimplePie("plot_expiry", () -> Settings.Enabled_Components.PLOT_EXPIRY ? "true" : "false")); + metrics.addCustomChart(new Metrics.SimplePie("database_type", () -> Storage.MySQL.USE ? "MySQL" : "SQLite")); metrics.addCustomChart(new Metrics.SimplePie("worldedit_implementation", () -> Bukkit.getPluginManager().getPlugin("FastAsyncWorldEdit") != null ? "FastAsyncWorldEdit" : diff --git a/Core/build.gradle b/Core/build.gradle index 5af995fde..e15de257e 100644 --- a/Core/build.gradle +++ b/Core/build.gradle @@ -2,9 +2,6 @@ repositories { maven { url = "https://jitpack.io" } maven { url = "https://mvn.intellectualsites.com/content/repositories/snapshots" } maven { url = "https://hub.spigotmc.org/nexus/content/repositories/snapshots/" } - maven { url = "https://rayzr.dev/repo/" } - maven { url = "https://repo.dmulloy2.net/nexus/repository/public/" } - maven { url = "https://telesphoreo.me/repo/maven" } } def textVersion = "3.0.2" @@ -23,7 +20,8 @@ dependencies { implementation("org.jetbrains:annotations:20.1.0") implementation("org.khelekore:prtree:1.7.0-SNAPSHOT") implementation("org.spigotmc:spigot-api:1.16.1-R0.1-SNAPSHOT") - implementation("me.totalfreedom:TotalFreedomMod:2020.11") + implementation("com.github.AtlasMediaGroup:TotalFreedomMod:0be2aa7") + implementation("com.intellectualsites.paster:Paster:1.0.1-SNAPSHOT"){ transitive = false } } sourceCompatibility = 1.8 @@ -82,11 +80,13 @@ shadowJar { include(dependency("net.kyori:text-serializer-legacy:3.0.2")) include(dependency("net.kyori:text-serializer-plain:3.0.2")) include(dependency("org.khelekore:prtree:1.7.0-SNAPSHOT")) + include(dependency("com.intellectualsites.paster:Paster:1.0.1-SNAPSHOT")) } relocate('net.kyori.text', 'com.plotsquared.formatting.text') relocate("org.json", "com.plotsquared.json") { exclude "org/json/simple/**" } + relocate('com.intellectualsites.paster', 'com.plotsquared.core.paster') } shadowJar.doLast { diff --git a/Core/pom.xml b/Core/pom.xml index e99545256..721c5dc83 100644 --- a/Core/pom.xml +++ b/Core/pom.xml @@ -81,9 +81,9 @@ runtime - me.totalfreedom + com.github.AtlasMediaGroup TotalFreedomMod - 2020.11 + 0be2aa7 runtime @@ -110,6 +110,18 @@ 1.7.0-SNAPSHOT runtime + + com.intellectualsites.paster + Paster + 1.0.1-SNAPSHOT + runtime + + + * + * + + + junit junit diff --git a/Core/src/main/java/com/plotsquared/core/command/Command.java b/Core/src/main/java/com/plotsquared/core/command/Command.java index c49ac0510..212ce7cc9 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Command.java +++ b/Core/src/main/java/com/plotsquared/core/command/Command.java @@ -161,7 +161,7 @@ public abstract class Command { public boolean hasConfirmation(CommandCaller player) { // Confirmation message bypass - return this.confirmation && !plotSquaredHandler.isStaff(player); + return this.confirmation && !plotSquaredHandler.isAdmin(player); } public List getAliases() { diff --git a/Core/src/main/java/com/plotsquared/core/command/DebugPaste.java b/Core/src/main/java/com/plotsquared/core/command/DebugPaste.java index 3928b9fff..eb6062e4d 100644 --- a/Core/src/main/java/com/plotsquared/core/command/DebugPaste.java +++ b/Core/src/main/java/com/plotsquared/core/command/DebugPaste.java @@ -27,13 +27,13 @@ package com.plotsquared.core.command; import com.google.gson.JsonObject; import com.google.gson.JsonParser; +import com.intellectualsites.paster.IncendoPaster; import com.plotsquared.core.PlotSquared; import com.plotsquared.core.configuration.Captions; import com.plotsquared.core.configuration.Settings; import com.plotsquared.core.player.PlotPlayer; import com.plotsquared.core.util.MainUtil; import com.plotsquared.core.util.PremiumVerification; -import com.plotsquared.core.util.net.IncendoPaster; import com.plotsquared.core.util.task.TaskManager; import lombok.NonNull; @@ -59,22 +59,9 @@ import java.util.stream.Collectors; requiredType = RequiredType.NONE) public class DebugPaste extends SubCommand { - private static String readFile(@NonNull final File file) throws IOException { - final List lines; - try (final BufferedReader reader = new BufferedReader(new FileReader(file))) { - lines = reader.lines().collect(Collectors.toList()); - } - final StringBuilder content = new StringBuilder(); - for (int i = Math.max(0, lines.size() - 1000); i < lines.size(); i++) { - content.append(lines.get(i)).append("\n"); - } - return content.toString(); - } - @Override public boolean onCommand(final PlotPlayer player, String[] args) { TaskManager.runTaskAsync(() -> { try { - StringBuilder b = new StringBuilder(); b.append( "# Welcome to this paste\n# It is meant to provide us at IntellectualSites with better information about your " @@ -128,28 +115,24 @@ public class DebugPaste extends SubCommand { if (Files.size(logFile.toPath()) > 14_000_000) { throw new IOException("Too big..."); } - incendoPaster - .addFile(new IncendoPaster.PasteFile("latest.log", readFile(logFile))); + incendoPaster.addFile(logFile); } catch (IOException ignored) { MainUtil .sendMessage(player, "&clatest.log is too big to be pasted, will ignore"); } try { - incendoPaster.addFile(new IncendoPaster.PasteFile("settings.yml", - readFile(PlotSquared.get().configFile))); + incendoPaster.addFile(PlotSquared.get().configFile); } catch (final IllegalArgumentException ignored) { MainUtil.sendMessage(player, "&cSkipping settings.yml because it's empty"); } try { - incendoPaster.addFile(new IncendoPaster.PasteFile("worlds.yml", - readFile(PlotSquared.get().worldsFile))); + incendoPaster.addFile(PlotSquared.get().worldsFile); } catch (final IllegalArgumentException ignored) { MainUtil.sendMessage(player, "&cSkipping worlds.yml because it's empty"); } try { - incendoPaster.addFile(new IncendoPaster.PasteFile("PlotSquared.use_THIS.yml", - readFile(PlotSquared.get().translationFile))); + incendoPaster.addFile(PlotSquared.get().translationFile); } catch (final IllegalArgumentException ignored) { MainUtil.sendMessage(player, "&cSkipping PlotSquared.use_THIS.yml because it's empty"); @@ -158,8 +141,7 @@ public class DebugPaste extends SubCommand { try { final File MultiverseWorlds = new File(PlotSquared.get().IMP.getDirectory(), "../Multiverse-Core/worlds.yml"); - incendoPaster.addFile(new IncendoPaster.PasteFile("MultiverseCore/worlds.yml", - readFile(MultiverseWorlds))); + incendoPaster.addFile(MultiverseWorlds); } catch (final IOException ignored) { MainUtil.sendMessage(player, "&cSkipping Multiverse worlds.yml because the plugin is not in use"); diff --git a/Core/src/main/java/com/plotsquared/core/command/Purge.java b/Core/src/main/java/com/plotsquared/core/command/Purge.java index 9a89b2230..d7a7ede26 100644 --- a/Core/src/main/java/com/plotsquared/core/command/Purge.java +++ b/Core/src/main/java/com/plotsquared/core/command/Purge.java @@ -36,6 +36,7 @@ import com.plotsquared.core.plot.PlotArea; import com.plotsquared.core.plot.PlotId; import com.plotsquared.core.util.StringMan; import com.plotsquared.core.util.task.TaskManager; +import com.plotsquared.core.uuid.UUIDMapping; import java.util.HashMap; import java.util.HashSet; @@ -95,19 +96,21 @@ public class Purge extends SubCommand { break; case "owner": case "o": - owner = PlotSquared.get().getImpromptuUUIDPipeline().getSingle(split[1], Settings.UUID.BLOCKING_TIMEOUT); - if (owner == null) { + UUIDMapping ownerMapping = PlotSquared.get().getImpromptuUUIDPipeline().getImmediately(split[1]); + if (ownerMapping == null) { Captions.INVALID_PLAYER.send(player, split[1]); return false; } + owner = ownerMapping.getUuid(); break; case "shared": case "s": - added = PlotSquared.get().getImpromptuUUIDPipeline().getSingle(split[1], Settings.UUID.BLOCKING_TIMEOUT); - if (added == null) { + UUIDMapping addedMapping = PlotSquared.get().getImpromptuUUIDPipeline().getImmediately(split[1]); + if (addedMapping == null) { Captions.INVALID_PLAYER.send(player, split[1]); return false; } + added = addedMapping.getUuid(); break; case "clear": case "c": diff --git a/Core/src/main/java/com/plotsquared/core/util/SchematicHandler.java b/Core/src/main/java/com/plotsquared/core/util/SchematicHandler.java index 987aa3fff..549755b39 100644 --- a/Core/src/main/java/com/plotsquared/core/util/SchematicHandler.java +++ b/Core/src/main/java/com/plotsquared/core/util/SchematicHandler.java @@ -275,8 +275,8 @@ public abstract class SchematicHandler { } for (int rz = zzb - p1z; rz <= (zzt - p1z); rz++) { for (int rx = xxb - p1x; rx <= (xxt - p1x); rx++) { - int xx = p1x + xOffset + rx; - int zz = p1z + zOffset + rz; + int xx = p1x + rx; + int zz = p1z + rz; BaseBlock id = blockArrayClipboard .getFullBlock(BlockVector3.at(rx, ry, rz)); queue.setBlock(xx, yy, zz, id); diff --git a/Core/src/main/java/com/plotsquared/core/util/net/IncendoPaster.java b/Core/src/main/java/com/plotsquared/core/util/net/IncendoPaster.java deleted file mode 100644 index 46ae63f7d..000000000 --- a/Core/src/main/java/com/plotsquared/core/util/net/IncendoPaster.java +++ /dev/null @@ -1,222 +0,0 @@ -/* - * _____ _ _ _____ _ - * | __ \| | | | / ____| | | - * | |__) | | ___ | |_| (___ __ _ _ _ __ _ _ __ ___ __| | - * | ___/| |/ _ \| __|\___ \ / _` | | | |/ _` | '__/ _ \/ _` | - * | | | | (_) | |_ ____) | (_| | |_| | (_| | | | __/ (_| | - * |_| |_|\___/ \__|_____/ \__, |\__,_|\__,_|_| \___|\__,_| - * | | - * |_| - * PlotSquared plot management system for Minecraft - * Copyright (C) 2020 IntellectualSites - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package com.plotsquared.core.util.net; - -import com.google.common.base.Charsets; -import com.plotsquared.core.PlotSquared; - -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.net.HttpURLConnection; -import java.net.URL; -import java.net.URLConnection; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.Iterator; -import java.util.Locale; - -/** - * Single class paster for the Incendo paste service - */ -@SuppressWarnings({"unused", "WeakerAccess"}) -public final class IncendoPaster { - - /** - * Upload service URL - */ - public static final String UPLOAD_PATH = "https://athion.net/ISPaster/paste/upload"; - /** - * Valid paste applications - */ - public static final Collection VALID_APPLICATIONS = - Arrays.asList("plotsquared", "fastasyncworldedit", "incendopermissions", "kvantum"); - - private final Collection files = new ArrayList<>(); - private final String pasteApplication; - - /** - * Construct a new paster - * - * @param pasteApplication The application that is sending the paste - */ - public IncendoPaster(final String pasteApplication) { - if (pasteApplication == null || pasteApplication.isEmpty()) { - throw new IllegalArgumentException("paste application cannot be null, nor empty"); - } - if (!VALID_APPLICATIONS.contains(pasteApplication.toLowerCase(Locale.ENGLISH))) { - throw new IllegalArgumentException( - String.format("Unknown application name: %s", pasteApplication)); - } - this.pasteApplication = pasteApplication; - } - - /** - * Get an immutable collection containing all the files that have been added to this paster - * - * @return Unmodifiable collection - */ - public final Collection getFiles() { - return Collections.unmodifiableCollection(this.files); - } - - /** - * Add a file to the paster - * - * @param file File to paste - */ - public void addFile(final PasteFile file) { - if (file == null) { - throw new IllegalArgumentException("File cannot be null"); - } - // Check to see that no duplicate files are submitted - for (final PasteFile pasteFile : this.files) { - if (pasteFile.fileName.equalsIgnoreCase(file.getFileName())) { - throw new IllegalArgumentException( - String.format("Found duplicate file with name %s", file.getFileName())); - } - } - this.files.add(file); - } - - /** - * Create a JSON string from the submitted information - * - * @return compiled JSON string - */ - private String toJsonString() { - final StringBuilder builder = new StringBuilder("{\n"); - builder.append("\"paste_application\": \"").append(this.pasteApplication) - .append("\",\n\"files\": \""); - Iterator fileIterator = this.files.iterator(); - while (fileIterator.hasNext()) { - final PasteFile file = fileIterator.next(); - builder.append(file.getFileName()); - if (fileIterator.hasNext()) { - builder.append(","); - } - } - builder.append("\",\n"); - fileIterator = this.files.iterator(); - while (fileIterator.hasNext()) { - final PasteFile file = fileIterator.next(); - builder.append("\"file-").append(file.getFileName()).append("\": \"") - .append(file.getContent().replaceAll("\"", "\\\\\"")).append("\""); - if (fileIterator.hasNext()) { - builder.append(",\n"); - } - } - builder.append("\n}"); - return builder.toString(); - } - - /** - * Upload the paste and return the status message - * - * @return Status message - * @throws Throwable any and all exceptions - */ - public final String upload() throws Throwable { - final URL url = new URL(UPLOAD_PATH); - final URLConnection connection = url.openConnection(); - final HttpURLConnection httpURLConnection = (HttpURLConnection) connection; - httpURLConnection.setRequestMethod("POST"); - httpURLConnection.setDoOutput(true); - final byte[] content = toJsonString().getBytes(Charsets.UTF_8); - httpURLConnection.setFixedLengthStreamingMode(content.length); - httpURLConnection.setRequestProperty("Content-Type", "application/json"); - httpURLConnection.setRequestProperty("Accept", "*/*"); - httpURLConnection.connect(); - try (final OutputStream stream = httpURLConnection.getOutputStream()) { - stream.write(content); - } - if (!httpURLConnection.getResponseMessage().contains("OK")) { - if (httpURLConnection.getResponseCode() == 413) { - final long size = content.length; - PlotSquared.debug(String.format("Paste Too Big > Size: %dMB", size / 1_000_000)); - } - throw new IllegalStateException(String - .format("Server returned status: %d %s", httpURLConnection.getResponseCode(), - httpURLConnection.getResponseMessage())); - } - final StringBuilder input = new StringBuilder(); - try (final BufferedReader inputStream = new BufferedReader( - new InputStreamReader(httpURLConnection.getInputStream()))) { - String line; - while ((line = inputStream.readLine()) != null) { - input.append(line).append("\n"); - } - } - return input.toString(); - } - - /** - * Simple class that represents a paste file - */ - public static class PasteFile { - - private final String fileName; - private final String content; - - /** - * Construct a new paste file - * - * @param fileName File name, cannot be empty, nor null - * @param content File content, cannot be empty, nor null - */ - public PasteFile(final String fileName, final String content) { - if (fileName == null || fileName.isEmpty()) { - throw new IllegalArgumentException("file name cannot be null, nor empty"); - } - if (content == null || content.isEmpty()) { - throw new IllegalArgumentException("content cannot be null, nor empty"); - } - this.fileName = fileName; - this.content = content; - } - - /** - * Get the file name - * - * @return File name - */ - public String getFileName() { - return this.fileName; - } - - /** - * Get the file content as a single string - * - * @return File content - */ - public String getContent() { - return this.content; - } - } - -} diff --git a/Core/src/main/java/me/totalfreedom/plotsquared/PlotSquaredHandler.java b/Core/src/main/java/me/totalfreedom/plotsquared/PlotSquaredHandler.java index 5a708a9aa..e4bbd2022 100644 --- a/Core/src/main/java/me/totalfreedom/plotsquared/PlotSquaredHandler.java +++ b/Core/src/main/java/me/totalfreedom/plotsquared/PlotSquaredHandler.java @@ -17,21 +17,21 @@ public class PlotSquaredHandler public static final Logger LOGGER = Bukkit.getPluginManager().getPlugin("PlotSquared").getLogger(); private static Function adminProvider; - public boolean isStaff(CommandCaller commandCaller) + public boolean isAdmin(CommandCaller commandCaller) { final Player player = getPlayer(commandCaller.toString()); if (player == null) { return false; } - return isStaff(player); + return isAdmin(player); } @SuppressWarnings("unchecked") - public boolean isStaff(Player player) + public boolean isAdmin(Player player) { TotalFreedomMod tfm = getTFM(); - return tfm.sl.isStaff(player); + return tfm.al.isAdmin(player); } public static Player getPlayer(CommandCaller commandCaller) @@ -59,7 +59,7 @@ public class PlotSquaredHandler "plots.worldedit.bypass", "plots.area", "plots.grant.add", "plots.debugallowunsafe", "plots.debugroadgen", "plots.debugpaste", "plots.createroadschematic", "plots.merge", "plots.unlink", "plots.area", "plots.setup", "plots.set.flag.other", "plots.reload", "plots.backup", "plots.debug"); - if (!isStaff(player)) + if (!isAdmin(player)) { return !permission.startsWith("plots.admin") && !adminOnlyPermissions.contains(permission); } diff --git a/build.gradle b/build.gradle index c5cb49133..924f33db9 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { maven { url = "https://hub.spigotmc.org/nexus/content/repositories/snapshots/" } maven { url = "https://rayzr.dev/repo/" } maven { url = "https://repo.dmulloy2.net/nexus/repository/public/" } - maven { url = "https://telesphoreo.me/repo/maven" } + maven { url = "https://jitpack.io" } } dependencies { classpath("com.github.jengelman.gradle.plugins:shadow:5.0.0") @@ -34,7 +34,7 @@ ext { git = Grgit.open(dir: new File(rootDir.toString() + "/.git")) } -def ver = "5.13.9" +def ver = "5.13.10" def versuffix = "" ext { if (project.hasProperty("versionsuffix")) { @@ -91,7 +91,7 @@ subprojects { testAnnotationProcessor("org.projectlombok:lombok:1.18.8") testImplementation("junit:junit:4.13") implementation("org.spigotmc:spigot-api:1.16.1-R0.1-SNAPSHOT") - implementation("me.totalfreedom:TotalFreedomMod:2020.11") + implementation("com.github.AtlasMediaGroup:TotalFreedomMod:0be2aa7") } configurations.all { @@ -143,4 +143,4 @@ task aggregatedJavadocs(type: Javadoc, description: "Generate javadocs from all includes += javadocTask.includes } } -} +} \ No newline at end of file