diff --git a/bukkit/src/main/java/net/william278/husksync/BukkitHuskSync.java b/bukkit/src/main/java/net/william278/husksync/BukkitHuskSync.java index 1079bce5..9666d24c 100644 --- a/bukkit/src/main/java/net/william278/husksync/BukkitHuskSync.java +++ b/bukkit/src/main/java/net/william278/husksync/BukkitHuskSync.java @@ -93,9 +93,7 @@ public class BukkitHuskSync extends JavaPlugin implements HuskSync, BukkitTask.S private static final int METRICS_ID = 13140; private static final String PLATFORM_TYPE_ID = "bukkit"; - private final TreeMap> serializers = Maps.newTreeMap( - SerializerRegistry.DEPENDENCY_ORDER_COMPARATOR - ); + private final HashMap> serializers = Maps.newHashMap(); private final Map> playerCustomDataStore = Maps.newConcurrentMap(); private final Map mapViews = Maps.newConcurrentMap(); private final List availableMigrators = Lists.newArrayList(); diff --git a/common/src/main/java/net/william278/husksync/data/SerializerRegistry.java b/common/src/main/java/net/william278/husksync/data/SerializerRegistry.java index 32e46a21..92ef321a 100644 --- a/common/src/main/java/net/william278/husksync/data/SerializerRegistry.java +++ b/common/src/main/java/net/william278/husksync/data/SerializerRegistry.java @@ -26,6 +26,7 @@ import org.jetbrains.annotations.NotNull; import java.util.*; import java.util.logging.Level; +import java.util.stream.Collectors; public interface SerializerRegistry { @@ -40,7 +41,7 @@ public interface SerializerRegistry { * @since 3.0 */ @NotNull - TreeMap> getSerializers(); + Map> getSerializers(); /** * Register a data serializer for the given {@link Identifier} @@ -87,8 +88,7 @@ public interface SerializerRegistry { * @since 3.0 */ default Optional getIdentifier(@NotNull String key) { - return getSerializers().keySet().stream() - .filter(id -> id.getKey().asString().equals(key)).findFirst(); + return getSerializers().keySet().stream().filter(e -> e.toString().equals(key)).findFirst(); } /** @@ -99,9 +99,7 @@ public interface SerializerRegistry { * @since 3.5.4 */ default Optional> getSerializer(@NotNull Identifier identifier) { - return getSerializers().entrySet().stream() - .filter(entry -> entry.getKey().getKey().equals(identifier.getKey())) - .map(Map.Entry::getValue).findFirst(); + return Optional.ofNullable(getSerializers().get(identifier)); } /** @@ -153,14 +151,14 @@ public interface SerializerRegistry { } /** - * Get the set of registered data types + * Get the list of registered data types, in dependency order * - * @return the set of registered data types + * @return the list of registered data types * @since 3.0 */ @NotNull - default Set getRegisteredDataTypes() { - return getSerializers().keySet(); + default List getRegisteredDataTypes() { + return getSerializers().keySet().stream().sorted(DEPENDENCY_ORDER_COMPARATOR).toList(); } // Returns if a data type is available and enabled in the config diff --git a/fabric/src/main/java/net/william278/husksync/FabricHuskSync.java b/fabric/src/main/java/net/william278/husksync/FabricHuskSync.java index 49a4de24..2e3a0082 100644 --- a/fabric/src/main/java/net/william278/husksync/FabricHuskSync.java +++ b/fabric/src/main/java/net/william278/husksync/FabricHuskSync.java @@ -102,9 +102,7 @@ public class FabricHuskSync implements DedicatedServerModInitializer, HuskSync, private static final int VERSION1_21_4 = 4189; // Current private static final int VERSION1_21_5 = 4323; - private final TreeMap> serializers = Maps.newTreeMap( - SerializerRegistry.DEPENDENCY_ORDER_COMPARATOR - ); + private final HashMap> serializers = Maps.newHashMap(); private final Map> playerCustomDataStore = Maps.newConcurrentMap(); private final Map permissions = Maps.newHashMap(); private final List availableMigrators = Lists.newArrayList(); diff --git a/fabric/src/main/java/net/william278/husksync/data/FabricData.java b/fabric/src/main/java/net/william278/husksync/data/FabricData.java index ceeb2ad2..95d5eee3 100644 --- a/fabric/src/main/java/net/william278/husksync/data/FabricData.java +++ b/fabric/src/main/java/net/william278/husksync/data/FabricData.java @@ -49,7 +49,6 @@ import net.minecraft.stat.StatType; import net.minecraft.stat.Stats; import net.minecraft.text.Text; import net.minecraft.util.Identifier; -import net.minecraft.world.GameMode; import net.william278.desertwell.util.ThrowingConsumer; import net.william278.husksync.FabricHuskSync; import net.william278.husksync.HuskSync; @@ -557,13 +556,13 @@ public abstract class FabricData implements Data { // This is necessary to prevent weird re-mappings with Registry#getKey() //#if MC>0 //$$ final Registry registry = stat.getValue().getRegistry(); - //$$ final String registryId = registry.getKey().getValue().toString(); + //$$ final String registryId = registry.getKey().getValue().value(); //$$ if (registryId.equals("custom_stat")) { //$$ return; //$$ } //#else final Registry registry = stat.getValue().getRegistry(); - final String registryId = registry.getKey().getValue().toString(); + final String registryId = registry.getKey().getValue().value(); if (registryId.equals("custom_stat")) { return; } diff --git a/fabric/src/main/java/net/william278/husksync/data/FabricUserDataHolder.java b/fabric/src/main/java/net/william278/husksync/data/FabricUserDataHolder.java index f5fca287..7f90a403 100644 --- a/fabric/src/main/java/net/william278/husksync/data/FabricUserDataHolder.java +++ b/fabric/src/main/java/net/william278/husksync/data/FabricUserDataHolder.java @@ -108,8 +108,8 @@ public interface FabricUserDataHolder extends UserDataHolder { //#else final ItemStack[] combined = new ItemStack[inv.size()]; int slot = 0; - while (inv.iterator().hasNext()) { - combined[slot] = inv.iterator().next(); + for (ItemStack itemStack : inv) { + combined[slot] = itemStack; slot++; } return combined;