From e122819da8aa277f8b4f8334cb76acdf8460aa7f Mon Sep 17 00:00:00 2001 From: OmerBenGera Date: Sat, 6 Aug 2022 12:02:22 +0300 Subject: [PATCH] Changed mappings checking to be done against a remote server instead of hardcoded values --- build.gradle | 1 + .../SuperiorSkyblockPlugin.java | 22 ++++++++++++++----- .../superiorskyblock/nms/NMSAlgorithms.java | 3 ++- .../nms/v1_12_R1/NMSAlgorithmsImpl.java | 7 ++++-- .../nms/v1_16_R3/NMSAlgorithmsImpl.java | 6 +++-- .../nms/v1_17_R1/NMSAlgorithmsImpl.java | 6 ++--- .../nms/v1_18_R1/NMSAlgorithmsImpl.java | 6 ++--- .../nms/v1_18_R2/NMSAlgorithmsImpl.java | 6 ++--- .../nms/v1_19_R1/NMSAlgorithmsImpl.java | 6 ++--- .../nms/v1_8_R3/NMSAlgorithmsImpl.java | 7 ++++-- 10 files changed, 42 insertions(+), 28 deletions(-) diff --git a/build.gradle b/build.gradle index bed26a90d..613c7812a 100644 --- a/build.gradle +++ b/build.gradle @@ -57,6 +57,7 @@ dependencies { implementation 'com.bgsoftware.common.config:CommentedConfiguration:1.0.3' implementation 'com.bgsoftware.common.updater:Updater:latest' + implementation 'com.bgsoftware.common.mappings:MappingsChecker:1.0.0' implementation 'com.bgsoftware.common.reflection:ReflectionUtils:1.0.2' implementation 'com.bgsoftware.common.executors:Executors:1.0.1' diff --git a/src/main/java/com/bgsoftware/superiorskyblock/SuperiorSkyblockPlugin.java b/src/main/java/com/bgsoftware/superiorskyblock/SuperiorSkyblockPlugin.java index bd36e634b..94ea7f96e 100644 --- a/src/main/java/com/bgsoftware/superiorskyblock/SuperiorSkyblockPlugin.java +++ b/src/main/java/com/bgsoftware/superiorskyblock/SuperiorSkyblockPlugin.java @@ -1,5 +1,6 @@ package com.bgsoftware.superiorskyblock; +import com.bgsoftware.common.mappings.MappingsChecker; import com.bgsoftware.common.updater.Updater; import com.bgsoftware.superiorskyblock.api.SuperiorSkyblock; import com.bgsoftware.superiorskyblock.api.SuperiorSkyblockAPI; @@ -68,6 +69,7 @@ import com.bgsoftware.superiorskyblock.nms.NMSPlayers; import com.bgsoftware.superiorskyblock.nms.NMSTags; import com.bgsoftware.superiorskyblock.nms.NMSWorld; +import com.bgsoftware.superiorskyblock.nms.mapping.TestRemaps; import com.bgsoftware.superiorskyblock.player.PlayersManagerImpl; import com.bgsoftware.superiorskyblock.player.container.DefaultPlayersContainer; import com.bgsoftware.superiorskyblock.service.ServicesHandler; @@ -382,11 +384,11 @@ private boolean loadNMSAdapter() { try { nmsAlgorithms = loadNMSClass("NMSAlgorithmsImpl", version); - if (!nmsAlgorithms.isMappingsSupported()) { - new ManagerLoadException( - "The plugin doesn't support your version mappings.\n" + - "Please try a different version.", - ManagerLoadException.ErrorLevel.SERVER_SHUTDOWN).printStackTrace(); + String mappingVersionHash = nmsAlgorithms.getMappingsHash(); + + if (mappingVersionHash != null && !MappingsChecker.checkMappings(mappingVersionHash, version)) { + new ManagerLoadException("The plugin doesn't support your version mappings.\nPlease try a different version.\n" + + "Mappings Hash: " + mappingVersionHash, ManagerLoadException.ErrorLevel.SERVER_SHUTDOWN).printStackTrace(); return false; } @@ -406,6 +408,16 @@ private boolean loadNMSAdapter() { return false; } + File mappingsFile = new File("mappings"); + if (mappingsFile.exists()) { + try { + TestRemaps.testRemapsForClassesInPackage(mappingsFile, + plugin.getClassLoader(), "com.bgsoftware.superiorskyblock.nms." + version); + } catch (Exception error) { + error.printStackTrace(); + } + } + return true; } diff --git a/src/main/java/com/bgsoftware/superiorskyblock/nms/NMSAlgorithms.java b/src/main/java/com/bgsoftware/superiorskyblock/nms/NMSAlgorithms.java index 099cb03fd..588bc2535 100644 --- a/src/main/java/com/bgsoftware/superiorskyblock/nms/NMSAlgorithms.java +++ b/src/main/java/com/bgsoftware/superiorskyblock/nms/NMSAlgorithms.java @@ -18,7 +18,8 @@ public interface NMSAlgorithms { - boolean isMappingsSupported(); + @Nullable + String getMappingsHash(); void registerCommand(BukkitCommand command); diff --git a/v1_12_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_12_R1/NMSAlgorithmsImpl.java b/v1_12_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_12_R1/NMSAlgorithmsImpl.java index 608b12926..a1aa731a6 100644 --- a/v1_12_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_12_R1/NMSAlgorithmsImpl.java +++ b/v1_12_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_12_R1/NMSAlgorithmsImpl.java @@ -29,6 +29,8 @@ import org.bukkit.material.MaterialData; import org.bukkit.potion.PotionEffect; +import javax.annotation.Nullable; + public class NMSAlgorithmsImpl implements NMSAlgorithms { private final SuperiorSkyblockPlugin plugin; @@ -37,9 +39,10 @@ public NMSAlgorithmsImpl(SuperiorSkyblockPlugin plugin) { this.plugin = plugin; } + @Nullable @Override - public boolean isMappingsSupported() { - return true; + public String getMappingsHash() { + return null; } @Override diff --git a/v1_16_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_16_R3/NMSAlgorithmsImpl.java b/v1_16_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_16_R3/NMSAlgorithmsImpl.java index ec8d528b4..7e4f64828 100644 --- a/v1_16_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_16_R3/NMSAlgorithmsImpl.java +++ b/v1_16_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_16_R3/NMSAlgorithmsImpl.java @@ -34,6 +34,7 @@ import org.bukkit.inventory.meta.PotionMeta; import org.bukkit.potion.PotionEffect; +import javax.annotation.Nullable; import java.util.EnumMap; import java.util.function.BiFunction; @@ -57,9 +58,10 @@ public NMSAlgorithmsImpl(SuperiorSkyblockPlugin plugin) { this.plugin = plugin; } + @Nullable @Override - public boolean isMappingsSupported() { - return true; + public String getMappingsHash() { + return null; } @Override diff --git a/v1_17_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_17_R1/NMSAlgorithmsImpl.java b/v1_17_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_17_R1/NMSAlgorithmsImpl.java index a8b0aac7a..392c4ed82 100644 --- a/v1_17_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_17_R1/NMSAlgorithmsImpl.java +++ b/v1_17_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_17_R1/NMSAlgorithmsImpl.java @@ -51,8 +51,6 @@ public class NMSAlgorithmsImpl implements NMSAlgorithms { MENUS_HOLDER_CREATORS.put(InventoryType.SMOKER, MenuTileEntityFurnace::new); } - private static final String BUILT_AGAINST_MAPPING = "acd6e6c27e5a0a9440afba70a96c27c9"; - private final SuperiorSkyblockPlugin plugin; public NMSAlgorithmsImpl(SuperiorSkyblockPlugin plugin) { @@ -60,8 +58,8 @@ public NMSAlgorithmsImpl(SuperiorSkyblockPlugin plugin) { } @Override - public boolean isMappingsSupported() { - return ((CraftMagicNumbers) CraftMagicNumbers.INSTANCE).getMappingsVersion().equals(BUILT_AGAINST_MAPPING); + public String getMappingsHash() { + return ((CraftMagicNumbers) CraftMagicNumbers.INSTANCE).getMappingsVersion(); } @Override diff --git a/v1_18_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_18_R1/NMSAlgorithmsImpl.java b/v1_18_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_18_R1/NMSAlgorithmsImpl.java index 45be8ecb6..2bbf14c72 100644 --- a/v1_18_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_18_R1/NMSAlgorithmsImpl.java +++ b/v1_18_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_18_R1/NMSAlgorithmsImpl.java @@ -51,8 +51,6 @@ public final class NMSAlgorithmsImpl implements NMSAlgorithms { MENUS_HOLDER_CREATORS.put(InventoryType.SMOKER, MenuTileEntityFurnace::new); } - private static final String BUILT_AGAINST_MAPPING = "20b026e774dbf715e40a0b2afe114792"; - private final SuperiorSkyblockPlugin plugin; public NMSAlgorithmsImpl(SuperiorSkyblockPlugin plugin) { @@ -60,8 +58,8 @@ public NMSAlgorithmsImpl(SuperiorSkyblockPlugin plugin) { } @Override - public boolean isMappingsSupported() { - return ((CraftMagicNumbers) CraftMagicNumbers.INSTANCE).getMappingsVersion().equals(BUILT_AGAINST_MAPPING); + public String getMappingsHash() { + return ((CraftMagicNumbers) CraftMagicNumbers.INSTANCE).getMappingsVersion(); } @Override diff --git a/v1_18_R2/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_18_R2/NMSAlgorithmsImpl.java b/v1_18_R2/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_18_R2/NMSAlgorithmsImpl.java index 93461b1ba..6619f875b 100644 --- a/v1_18_R2/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_18_R2/NMSAlgorithmsImpl.java +++ b/v1_18_R2/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_18_R2/NMSAlgorithmsImpl.java @@ -51,8 +51,6 @@ public final class NMSAlgorithmsImpl implements NMSAlgorithms { MENUS_HOLDER_CREATORS.put(InventoryType.SMOKER, MenuTileEntityFurnace::new); } - private static final String BUILT_AGAINST_MAPPING = "eaeedbff51b16ead3170906872fda334"; - private final SuperiorSkyblockPlugin plugin; public NMSAlgorithmsImpl(SuperiorSkyblockPlugin plugin) { @@ -60,8 +58,8 @@ public NMSAlgorithmsImpl(SuperiorSkyblockPlugin plugin) { } @Override - public boolean isMappingsSupported() { - return ((CraftMagicNumbers) CraftMagicNumbers.INSTANCE).getMappingsVersion().equals(BUILT_AGAINST_MAPPING); + public String getMappingsHash() { + return ((CraftMagicNumbers) CraftMagicNumbers.INSTANCE).getMappingsVersion(); } @Override diff --git a/v1_19_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_19_R1/NMSAlgorithmsImpl.java b/v1_19_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_19_R1/NMSAlgorithmsImpl.java index 2a1372e78..adf64873b 100644 --- a/v1_19_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_19_R1/NMSAlgorithmsImpl.java +++ b/v1_19_R1/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_19_R1/NMSAlgorithmsImpl.java @@ -51,8 +51,6 @@ public final class NMSAlgorithmsImpl implements NMSAlgorithms { MENUS_HOLDER_CREATORS.put(InventoryType.SMOKER, MenuTileEntityFurnace::new); } - private static final String BUILT_AGAINST_MAPPING = "4cc0cc97cac491651bff3af8b124a214"; - private final SuperiorSkyblockPlugin plugin; public NMSAlgorithmsImpl(SuperiorSkyblockPlugin plugin) { @@ -60,8 +58,8 @@ public NMSAlgorithmsImpl(SuperiorSkyblockPlugin plugin) { } @Override - public boolean isMappingsSupported() { - return ((CraftMagicNumbers) CraftMagicNumbers.INSTANCE).getMappingsVersion().equals(BUILT_AGAINST_MAPPING); + public String getMappingsHash() { + return ((CraftMagicNumbers) CraftMagicNumbers.INSTANCE).getMappingsVersion(); } @Override diff --git a/v1_8_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_8_R3/NMSAlgorithmsImpl.java b/v1_8_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_8_R3/NMSAlgorithmsImpl.java index 7a56c384e..1b65e00d1 100644 --- a/v1_8_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_8_R3/NMSAlgorithmsImpl.java +++ b/v1_8_R3/src/main/java/com/bgsoftware/superiorskyblock/nms/v1_8_R3/NMSAlgorithmsImpl.java @@ -29,6 +29,8 @@ import org.bukkit.material.MaterialData; import org.bukkit.potion.PotionEffect; +import javax.annotation.Nullable; + public class NMSAlgorithmsImpl implements NMSAlgorithms { private final SuperiorSkyblockPlugin plugin; @@ -37,9 +39,10 @@ public NMSAlgorithmsImpl(SuperiorSkyblockPlugin plugin) { this.plugin = plugin; } + @Nullable @Override - public boolean isMappingsSupported() { - return true; + public String getMappingsHash() { + return null; } @Override