diff --git a/bukkit/src/main/java/net/william278/husksync/BukkitHuskSync.java b/bukkit/src/main/java/net/william278/husksync/BukkitHuskSync.java index d1450833..77f980b7 100644 --- a/bukkit/src/main/java/net/william278/husksync/BukkitHuskSync.java +++ b/bukkit/src/main/java/net/william278/husksync/BukkitHuskSync.java @@ -24,7 +24,6 @@ import com.google.common.collect.Maps; import com.google.common.collect.Sets; import com.google.gson.Gson; import de.tr7zw.changeme.nbtapi.NBT; -import de.tr7zw.changeme.nbtapi.utils.DataFixerUtil; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; @@ -49,6 +48,7 @@ import net.william278.husksync.event.BukkitEventDispatcher; import net.william278.husksync.hook.PlanHook; import net.william278.husksync.listener.BukkitEventListener; import net.william278.husksync.listener.LockedHandler; +import net.william278.husksync.maps.BukkitMapHandler; import net.william278.husksync.migrator.LegacyMigrator; import net.william278.husksync.migrator.Migrator; import net.william278.husksync.migrator.MpdbMigrator; @@ -57,7 +57,6 @@ import net.william278.husksync.sync.DataSyncer; import net.william278.husksync.user.BukkitUser; import net.william278.husksync.user.OnlineUser; import net.william278.husksync.util.BukkitLegacyConverter; -import net.william278.husksync.maps.BukkitMapHandler; import net.william278.husksync.util.BukkitTask; import net.william278.husksync.util.LegacyConverter; import net.william278.toilet.BukkitToilet; @@ -344,26 +343,6 @@ public class BukkitHuskSync extends JavaPlugin implements HuskSync, BukkitTask.S return Version.fromString(getServer().getBukkitVersion()); } - // Note: The actual mapping version number of NBT-API.DataFixerUtil may not always match the Minecraft version - public int getDataVersion(@NotNull Version mcVersion) { - return switch (mcVersion.toStringWithoutMetadata()) { - case "1.16", "1.16.1", "1.16.2", "1.16.3", "1.16.4", "1.16.5" -> DataFixerUtil.VERSION1_16_5; - case "1.17", "1.17.1" -> DataFixerUtil.VERSION1_17_1; - case "1.18", "1.18.1", "1.18.2" -> DataFixerUtil.VERSION1_18_2; - case "1.19", "1.19.1", "1.19.2" -> DataFixerUtil.VERSION1_19_2; - case "1.20", "1.20.1", "1.20.2" -> DataFixerUtil.VERSION1_20_2; - case "1.20.3", "1.20.4" -> DataFixerUtil.VERSION1_20_4; - case "1.20.5", "1.20.6" -> DataFixerUtil.VERSION1_20_5; - case "1.21", "1.21.1" -> DataFixerUtil.VERSION1_21; - case "1.21.2" -> DataFixerUtil.VERSION1_21_2; - case "1.21.3" -> DataFixerUtil.VERSION1_21_2; - case "1.21.4" -> DataFixerUtil.VERSION1_21_3; - case "1.21.5" -> DataFixerUtil.VERSION1_21_4; - case "1.21.6" -> 4435; - default -> DataFixerUtil.getCurrentVersion(); - }; - } - @NotNull @Override public String getPlatformType() { diff --git a/bukkit/src/main/java/net/william278/husksync/maps/BukkitMapHandler.java b/bukkit/src/main/java/net/william278/husksync/maps/BukkitMapHandler.java index 70a3eac6..b2c91f66 100644 --- a/bukkit/src/main/java/net/william278/husksync/maps/BukkitMapHandler.java +++ b/bukkit/src/main/java/net/william278/husksync/maps/BukkitMapHandler.java @@ -47,8 +47,8 @@ import java.awt.*; import java.io.File; import java.io.IOException; import java.nio.file.Path; -import java.util.List; import java.util.*; +import java.util.List; import java.util.function.Function; import java.util.logging.Level; diff --git a/common/src/main/java/net/william278/husksync/HuskSync.java b/common/src/main/java/net/william278/husksync/HuskSync.java index ef67385f..963c2794 100644 --- a/common/src/main/java/net/william278/husksync/HuskSync.java +++ b/common/src/main/java/net/william278/husksync/HuskSync.java @@ -41,10 +41,7 @@ import net.william278.husksync.redis.RedisManager; import net.william278.husksync.sync.DataSyncer; import net.william278.husksync.user.ConsoleUser; import net.william278.husksync.user.OnlineUser; -import net.william278.husksync.util.CompatibilityChecker; -import net.william278.husksync.util.DumpProvider; -import net.william278.husksync.util.LegacyConverter; -import net.william278.husksync.util.Task; +import net.william278.husksync.util.*; import net.william278.uniform.Uniform; import org.jetbrains.annotations.NotNull; @@ -57,7 +54,7 @@ import java.util.logging.Level; * Abstract implementation of the HuskSync plugin. */ public interface HuskSync extends Task.Supplier, EventDispatcher, ConfigProvider, SerializerRegistry, - CompatibilityChecker, DumpProvider { + CompatibilityChecker, DumpProvider, DataVersionSupplier { int SPIGOT_RESOURCE_ID = 97144; @@ -252,14 +249,6 @@ public interface HuskSync extends Task.Supplier, EventDispatcher, ConfigProvider @NotNull Version getMinecraftVersion(); - /** - * Returns the data version for a Minecraft version - * - * @param minecraftVersion the Minecraft version - * @return the data version int - */ - int getDataVersion(@NotNull Version minecraftVersion); - /** * Returns the platform type * diff --git a/common/src/main/java/net/william278/husksync/util/DataVersionSupplier.java b/common/src/main/java/net/william278/husksync/util/DataVersionSupplier.java new file mode 100644 index 00000000..c8b384a5 --- /dev/null +++ b/common/src/main/java/net/william278/husksync/util/DataVersionSupplier.java @@ -0,0 +1,75 @@ +/* + * This file is part of HuskSync, licensed under the Apache License 2.0. + * + * Copyright (c) William278 + * Copyright (c) contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.william278.husksync.util; + +import net.william278.desertwell.util.Version; +import net.william278.husksync.HuskSync; +import org.jetbrains.annotations.NotNull; + +public interface DataVersionSupplier { + + int VERSION1_16_5 = 2586; + int VERSION1_17_1 = 2730; + int VERSION1_18_2 = 2975; + int VERSION1_19_2 = 3120; + int VERSION1_19_4 = 3337; + int VERSION1_20_1 = 3465; + int VERSION1_20_2 = 3578; + int VERSION1_20_4 = 3700; + int VERSION1_20_5 = 3837; + int VERSION1_21_1 = 3955; + int VERSION1_21_3 = 4082; + int VERSION1_21_4 = 4189; + int VERSION1_21_5 = 4323; + int VERSION1_21_6 = 4435; + int VERSION1_21_7 = 4438; + int VERSION1_21_8 = 4438; + + /** + * Returns the data version for a Minecraft version + * + * @param mcVersion the Minecraft version + * @return the data version int + */ + default int getDataVersion(@NotNull Version mcVersion) { + return switch (mcVersion.toStringWithoutMetadata()) { + case "1.16", "1.16.1", "1.16.2", "1.16.3", "1.16.4", "1.16.5" -> VERSION1_16_5; + case "1.17", "1.17.1" -> VERSION1_17_1; + case "1.18", "1.18.1", "1.18.2" -> VERSION1_18_2; + case "1.19", "1.19.1", "1.19.2" -> VERSION1_19_2; + case "1.19.4" -> VERSION1_19_4; + case "1.20", "1.20.1" -> VERSION1_20_1; + case "1.20.2" -> VERSION1_20_2; + case "1.20.4" -> VERSION1_20_4; + case "1.20.5", "1.20.6" -> VERSION1_20_5; + case "1.21", "1.21.1" -> VERSION1_21_1; + case "1.21.2", "1.21.3" -> VERSION1_21_3; + case "1.21.4" -> VERSION1_21_4; + case "1.21.5" -> VERSION1_21_5; + case "1.21.6" -> VERSION1_21_6; + case "1.21.7" -> VERSION1_21_7; + default -> VERSION1_21_8; // Latest supported version + }; + } + + @NotNull + HuskSync getPlugin(); + +} diff --git a/fabric/src/main/java/net/william278/husksync/FabricHuskSync.java b/fabric/src/main/java/net/william278/husksync/FabricHuskSync.java index 8904b35b..791f3b91 100644 --- a/fabric/src/main/java/net/william278/husksync/FabricHuskSync.java +++ b/fabric/src/main/java/net/william278/husksync/FabricHuskSync.java @@ -88,22 +88,6 @@ public class FabricHuskSync implements DedicatedServerModInitializer, HuskSync, private static final String PLATFORM_TYPE_ID = "fabric"; - private static final int VERSION1_16_5 = 2586; - private static final int VERSION1_17_1 = 2730; - private static final int VERSION1_18_2 = 2975; - private static final int VERSION1_19_2 = 3120; - private static final int VERSION1_19_4 = 3337; - private static final int VERSION1_20_1 = 3465; - private static final int VERSION1_20_2 = 3578; - private static final int VERSION1_20_4 = 3700; - private static final int VERSION1_20_5 = 3837; - private static final int VERSION1_21_1 = 3955; - private static final int VERSION1_21_3 = 4082; - private static final int VERSION1_21_4 = 4189; - private static final int VERSION1_21_5 = 4323; - private static final int VERSION1_21_6 = 4435; - private static final int VERSION1_21_7 = 4438; - private final HashMap> serializers = Maps.newHashMap(); private final Map> playerCustomDataStore = Maps.newConcurrentMap(); private final Map permissions = Maps.newHashMap(); @@ -374,37 +358,6 @@ public class FabricHuskSync implements DedicatedServerModInitializer, HuskSync, return Version.fromString(minecraftServer.getVersion()); } - public int getDataVersion(@NotNull Version mcVersion) { - return switch (mcVersion.toStringWithoutMetadata()) { - case "1.16", "1.16.1", "1.16.2", "1.16.3", "1.16.4", "1.16.5" -> VERSION1_16_5; - case "1.17", "1.17.1" -> VERSION1_17_1; - case "1.18", "1.18.1", "1.18.2" -> VERSION1_18_2; - case "1.19", "1.19.1", "1.19.2" -> VERSION1_19_2; - case "1.19.4" -> VERSION1_19_4; - case "1.20", "1.20.1" -> VERSION1_20_1; - case "1.20.2" -> VERSION1_20_2; - case "1.20.4" -> VERSION1_20_4; - case "1.20.5", "1.20.6" -> VERSION1_20_5; - case "1.21", "1.21.1" -> VERSION1_21_1; - case "1.21.2", "1.21.3" -> VERSION1_21_3; - case "1.21.4" -> VERSION1_21_4; - case "1.21.5" -> VERSION1_21_5; - case "1.21.6" -> VERSION1_21_6; - case "1.21.7" -> VERSION1_21_7; - //#if MC==12108 - default -> VERSION1_21_7; - //#elseif MC==12105 - //$$ default -> VERSION1_21_5; - //#elseif MC==12104 - //$$ default -> VERSION1_21_4; - //#elseif MC==12101 - //$$ default -> VERSION1_21_1; - //#elseif MC==12001 - //$$ default -> VERSION1_20_1; - //#endif - }; - } - @NotNull @Override public String getPlatformType() {