From 36161a1f49b71226832cad4088d84279d6637a72 Mon Sep 17 00:00:00 2001 From: "Blue (Lukas Rieger)" Date: Tue, 25 Aug 2020 18:05:25 +0200 Subject: [PATCH] Fixes and tweaks after testing --- .github/workflows/gradle.yml | 7 +---- .../bluemap/common/BlueMapService.java | 4 +-- .../bluemap/common/plugin/Plugin.java | 27 ++++++++++--------- .../bluemap/core/MinecraftVersion.java | 2 +- .../bluemap/core/config/ConfigManager.java | 8 +++--- .../hires/blockmodel/LiquidModelBuilder.java | 1 + gradle.properties | 2 +- implementations/spigot/build.gradle | 4 +-- .../bluemap/bukkit/BukkitPlugin.java | 11 ++++++-- .../spigot/src/main/resources/plugin.yml | 2 +- 10 files changed, 37 insertions(+), 31 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 1d7253da..ef336c65 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -4,9 +4,6 @@ on: push: branches: - master - - mc/1.12 - - mc/1.13 - - mc/1.15 jobs: build: @@ -19,10 +16,8 @@ jobs: uses: actions/setup-java@v1 with: java-version: 1.8 - - name: Test with Gradle - run: ./gradlew test - name: Build with Gradle - run: ./gradlew build + run: ./gradlew clean test build - uses: actions/upload-artifact@v2 with: name: artifact diff --git a/BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/BlueMapService.java b/BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/BlueMapService.java index 84fcd4e5..ddb21bb7 100644 --- a/BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/BlueMapService.java +++ b/BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/BlueMapService.java @@ -221,7 +221,7 @@ public class BlueMapService { public synchronized ResourcePack getResourcePack() throws IOException, MissingResourcesException { if (resourcePack == null) { File defaultResourceFile = new File(getCoreConfig().getDataFolder(), "minecraft-client-" + minecraftVersion.getVersionString() + ".jar"); - File resourceExtensionsFile = new File(getCoreConfig().getDataFolder(), minecraftVersion.getResourcePrefix() + File.separator + "resourceExtensions.zip"); + File resourceExtensionsFile = new File(getCoreConfig().getDataFolder(), "resourceExtensions.zip"); File textureExportFile = new File(getRenderConfig().getWebRoot(), "data" + File.separator + "textures.json"); @@ -244,7 +244,7 @@ public class BlueMapService { Logger.global.logInfo("Loading resources..."); resourceExtensionsFile.delete(); - FileUtils.copyURLToFile(Plugin.class.getResource("/de/bluecolored/bluemap/resourceExtensions.zip"), resourceExtensionsFile, 10000, 10000); + FileUtils.copyURLToFile(Plugin.class.getResource("/de/bluecolored/bluemap/" + minecraftVersion.getResourcePrefix() + "/resourceExtensions.zip"), resourceExtensionsFile, 10000, 10000); //find more resource packs File resourcePackFolder = new File(configFolder, "resourcepacks"); diff --git a/BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/plugin/Plugin.java b/BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/plugin/Plugin.java index d78a3c15..ef7e9a24 100644 --- a/BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/plugin/Plugin.java +++ b/BlueMapCommon/src/main/java/de/bluecolored/bluemap/common/plugin/Plugin.java @@ -94,26 +94,29 @@ public class Plugin { public synchronized void load() throws IOException, ParseResourceException { if (loaded) return; unload(); //ensure nothing is left running (from a failed load or something) - - blueMap = new BlueMapService(minecraftVersion, serverInterface); + blueMap = new BlueMapService(minecraftVersion, serverInterface); + //load configs CoreConfig coreConfig = blueMap.getCoreConfig(); RenderConfig renderConfig = blueMap.getRenderConfig(); WebServerConfig webServerConfig = blueMap.getWebServerConfig(); - //load plugin config - pluginConfig = new PluginConfig(blueMap.getConfigManager().loadOrCreate( - new File(serverInterface.getConfigFolder(), "plugin.conf"), - Plugin.class.getResource("/plugin.conf"), - Plugin.class.getResource("/plugin-defaults.conf"), - true, - true - )); - //try load resources try { - blueMap.getResourcePack(); + + //load plugin config + pluginConfig = new PluginConfig(blueMap.getConfigManager().loadOrCreate( + new File(serverInterface.getConfigFolder(), "plugin.conf"), + Plugin.class.getResource("/plugin.conf"), + Plugin.class.getResource("/plugin-defaults.conf"), + true, + true + )); + + //make sure resources are loaded + getResourcePack(); + } catch (MissingResourcesException ex) { Logger.global.logWarning("BlueMap is missing important resources!"); Logger.global.logWarning("You need to accept the download of the required files in order of BlueMap to work!"); diff --git a/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/MinecraftVersion.java b/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/MinecraftVersion.java index de85c64c..29e70cb0 100644 --- a/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/MinecraftVersion.java +++ b/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/MinecraftVersion.java @@ -35,7 +35,7 @@ public enum MinecraftVersion { MC_1_15 ("1.15", "mc1_15", "https://launcher.mojang.com/v1/objects/e3f78cd16f9eb9a52307ed96ebec64241cc5b32d/client.jar"), MC_1_16 ("1.16", "mc1_16", "https://launcher.mojang.com/v1/objects/653e97a2d1d76f87653f02242d243cdee48a5144/client.jar"); - private static final Pattern VERSION_REGEX = Pattern.compile("(?:(?'major'\\d+)\\.(?'minor'\\d+))(?:\\.(?'patch'\\d+))?(?:\\-(?:pre|rc)\\d+)?"); + private static final Pattern VERSION_REGEX = Pattern.compile("(?:(?\\d+)\\.(?\\d+))(?:\\.(?\\d+))?(?:\\-(?:pre|rc)\\d+)?"); private final String versionString; private final String resourcePrefix; diff --git a/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/config/ConfigManager.java b/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/config/ConfigManager.java index d5009fd4..6aeaaee2 100644 --- a/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/config/ConfigManager.java +++ b/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/config/ConfigManager.java @@ -123,7 +123,7 @@ public class ConfigManager { public void loadResourceConfigs(File configFolder, ResourcePack resourcePack) throws IOException { //load blockColors.json from resources, config-folder and resourcepack - URL blockColorsConfigUrl = BlueMap.class.getResource("/de/bluecolored/bluemap/blockColors.json"); + URL blockColorsConfigUrl = BlueMap.class.getResource("/de/bluecolored/bluemap/" + resourcePack.getMinecraftVersion().getResourcePrefix() + "/blockColors.json"); File blockColorsConfigFile = new File(configFolder, "blockColors.json"); ConfigurationNode blockColorsConfigNode = loadOrCreate( blockColorsConfigFile, @@ -136,7 +136,7 @@ public class ConfigManager { resourcePack.getBlockColorCalculator().loadColorConfig(blockColorsConfigNode); //load blockIds.json from resources, config-folder and resourcepack - URL blockIdsConfigUrl = BlueMap.class.getResource("/de/bluecolored/bluemap/blockIds.json"); + URL blockIdsConfigUrl = BlueMap.class.getResource("/de/bluecolored/bluemap/" + resourcePack.getMinecraftVersion().getResourcePrefix() + "/blockIds.json"); File blockIdsConfigFile = new File(configFolder, "blockIds.json"); ConfigurationNode blockIdsConfigNode = loadOrCreate( blockIdsConfigFile, @@ -152,7 +152,7 @@ public class ConfigManager { ); //load blockProperties.json from resources, config-folder and resourcepack - URL blockPropertiesConfigUrl = BlueMap.class.getResource("/de/bluecolored/bluemap/blockProperties.json"); + URL blockPropertiesConfigUrl = BlueMap.class.getResource("/de/bluecolored/bluemap/" + resourcePack.getMinecraftVersion().getResourcePrefix() + "/blockProperties.json"); File blockPropertiesConfigFile = new File(configFolder, "blockProperties.json"); ConfigurationNode blockPropertiesConfigNode = loadOrCreate( blockPropertiesConfigFile, @@ -169,7 +169,7 @@ public class ConfigManager { ); //load biomes.json from resources, config-folder and resourcepack - URL biomeConfigUrl = BlueMap.class.getResource("/de/bluecolored/bluemap/biomes.json"); + URL biomeConfigUrl = BlueMap.class.getResource("/de/bluecolored/bluemap/" + resourcePack.getMinecraftVersion().getResourcePrefix() + "/biomes.json"); File biomeConfigFile = new File(configFolder, "biomes.json"); ConfigurationNode biomeConfigNode = loadOrCreate( biomeConfigFile, diff --git a/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/render/hires/blockmodel/LiquidModelBuilder.java b/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/render/hires/blockmodel/LiquidModelBuilder.java index 7c15a2f6..82c5fd5a 100644 --- a/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/render/hires/blockmodel/LiquidModelBuilder.java +++ b/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/render/hires/blockmodel/LiquidModelBuilder.java @@ -65,6 +65,7 @@ public class LiquidModelBuilder { public LiquidModelBuilder(Block block, BlockState liquidBlockState, MinecraftVersion minecraftVersion, RenderSettings renderSettings, BlockColorCalculator colorCalculator) { this.block = block; + this.minecraftVersion = minecraftVersion; this.renderSettings = renderSettings; this.liquidBlockState = liquidBlockState; this.colorCalculator = colorCalculator; diff --git a/gradle.properties b/gradle.properties index dd0149c1..6d021991 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.jvmargs=-Xmx3G org.gradle.daemon=false -coreVersion=1.0.0-RC1 +coreVersion=1.0.0-rc1 diff --git a/implementations/spigot/build.gradle b/implementations/spigot/build.gradle index dec76389..e6fb20ef 100644 --- a/implementations/spigot/build.gradle +++ b/implementations/spigot/build.gradle @@ -9,7 +9,7 @@ repositories { } dependencies { - shadow "org.spigotmc:spigot-api:1.16.2-R0.1-SNAPSHOT" + shadow "org.spigotmc:spigot-api:1.13-R0.1-SNAPSHOT" compile group: 'org.bstats', name: 'bstats-bukkit-lite', version: '1.5' @@ -23,7 +23,7 @@ dependencies { build.dependsOn shadowJar { destinationDir = file '../../build/release' - archiveFileName = "BlueMap-${version}-spigot-1.16.2.jar" + archiveFileName = "BlueMap-${version}-spigot.jar" //relocate 'com.flowpowered.math', 'de.bluecolored.shadow.flowpowered.math' //DON'T relocate this, because the API depends on it relocate 'com.typesafe.config', 'de.bluecolored.shadow.typesafe.config' diff --git a/implementations/spigot/src/main/java/de/bluecolored/bluemap/bukkit/BukkitPlugin.java b/implementations/spigot/src/main/java/de/bluecolored/bluemap/bukkit/BukkitPlugin.java index bac3c503..bf1bc9c5 100644 --- a/implementations/spigot/src/main/java/de/bluecolored/bluemap/bukkit/BukkitPlugin.java +++ b/implementations/spigot/src/main/java/de/bluecolored/bluemap/bukkit/BukkitPlugin.java @@ -38,6 +38,8 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import org.bstats.bukkit.MetricsLite; import org.bukkit.Bukkit; @@ -75,10 +77,15 @@ public class BukkitPlugin extends JavaPlugin implements ServerInterface, Listene Logger.global = new JavaLogger(getLogger()); MinecraftVersion version = MinecraftVersion.getLatest(); + + //try to get best matching minecraft-version try { - version = MinecraftVersion.fromVersionString(Bukkit.getVersion()); + String versionString = getServer().getBukkitVersion(); + Matcher versionMatcher = Pattern.compile("(\\d+\\.\\d+\\.\\d+)[-_].*").matcher(versionString); + if (!versionMatcher.matches()) throw new IllegalArgumentException(); + version = MinecraftVersion.fromVersionString(versionMatcher.group(1)); } catch (IllegalArgumentException e) { - Logger.global.logWarning("Failed to find a matching version for version-string '" + Bukkit.getVersion() + "'! Using latest version: " + version.getVersionString()); + Logger.global.logWarning("Failed to detect the minecraft version of this server! Using latest version: " + version.getVersionString()); } this.onlinePlayerMap = new ConcurrentHashMap<>(); diff --git a/implementations/spigot/src/main/resources/plugin.yml b/implementations/spigot/src/main/resources/plugin.yml index b8f69145..0db125e0 100644 --- a/implementations/spigot/src/main/resources/plugin.yml +++ b/implementations/spigot/src/main/resources/plugin.yml @@ -2,7 +2,7 @@ name: BlueMap description: "A 3d-map of your Minecraft worlds view-able in your browser using three.js (WebGL)" main: de.bluecolored.bluemap.bukkit.BukkitPlugin version: ${version} -api-version: 1.16 +api-version: 1.13 author: "Blue (TBlueF / Lukas Rieger)" website: "https://github.com/BlueMap-Minecraft" commands: