From aed72ba0b54432198ff4d8b389b28e912d72fa68 Mon Sep 17 00:00:00 2001 From: Space Walker Date: Thu, 5 Nov 2026 17:01:47 +0100 Subject: [PATCH 1/3] [registries] switch to using Conditional Mixin --- .../impl/RegistriesMixinPlugin.java | 49 ---------- .../mixin/client/IntegratedServerMixin.java | 4 + .../main/resources/osl.registries.mixins.json | 2 +- .../registries/impl/RegistriesEntrypoint.java | 3 + .../impl/RegistriesMixinPlugin.java | 55 ------------ ...udeIncrementalIntIdentityHashMapMixin.java | 23 ++++- ...ementalIntIdentityHashMapMixin_14w25a.java | 26 ------ ...alIntIdentityHashMapMixin_1_7_10_pre3.java | 26 ------ .../main/resources/osl.registries.mixins.json | 4 +- .../registries/impl/RegistriesEntrypoint.java | 4 + .../impl/RegistriesMixinPlugin.java | 58 ------------ ...udeIncrementalIntIdentityHashMapMixin.java | 55 ++++++++++++ ...IncrementalIntIdentityHashMapMixinNew.java | 33 ------- ...IncrementalIntIdentityHashMapMixinOld.java | 26 ------ .../mixin/common/Id2ObjectBiMapMixin.java | 4 + .../main/resources/osl.registries.mixins.json | 5 +- .../registries/impl/RegistriesEntrypoint.java | 5 ++ .../impl/RegistriesMixinPlugin.java | 75 ---------------- .../impl/access/WorldStorageAccess.java | 6 +- .../impl/mixin/client/MinecraftMixin.java | 82 +++++++++++++++++ .../impl/mixin/client/MinecraftMixinNew.java | 65 -------------- .../impl/mixin/client/MinecraftMixinOld.java | 42 --------- .../impl/mixin/client/WorldAccessNew.java | 15 ---- .../mixin/common/AlphaWorldStorageMixin.java | 15 ++-- .../impl/mixin/common/WorldAccess.java | 29 ++++++ .../impl/mixin/common/WorldAccessOld.java | 16 ---- .../impl/mixin/common/WorldMixin.java | 64 +++++++++++++ .../impl/mixin/common/WorldMixinNew.java | 36 -------- .../impl/mixin/common/WorldMixinOld.java | 36 -------- .../mixin/server/MinecraftServerMixin.java | 89 +++++++++++++++++++ .../mixin/server/MinecraftServerMixinNew.java | 68 -------------- .../server/MinecraftServerMixinNewNew.java | 68 -------------- .../mixin/server/MinecraftServerMixinOld.java | 40 --------- .../main/resources/osl.registries.mixins.json | 14 +-- 34 files changed, 376 insertions(+), 766 deletions(-) delete mode 100644 libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/RegistriesMixinPlugin.java delete mode 100644 libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/RegistriesMixinPlugin.java delete mode 100644 libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin_14w25a.java delete mode 100644 libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin_1_7_10_pre3.java delete mode 100644 libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/RegistriesMixinPlugin.java create mode 100644 libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin.java delete mode 100644 libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixinNew.java delete mode 100644 libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixinOld.java delete mode 100644 libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/RegistriesMixinPlugin.java delete mode 100644 libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/MinecraftMixinNew.java delete mode 100644 libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/MinecraftMixinOld.java delete mode 100644 libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/WorldAccessNew.java create mode 100644 libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/WorldAccess.java delete mode 100644 libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/WorldAccessOld.java create mode 100644 libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/WorldMixin.java delete mode 100644 libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/WorldMixinNew.java delete mode 100644 libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/WorldMixinOld.java delete mode 100644 libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/server/MinecraftServerMixinNew.java delete mode 100644 libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/server/MinecraftServerMixinNewNew.java delete mode 100644 libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/server/MinecraftServerMixinOld.java diff --git a/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/RegistriesMixinPlugin.java b/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/RegistriesMixinPlugin.java deleted file mode 100644 index 22ea52172..000000000 --- a/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/RegistriesMixinPlugin.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.ornithemc.osl.registries.impl; - -import java.util.List; -import java.util.Set; - -import org.objectweb.asm.tree.ClassNode; - -import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; -import org.spongepowered.asm.mixin.extensibility.IMixinInfo; - -import net.ornithemc.osl.core.impl.util.MinecraftVersion; - -public class RegistriesMixinPlugin implements IMixinConfigPlugin { - - @Override - public void onLoad(String mixinPackage) { - } - - @Override - public String getRefMapperConfig() { - return null; - } - - @Override - public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { - if ("net.ornithemc.osl.registries.impl.mixin.client.IntegratedServerMixin".equals(mixinClassName)) { - return MinecraftVersion.resolve().compareTo("12w25a") >= 0; - } - - return true; - } - - @Override - public void acceptTargets(Set myTargets, Set otherTargets) { - } - - @Override - public List getMixins() { - return null; - } - - @Override - public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { - } - - @Override - public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { - } -} diff --git a/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java b/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java index 14c262879..12527f90d 100644 --- a/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java +++ b/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java @@ -13,9 +13,13 @@ import net.minecraft.server.integrated.IntegratedServer; import net.minecraft.world.storage.WorldStorage; +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; +@Conditional(minecraftVersion = @Version(">=12w25a")) @Mixin(IntegratedServer.class) public class IntegratedServerMixin { diff --git a/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/resources/osl.registries.mixins.json b/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/resources/osl.registries.mixins.json index f43126613..1ab5d938d 100644 --- a/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/resources/osl.registries.mixins.json +++ b/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/resources/osl.registries.mixins.json @@ -3,7 +3,7 @@ "minVersion": "0.8", "package": "net.ornithemc.osl.registries.impl.mixin", "compatibilityLevel": "JAVA_8", - "plugin": "net.ornithemc.osl.registries.impl.RegistriesMixinPlugin", + "plugin": "net.ornithemc.conditionalmixin.mixin.ConditionalMixinPlugin", "mixins": [ "common.AlphaWorldStorageMixin", "common.MinecraftServerMixin", diff --git a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java b/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java index 28b987b31..2a0d684c1 100644 --- a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java +++ b/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java @@ -2,6 +2,7 @@ import net.minecraft.text.LiteralText; +import net.ornithemc.osl.core.impl.util.MinecraftVersion; import net.ornithemc.osl.entrypoints.api.client.ClientModInitializer; import net.ornithemc.osl.networking.api.client.ClientConnectionEvents; import net.ornithemc.osl.networking.api.client.ClientPlayNetworking; @@ -13,6 +14,8 @@ public final class RegistriesEntrypoint implements ClientModInitializer { + public static final boolean OLD_CRUDE_IDENTITY_HASH_MAP = MinecraftVersion.resolve().compareTo("1.7.10-pre3") < 0 || (MinecraftVersion.resolve().compareTo("14w02a") >= 0 && MinecraftVersion.resolve().compareTo("14w25a") < 0); + @Override public void initClient() { ClientPlayNetworking.registerListener(Constants.OSL_REGISTRY_SYNC_CHANNEL, (context, buffer) -> { diff --git a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/RegistriesMixinPlugin.java b/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/RegistriesMixinPlugin.java deleted file mode 100644 index a3395d4da..000000000 --- a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/RegistriesMixinPlugin.java +++ /dev/null @@ -1,55 +0,0 @@ -package net.ornithemc.osl.registries.impl; - -import java.util.List; -import java.util.Set; - -import org.objectweb.asm.tree.ClassNode; - -import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; -import org.spongepowered.asm.mixin.extensibility.IMixinInfo; - -import net.ornithemc.osl.core.impl.util.MinecraftVersion; - -public class RegistriesMixinPlugin implements IMixinConfigPlugin { - - @Override - public void onLoad(String mixinPackage) { - } - - @Override - public String getRefMapperConfig() { - return null; - } - - @Override - public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { - if ("net.ornithemc.osl.registries.impl.mixin.common.CrudeIncrementalIntIdentityHashMapMixin".equals(mixinClassName)) { - return MinecraftVersion.resolve().compareTo("1.7.10-pre3") < 0 || (MinecraftVersion.resolve().compareTo("14w02a") >= 0 && MinecraftVersion.resolve().compareTo("14w25a") < 0); - } - if ("net.ornithemc.osl.registries.impl.mixin.common.CrudeIncrementalIntIdentityHashMapMixin_1_7_10_pre3".equals(mixinClassName)) { - return MinecraftVersion.resolve().compareTo("1.7.10-pre3") >= 0 && MinecraftVersion.resolve().compareTo("1.7.10") <= 0; - } - if ("net.ornithemc.osl.registries.impl.mixin.common.CrudeIncrementalIntIdentityHashMapMixin_14w25a".equals(mixinClassName)) { - return MinecraftVersion.resolve().compareTo("14w25a") >= 0; - } - - return true; - } - - @Override - public void acceptTargets(Set myTargets, Set otherTargets) { - } - - @Override - public List getMixins() { - return null; - } - - @Override - public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { - } - - @Override - public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { - } -} diff --git a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin.java b/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin.java index 0eee3e7dc..43e7a9510 100644 --- a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin.java +++ b/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin.java @@ -1,5 +1,6 @@ package net.ornithemc.osl.registries.impl.mixin.common; +import java.util.IdentityHashMap; import java.util.List; import org.spongepowered.asm.mixin.Mixin; @@ -9,19 +10,37 @@ import net.minecraft.util.CrudeIncrementalIntIdentityHashMap; +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + +import net.ornithemc.osl.registries.impl.RegistriesEntrypoint; import net.ornithemc.osl.registries.impl.access.Clearable; @Mixin(CrudeIncrementalIntIdentityHashMap.class) public class CrudeIncrementalIntIdentityHashMapMixin implements Clearable { + @Conditional(minecraftVersion = @Version({ "<1.7.10-pre3", ">=14w02 <14w25a" })) @Shadow private TIntIntHashMap ids; + @Conditional(minecraftVersion = @Version({ "<1.7.10-pre3", ">=14w02 <14w25a" })) @Shadow private List values; + @Conditional(minecraftVersion = @Version({ ">=1.7.10-pre3 <=1.7.10", ">=14w25"})) + @Shadow + private IdentityHashMap f_29800171; // ids + @Conditional(minecraftVersion = @Version({ ">=1.7.10-pre3 <=1.7.10", ">=14w25"})) + @Shadow + private List f_87828088; // values + @Override public void osl$registries$clear() { - this.ids.clear(); - this.values.clear(); + if (RegistriesEntrypoint.OLD_CRUDE_IDENTITY_HASH_MAP) { + this.ids.clear(); + this.values.clear(); + } else { + this.f_29800171.clear(); + this.f_87828088.clear(); + } } } diff --git a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin_14w25a.java b/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin_14w25a.java deleted file mode 100644 index b987a5aa8..000000000 --- a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin_14w25a.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.common; - -import java.util.IdentityHashMap; -import java.util.List; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -import net.minecraft.util.CrudeIncrementalIntIdentityHashMap; - -import net.ornithemc.osl.registries.impl.access.Clearable; - -@Mixin(CrudeIncrementalIntIdentityHashMap.class) -public class CrudeIncrementalIntIdentityHashMapMixin_14w25a implements Clearable { - - @Shadow - private IdentityHashMap f_29800171; // ids - @Shadow - private List f_87828088; // values - - @Override - public void osl$registries$clear() { - this.f_29800171.clear(); - this.f_87828088.clear(); - } -} diff --git a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin_1_7_10_pre3.java b/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin_1_7_10_pre3.java deleted file mode 100644 index 67577b682..000000000 --- a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin_1_7_10_pre3.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.common; - -import java.util.IdentityHashMap; -import java.util.List; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -import net.minecraft.util.CrudeIncrementalIntIdentityHashMap; - -import net.ornithemc.osl.registries.impl.access.Clearable; - -@Mixin(CrudeIncrementalIntIdentityHashMap.class) -public class CrudeIncrementalIntIdentityHashMapMixin_1_7_10_pre3 implements Clearable { - - @Shadow - private IdentityHashMap f_29800171; // ids - @Shadow - private List f_87828088; // values - - @Override - public void osl$registries$clear() { - this.f_29800171.clear(); - this.f_87828088.clear(); - } -} diff --git a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/resources/osl.registries.mixins.json b/libraries/registries/registries-mc13w36a-mc14w26c/src/main/resources/osl.registries.mixins.json index ec43bef0e..195fc4e7c 100644 --- a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/resources/osl.registries.mixins.json +++ b/libraries/registries/registries-mc13w36a-mc14w26c/src/main/resources/osl.registries.mixins.json @@ -3,13 +3,11 @@ "minVersion": "0.8", "package": "net.ornithemc.osl.registries.impl.mixin", "compatibilityLevel": "JAVA_8", - "plugin": "net.ornithemc.osl.registries.impl.RegistriesMixinPlugin", + "plugin": "net.ornithemc.conditionalmixin.mixin.ConditionalMixinPlugin", "mixins": [ "common.AlphaWorldStorageMixin", "common.BootstrapMixin", "common.CrudeIncrementalIntIdentityHashMapMixin", - "common.CrudeIncrementalIntIdentityHashMapMixin_1_7_10_pre3", - "common.CrudeIncrementalIntIdentityHashMapMixin_14w25a", "common.DefaultedIdRegistryAccess", "common.IdRegistryMixin", "common.MinecraftServerMixin", diff --git a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java index 28b987b31..83afc4a18 100644 --- a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java +++ b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java @@ -2,6 +2,7 @@ import net.minecraft.text.LiteralText; +import net.ornithemc.osl.core.impl.util.MinecraftVersion; import net.ornithemc.osl.entrypoints.api.client.ClientModInitializer; import net.ornithemc.osl.networking.api.client.ClientConnectionEvents; import net.ornithemc.osl.networking.api.client.ClientPlayNetworking; @@ -13,6 +14,9 @@ public final class RegistriesEntrypoint implements ClientModInitializer { + public static final boolean OLD_CRUDE_IDENTITY_HASH_MAP = MinecraftVersion.resolve().compareTo("15w35a") < 0; + public static final boolean ID_2_OBJECT_BI_MAP_EXISTS = MinecraftVersion.resolve().compareTo("15w36a") >= 0; + @Override public void initClient() { ClientPlayNetworking.registerListener(Constants.OSL_REGISTRY_SYNC_CHANNEL, (context, buffer) -> { diff --git a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/RegistriesMixinPlugin.java b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/RegistriesMixinPlugin.java deleted file mode 100644 index 77d1197bf..000000000 --- a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/RegistriesMixinPlugin.java +++ /dev/null @@ -1,58 +0,0 @@ -package net.ornithemc.osl.registries.impl; - -import java.util.List; -import java.util.Set; - -import org.objectweb.asm.tree.ClassNode; - -import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; -import org.spongepowered.asm.mixin.extensibility.IMixinInfo; - -import net.ornithemc.osl.core.impl.util.MinecraftVersion; - -public class RegistriesMixinPlugin implements IMixinConfigPlugin { - - public static final boolean NEW_CRUDE_INCREMENTAL_INT_IDENTITY_HASH_MAP_IMPLEMENTATION = MinecraftVersion.resolve().compareTo("15w35a") >= 0; - public static final boolean ID_2_OBJECT_BI_MAP_EXISTS = MinecraftVersion.resolve().compareTo("15w36a") >= 0; - - @Override - public void onLoad(String mixinPackage) { - } - - @Override - public String getRefMapperConfig() { - return null; - } - - @Override - public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { - if ("net.ornithemc.osl.registries.impl.mixin.common.CrudeIncrementalIntIdentityHashMapMixinNew".equals(mixinClassName)) { - return NEW_CRUDE_INCREMENTAL_INT_IDENTITY_HASH_MAP_IMPLEMENTATION; - } - if ("net.ornithemc.osl.registries.impl.mixin.common.CrudeIncrementalIntIdentityHashMapMixinOld".equals(mixinClassName)) { - return !NEW_CRUDE_INCREMENTAL_INT_IDENTITY_HASH_MAP_IMPLEMENTATION; - } - if ("net.ornithemc.osl.registries.impl.mixin.common.Id2ObjectBiMapMixin".equals(mixinClassName)) { - return ID_2_OBJECT_BI_MAP_EXISTS; - } - - return true; - } - - @Override - public void acceptTargets(Set myTargets, Set otherTargets) { - } - - @Override - public List getMixins() { - return null; - } - - @Override - public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { - } - - @Override - public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { - } -} diff --git a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin.java b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin.java new file mode 100644 index 000000000..9a7b53a6a --- /dev/null +++ b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin.java @@ -0,0 +1,55 @@ +package net.ornithemc.osl.registries.impl.mixin.common; + +import java.util.Arrays; +import java.util.IdentityHashMap; +import java.util.List; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import net.minecraft.util.CrudeIncrementalIntIdentityHashMap; + +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + +import net.ornithemc.osl.registries.impl.RegistriesEntrypoint; +import net.ornithemc.osl.registries.impl.access.Clearable; + +@Mixin(CrudeIncrementalIntIdentityHashMap.class) +public class CrudeIncrementalIntIdentityHashMapMixin implements Clearable { + + @Conditional(minecraftVersion = @Version("<15w35a")) + @Shadow + private IdentityHashMap f_29800171; // ids + @Conditional(minecraftVersion = @Version("<15w35a")) + @Shadow + private List f_87828088; // values + + @Conditional(minecraftVersion = @Version(">=15w35a")) + @Shadow + private Object[] keys; + @Conditional(minecraftVersion = @Version(">=15w35a")) + @Shadow + private Object[] byId; + + @Conditional(minecraftVersion = @Version(">=15w35a")) + @Shadow + private int nextId; + @Conditional(minecraftVersion = @Version(">=15w35a")) + @Shadow + private int size; + + @Override + public void osl$registries$clear() { + if (RegistriesEntrypoint.OLD_CRUDE_IDENTITY_HASH_MAP) { + this.f_29800171.clear(); + this.f_87828088.clear(); + } else { + Arrays.fill(this.keys, null); + Arrays.fill(this.byId, null); + + this.nextId = 0; + this.size = 0; + } + } +} diff --git a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixinNew.java b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixinNew.java deleted file mode 100644 index e91c8bc6c..000000000 --- a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixinNew.java +++ /dev/null @@ -1,33 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.common; - -import java.util.Arrays; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -import net.minecraft.util.CrudeIncrementalIntIdentityHashMap; - -import net.ornithemc.osl.registries.impl.access.Clearable; - -@Mixin(CrudeIncrementalIntIdentityHashMap.class) -public class CrudeIncrementalIntIdentityHashMapMixinNew implements Clearable { - - @Shadow - private Object[] keys; - @Shadow - private Object[] byId; - - @Shadow - private int nextId; - @Shadow - private int size; - - @Override - public void osl$registries$clear() { - Arrays.fill(this.keys, null); - Arrays.fill(this.byId, null); - - this.nextId = 0; - this.size = 0; - } -} diff --git a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixinOld.java b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixinOld.java deleted file mode 100644 index b00ca34bd..000000000 --- a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixinOld.java +++ /dev/null @@ -1,26 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.common; - -import java.util.IdentityHashMap; -import java.util.List; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -import net.minecraft.util.CrudeIncrementalIntIdentityHashMap; - -import net.ornithemc.osl.registries.impl.access.Clearable; - -@Mixin(CrudeIncrementalIntIdentityHashMap.class) -public class CrudeIncrementalIntIdentityHashMapMixinOld implements Clearable { - - @Shadow - private IdentityHashMap f_29800171; // ids - @Shadow - private List f_87828088; // values - - @Override - public void osl$registries$clear() { - this.f_29800171.clear(); - this.f_87828088.clear(); - } -} diff --git a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/Id2ObjectBiMapMixin.java b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/Id2ObjectBiMapMixin.java index aec9b5cf6..c421af0db 100644 --- a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/Id2ObjectBiMapMixin.java +++ b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/Id2ObjectBiMapMixin.java @@ -16,9 +16,13 @@ import net.minecraft.util.Id2ObjectBiMap; +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + import net.ornithemc.osl.registries.impl.access.Clearable; import net.ornithemc.osl.registries.impl.access.Id2ObjectBiMapAccess; +@Conditional(minecraftVersion = @Version(">=15w36a")) @Mixin(Id2ObjectBiMap.class) public class Id2ObjectBiMapMixin implements Id2ObjectBiMapAccess, Clearable { diff --git a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/resources/osl.registries.mixins.json b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/resources/osl.registries.mixins.json index df2415d06..837c8ca3b 100644 --- a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/resources/osl.registries.mixins.json +++ b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/resources/osl.registries.mixins.json @@ -3,12 +3,11 @@ "minVersion": "0.8", "package": "net.ornithemc.osl.registries.impl.mixin", "compatibilityLevel": "JAVA_8", - "plugin": "net.ornithemc.osl.registries.impl.RegistriesMixinPlugin", + "plugin": "net.ornithemc.conditionalmixin.mixin.ConditionalMixinPlugin", "mixins": [ "common.AlphaWorldStorageMixin", "common.BootstrapMixin", - "common.CrudeIncrementalIntIdentityHashMapMixinNew", - "common.CrudeIncrementalIntIdentityHashMapMixinOld", + "common.CrudeIncrementalIntIdentityHashMapMixin", "common.DefaultedIdRegistryAccess", "common.Id2ObjectBiMapMixin", "common.IdRegistryMixin", diff --git a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java index ebc634b12..64c471c6a 100644 --- a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java +++ b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java @@ -1,5 +1,6 @@ package net.ornithemc.osl.registries.impl; +import net.ornithemc.osl.core.impl.util.MinecraftVersion; import net.ornithemc.osl.entrypoints.api.client.ClientModInitializer; import net.ornithemc.osl.networking.api.client.ClientConnectionEvents; import net.ornithemc.osl.networking.api.client.ClientPlayNetworking; @@ -12,6 +13,10 @@ public final class RegistriesEntrypoint implements ClientModInitializer { + public static final boolean OLD_WORLD_FORMAT = MinecraftVersion.resolve().compareTo("b1.3") < 0; + public static final boolean CLIENT_SUPPORTS_NETHER = MinecraftVersion.resolve().compareTo("a1.2.0") >= 0; + public static final boolean SERVER_SUPPORTS_NETHER = MinecraftVersion.resolve().compareTo("b1.5_02") > 0; + @Override public void initClient() { ClientPlayNetworking.registerListener(Constants.OSL_REGISTRY_SYNC_CHANNEL, (context, buffer) -> { diff --git a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/RegistriesMixinPlugin.java b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/RegistriesMixinPlugin.java deleted file mode 100644 index 073d5a1c6..000000000 --- a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/RegistriesMixinPlugin.java +++ /dev/null @@ -1,75 +0,0 @@ -package net.ornithemc.osl.registries.impl; - -import java.util.List; -import java.util.Set; - -import org.objectweb.asm.tree.ClassNode; - -import org.spongepowered.asm.mixin.extensibility.IMixinConfigPlugin; -import org.spongepowered.asm.mixin.extensibility.IMixinInfo; - -import net.fabricmc.api.EnvType; -import net.fabricmc.loader.api.FabricLoader; - -import net.ornithemc.osl.core.impl.util.MinecraftVersion; - -public class RegistriesMixinPlugin implements IMixinConfigPlugin { - - private static final boolean OLD_WORLD_FORMAT = MinecraftVersion.resolve().compareTo("b1.3") < 0; - private static final boolean DIMENSIONS_EXIST = MinecraftVersion.resolve().compareTo(FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT ? "a1.2.0" : "a0.2.2") >= 0; - private static final boolean SERVER_SUPPORTS_NETHER = MinecraftVersion.resolve().compareTo("b1.5_02") > 0; - - @Override - public void onLoad(String mixinPackage) { - } - - @Override - public String getRefMapperConfig() { - return null; - } - - @Override - public boolean shouldApplyMixin(String targetClassName, String mixinClassName) { - if ("net.ornithemc.osl.registries.impl.mixin.client.MinecraftMixinOld".equals(mixinClassName) - || "net.ornithemc.osl.registries.impl.mixin.common.WorldAccessOld".equals(mixinClassName) - || "net.ornithemc.osl.registries.impl.mixin.server.MinecraftServerMixinOld".equals(mixinClassName)) { - return OLD_WORLD_FORMAT; - } - if ("net.ornithemc.osl.registries.impl.mixin.common.AlphaWorldStorageMixin".equals(mixinClassName) - || "net.ornithemc.osl.registries.impl.mixin.client.WorldAccessNew".equals(mixinClassName) - || "net.ornithemc.osl.registries.impl.mixin.client.MinecraftMixinNew".equals(mixinClassName)) { - return !OLD_WORLD_FORMAT; - } - if ("net.ornithemc.osl.registries.impl.mixin.common.WorldMixinNew".equals(mixinClassName)) { - return OLD_WORLD_FORMAT && DIMENSIONS_EXIST; - } - if ("net.ornithemc.osl.registries.impl.mixin.common.WorldMixinOld".equals(mixinClassName)) { - return OLD_WORLD_FORMAT && !DIMENSIONS_EXIST; - } - if ("net.ornithemc.osl.registries.impl.mixin.server.MinecraftServerMixinNew".equals(mixinClassName)) { - return OLD_WORLD_FORMAT && !SERVER_SUPPORTS_NETHER; - } - if ("net.ornithemc.osl.registries.impl.mixin.server.MinecraftServerMixinNewNew".equals(mixinClassName)) { - return OLD_WORLD_FORMAT && SERVER_SUPPORTS_NETHER; - } - - return true; - } - - @Override - public void acceptTargets(Set myTargets, Set otherTargets) { - } - - @Override - public List getMixins() { - return null; - } - - @Override - public void preApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { - } - - @Override - public void postApply(String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { - } -} diff --git a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java index ea596a58c..2999a189f 100644 --- a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java +++ b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java @@ -1,11 +1,9 @@ package net.ornithemc.osl.registries.impl.access; -import java.io.IOException; +import java.io.File; public interface WorldStorageAccess { - void osl$registries$loadRegistryMappings() throws IOException; - - void osl$registries$saveRegistryMappings() throws IOException; + File osl$registries$getDirectory(); } diff --git a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/MinecraftMixin.java b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/MinecraftMixin.java index 107f853f6..f29244c69 100644 --- a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/MinecraftMixin.java +++ b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/MinecraftMixin.java @@ -1,18 +1,36 @@ package net.ornithemc.osl.registries.impl.mixin.client; +import java.io.File; +import java.io.IOException; + import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At.Shift; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import com.llamalad7.mixinextras.sugar.Local; + import net.minecraft.client.Minecraft; +import net.minecraft.world.World; +import net.minecraft.world.storage.WorldStorage; + +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; import net.ornithemc.osl.registries.impl.Bootstrap; +import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; +import net.ornithemc.osl.registries.impl.mixin.common.WorldAccess; +import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; +import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingStorage; @Mixin(Minecraft.class) public class MinecraftMixin { + @Shadow + private World world; + @Inject( method = "", at = @At( @@ -24,4 +42,68 @@ public class MinecraftMixin { private void osl$registries$bootstrap(CallbackInfo ci) { Bootstrap.init(); } + + @Conditional(minecraftVersion = @Version(">=b1.3")) + @Inject( + method = "startGame", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/storage/WorldStorageSource;get(Ljava/lang/String;Z)Lnet/minecraft/world/storage/WorldStorage;", + shift = Shift.BY, + by = 2 + ) + ) + private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local WorldStorage storage) { + if (storage instanceof WorldStorageAccess) { + File dir = ((WorldStorageAccess) storage).osl$registries$getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + throw new RuntimeException("Exception initializing level", e); + } + } + } + + @Conditional(minecraftVersion = @Version("=b1.3")) + @Inject( + method = "setWorld(Lnet/minecraft/world/World;Ljava/lang/String;)V", + at = @At( + value = "HEAD" + ) + ) + private void osl$registries$saveRegistryMappings2(World world, String message, CallbackInfo ci) { + if (this.world != null && !this.world.isMultiplayer && world == null) { + WorldStorage storage = ((WorldAccess) this.world).accessStorage(); + + if (storage instanceof WorldStorageAccess) { + File dir = ((WorldStorageAccess) storage).osl$registries$getDirectory(); + + try { + RegistryMappingStorage.saveRegistryMappings(dir); + } catch (IOException e) { + RegistriesImpl.LOGGER.error("Exception saving level", e); + } + } + } + } } diff --git a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/MinecraftMixinNew.java b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/MinecraftMixinNew.java deleted file mode 100644 index b446b6002..000000000 --- a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/MinecraftMixinNew.java +++ /dev/null @@ -1,65 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.client; - -import java.io.IOException; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.At.Shift; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import com.llamalad7.mixinextras.sugar.Local; - -import net.minecraft.client.Minecraft; -import net.minecraft.world.World; -import net.minecraft.world.storage.WorldStorage; - -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; -import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; - -@Mixin(Minecraft.class) -public class MinecraftMixinNew { - - @Shadow - private World world; - - @Inject( - method = "startGame", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/storage/WorldStorageSource;get(Ljava/lang/String;Z)Lnet/minecraft/world/storage/WorldStorage;", - shift = Shift.BY, - by = 2 - ) - ) - private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local WorldStorage storage) { - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); - } catch (IOException e) { - throw new RuntimeException("Exception initializing level", e); - } - } - } - - @Inject( - method = "setWorld(Lnet/minecraft/world/World;Ljava/lang/String;)V", - at = @At( - value = "HEAD" - ) - ) - private void osl$registries$saveRegistryMappings(World world, String message, CallbackInfo ci) { - if (this.world != null && !this.world.isMultiplayer && world == null) { - WorldStorage storage = ((WorldAccessNew) this.world).accessStorage(); - - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$saveRegistryMappings(); - } catch (IOException e) { - RegistriesImpl.LOGGER.error("Exception saving level", e); - } - } - } - } -} diff --git a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/MinecraftMixinOld.java b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/MinecraftMixinOld.java deleted file mode 100644 index bab1e804f..000000000 --- a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/MinecraftMixinOld.java +++ /dev/null @@ -1,42 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.client; - -import java.io.File; -import java.io.IOException; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import net.minecraft.client.Minecraft; -import net.minecraft.world.World; - -import net.ornithemc.osl.registries.impl.mixin.common.WorldAccessOld; -import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingStorage; - -@Mixin(Minecraft.class) -public class MinecraftMixinOld { - - @Shadow - private World world; - - @Inject( - method = "setWorld(Lnet/minecraft/world/World;Ljava/lang/String;)V", - at = @At( - value = "HEAD" - ) - ) - private void osl$registries$saveRegistryMappings(World world, String message, CallbackInfo ci) { - if (this.world != null && !this.world.isMultiplayer && world == null) { - File dir = ((WorldAccessOld) this.world).accessSaveDirectory(); - - try { - RegistryMappingStorage.saveRegistryMappings(dir); - } catch (IOException e) { - RegistriesImpl.LOGGER.error("Exception saving level", e); - } - } - } -} diff --git a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/WorldAccessNew.java b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/WorldAccessNew.java deleted file mode 100644 index 9bb380bc2..000000000 --- a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/WorldAccessNew.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.client; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -import net.minecraft.world.World; -import net.minecraft.world.storage.WorldStorage; - -@Mixin(World.class) -public interface WorldAccessNew { - - @Accessor("storage") - WorldStorage accessStorage(); - -} diff --git a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java index 3dab6adbb..4f2fa4e56 100644 --- a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java +++ b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java @@ -1,16 +1,18 @@ package net.ornithemc.osl.registries.impl.mixin.common; import java.io.File; -import java.io.IOException; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import net.minecraft.world.storage.AlphaWorldStorage; +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingStorage; +@Conditional(minecraftVersion = @Version(">=b1.3")) @Mixin(AlphaWorldStorage.class) public class AlphaWorldStorageMixin implements WorldStorageAccess { @@ -18,12 +20,7 @@ public class AlphaWorldStorageMixin implements WorldStorageAccess { private File getDirectory() { return null; } @Override - public void osl$registries$loadRegistryMappings() throws IOException { - RegistryMappingStorage.loadRegistryMappings(this.getDirectory()); - } - - @Override - public void osl$registries$saveRegistryMappings() throws IOException { - RegistryMappingStorage.saveRegistryMappings(this.getDirectory()); + public File osl$registries$getDirectory() { + return this.getDirectory(); } } diff --git a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/WorldAccess.java b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/WorldAccess.java new file mode 100644 index 000000000..9db6c1623 --- /dev/null +++ b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/WorldAccess.java @@ -0,0 +1,29 @@ +package net.ornithemc.osl.registries.impl.mixin.common; + +import java.io.File; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; + +import net.minecraft.world.World; +import net.minecraft.world.storage.WorldStorage; + +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + +@Mixin(World.class) +public interface WorldAccess { + + @Conditional(minecraftVersion = @Version("=b1.3")) + @Environment(EnvType.CLIENT) + @Accessor("storage") + WorldStorage accessStorage(); + +} diff --git a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/WorldAccessOld.java b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/WorldAccessOld.java deleted file mode 100644 index 3cb41a8a8..000000000 --- a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/WorldAccessOld.java +++ /dev/null @@ -1,16 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.common; - -import java.io.File; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -import net.minecraft.world.World; - -@Mixin(World.class) -public interface WorldAccessOld { - - @Accessor("f_14667040") - File accessSaveDirectory(); - -} diff --git a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/WorldMixin.java b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/WorldMixin.java new file mode 100644 index 000000000..758512667 --- /dev/null +++ b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/WorldMixin.java @@ -0,0 +1,64 @@ +package net.ornithemc.osl.registries.impl.mixin.common; + +import java.io.File; +import java.io.IOException; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import net.minecraft.world.World; + +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.GameSide; +import net.ornithemc.conditionalmixin.annotations.Version; + +import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingStorage; + +@Conditional(minecraftVersion = @Version("b1.5_02")) + @Shadow + private ServerWorld[] worlds; + @Inject( method = "main", at = @At( @@ -24,4 +49,68 @@ public class MinecraftServerMixin { private static void osl$registries$bootstrap(CallbackInfo ci) { Bootstrap.init(); } + + @Conditional(minecraftVersion = @Version(">=b1.3")) + @WrapOperation( + method = "loadWorld", + at = @At( + value = "NEW", + target = "net/minecraft/world/storage/AnvilWorldStorage" + ) + ) + private AnvilWorldStorage osl$registries$loadRegistryMappings1(File file, String saveName, boolean createPlayersDir, Operation op) { + AnvilWorldStorage storage = op.call(file, saveName, createPlayersDir); + + if (storage instanceof WorldStorageAccess) { + File dir = ((WorldStorageAccess) storage).osl$registries$getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + throw new RuntimeException("Exception initializing level", e); + } + } + + return storage; + } + + @Conditional(minecraftVersion = @Version("=b1.3")) + @Inject( + method = "saveWorlds", + at = @At( + value = "HEAD" + ) + ) + private void osl$registries$saveRegistryMappings2(CallbackInfo ci) { + WorldStorage storage = RegistriesEntrypoint.SERVER_SUPPORTS_NETHER + ? this.worlds[0].getStorage() + : this.f_58488472.getStorage(); + + if (storage instanceof WorldStorageAccess) { + File dir = ((WorldStorageAccess) storage).osl$registries$getDirectory(); + + try { + RegistryMappingStorage.saveRegistryMappings(dir); + } catch (IOException e) { + RegistriesImpl.LOGGER.error("Exception saving level", e); + } + } + } } diff --git a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/server/MinecraftServerMixinNew.java b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/server/MinecraftServerMixinNew.java deleted file mode 100644 index c6e26c2a5..000000000 --- a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/server/MinecraftServerMixinNew.java +++ /dev/null @@ -1,68 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.server; - -import java.io.File; -import java.io.IOException; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; - -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.world.storage.AnvilWorldStorage; -import net.minecraft.world.storage.WorldStorage; - -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; -import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; - -@Mixin(MinecraftServer.class) -public class MinecraftServerMixinNew { - - @Shadow - private ServerWorld f_58488472; - - @WrapOperation( - method = "loadWorld", - at = @At( - value = "NEW", - target = "net/minecraft/world/storage/AnvilWorldStorage" - ) - ) - private AnvilWorldStorage osl$registries$loadRegistryMappings(File file, String saveName, boolean createPlayersDir, Operation op) { - AnvilWorldStorage storage = op.call(file, saveName, createPlayersDir); - - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); - } catch (IOException e) { - throw new RuntimeException("Exception initializing level", e); - } - } - - return storage; - } - - @Inject( - method = "saveWorlds", - at = @At( - value = "HEAD" - ) - ) - private void osl$registries$saveRegistryMappings(CallbackInfo ci) { - ServerWorld overworld = this.f_58488472; - WorldStorage storage = overworld.getStorage(); - - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$saveRegistryMappings(); - } catch (IOException e) { - RegistriesImpl.LOGGER.error("Exception saving level", e); - } - } - } -} diff --git a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/server/MinecraftServerMixinNewNew.java b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/server/MinecraftServerMixinNewNew.java deleted file mode 100644 index f79310718..000000000 --- a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/server/MinecraftServerMixinNewNew.java +++ /dev/null @@ -1,68 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.server; - -import java.io.File; -import java.io.IOException; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; - -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.world.storage.AnvilWorldStorage; -import net.minecraft.world.storage.WorldStorage; - -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; -import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; - -@Mixin(MinecraftServer.class) -public class MinecraftServerMixinNewNew { - - @Shadow - private ServerWorld[] worlds; - - @WrapOperation( - method = "loadWorld", - at = @At( - value = "NEW", - target = "net/minecraft/world/storage/AnvilWorldStorage" - ) - ) - private AnvilWorldStorage osl$registries$loadRegistryMappings(File file, String saveName, boolean createPlayersDir, Operation op) { - AnvilWorldStorage storage = op.call(file, saveName, createPlayersDir); - - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); - } catch (IOException e) { - throw new RuntimeException("Exception initializing level", e); - } - } - - return storage; - } - - @Inject( - method = "saveWorlds", - at = @At( - value = "HEAD" - ) - ) - private void osl$registries$saveRegistryMappings(CallbackInfo ci) { - ServerWorld overworld = this.worlds[0]; - WorldStorage storage = overworld.getStorage(); - - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$saveRegistryMappings(); - } catch (IOException e) { - RegistriesImpl.LOGGER.error("Exception saving level", e); - } - } - } -} diff --git a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/server/MinecraftServerMixinOld.java b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/server/MinecraftServerMixinOld.java deleted file mode 100644 index d297ed3cd..000000000 --- a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/server/MinecraftServerMixinOld.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.server; - -import java.io.File; -import java.io.IOException; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.world.ServerWorld; - -import net.ornithemc.osl.registries.impl.mixin.common.WorldAccessOld; -import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingStorage; - -@Mixin(MinecraftServer.class) -public class MinecraftServerMixinOld { - - @Shadow - private ServerWorld f_58488472; - - @Inject( - method = "saveWorlds", - at = @At( - value = "HEAD" - ) - ) - private void osl$registries$saveRegistryMappings(CallbackInfo ci) { - File dir = ((WorldAccessOld) this.f_58488472).accessSaveDirectory(); - - try { - RegistryMappingStorage.saveRegistryMappings(dir); - } catch (IOException e) { - RegistriesImpl.LOGGER.error("Exception saving level", e); - } - } -} diff --git a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/resources/osl.registries.mixins.json b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/resources/osl.registries.mixins.json index 211a0823d..ea96f220c 100644 --- a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/resources/osl.registries.mixins.json +++ b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/resources/osl.registries.mixins.json @@ -3,25 +3,19 @@ "minVersion": "0.8", "package": "net.ornithemc.osl.registries.impl.mixin", "compatibilityLevel": "JAVA_8", - "plugin": "net.ornithemc.osl.registries.impl.RegistriesMixinPlugin", + "plugin": "net.ornithemc.conditionalmixin.mixin.ConditionalMixinPlugin", "mixins": [ "common.AlphaWorldStorageMixin", "common.NbtCompoundAccess", - "common.WorldAccessOld", - "common.WorldMixinNew", - "common.WorldMixinOld" + "common.WorldAccess", + "common.WorldMixin" ], "client": [ "client.ClientNetworkHandlerAccess", - "client.MinecraftMixin", - "client.MinecraftMixinNew", - "client.MinecraftMixinOld", - "client.WorldAccessNew" + "client.MinecraftMixin" ], "server": [ "server.MinecraftServerMixin", - "server.MinecraftServerMixinNew", - "server.MinecraftServerMixinOld", "server.ServerLoginNetworkHandlerMixin" ], "injectors": { From e322297c0c55b0829fc5ea11c4441507fc631485 Mon Sep 17 00:00:00 2001 From: Space Walker Date: Thu, 5 Nov 2026 18:26:50 +0100 Subject: [PATCH 2/3] [registries] collapse two modules --- .../build.gradle | 0 .../gradle.properties | 2 +- .../registries/api/registry/RegistryKeys.java | 0 .../registry/sync/Id2ObjectBiMapMapper.java | 0 .../registries/impl/RegistriesEntrypoint.java | 3 + .../osl/registries/impl/access/Clearable.java | 0 .../impl/access/Id2ObjectBiMapAccess.java | 0 .../impl/access/IdRegistryAccess.java | 0 .../impl/access/NbtCompoundAccess.java | 9 ++ .../impl/access/ServerWorldAccess.java | 7 + .../impl/access/WorldStorageAccess.java | 0 .../mixin/client/IntegratedServerMixin.java | 23 +++ .../mixin/common/AlphaWorldStorageMixin.java | 22 ++- .../impl/mixin/common/BootstrapMixin.java | 0 ...udeIncrementalIntIdentityHashMapMixin.java | 0 .../common/DefaultedIdRegistryAccess.java | 0 .../mixin/common/Id2ObjectBiMapMixin.java | 0 .../impl/mixin/common/IdRegistryMixin.java | 0 .../mixin/common/MinecraftServerMixin.java | 46 +++++- .../impl/mixin/common/NbtCompoundMixin.java | 34 +++++ .../impl/mixin/common/PlayerManagerMixin.java | 0 .../impl/mixin/common/RegistryMixin.java | 0 .../impl/mixin/common/ServerWorldMixin.java | 47 +++++++ .../impl/registry/VanillaRegistries.java | 0 .../registry/WrappedDefaultedIdRegistry.java | 0 .../impl/registry/WrappedIdRegistry.java | 0 .../sync/SyncedRegistriesNbtSerializer.java | 5 +- .../SyncedRegistriesPacketSerializer.java | 0 .../src/main/resources/fabric.mod.json | 4 +- .../resources/osl.registries.classtweaker | 0 .../main/resources/osl.registries.mixins.json | 5 +- .../registries/impl/RegistriesEntrypoint.java | 43 ------ .../mixin/client/IntegratedServerMixin.java | 49 ------- .../mixin/common/MinecraftServerMixin.java | 63 --------- .../sync/SyncedRegistriesNbtSerializer.java | 78 ---------- .../main/resources/osl.registries.mixins.json | 25 ---- .../registries-mc19w04a-mc1.14.4/build.gradle | 1 - .../gradle.properties | 4 - .../registries/api/registry/RegistryKeys.java | 46 ------ .../registry/sync/Id2ObjectBiMapMapper.java | 67 --------- .../osl/registries/impl/access/Clearable.java | 16 --- .../impl/access/Id2ObjectBiMapAccess.java | 14 -- .../impl/access/IdRegistryAccess.java | 20 --- .../impl/access/WorldStorageAccess.java | 11 -- .../mixin/common/AlphaWorldStorageMixin.java | 116 --------------- .../impl/mixin/common/BootstrapMixin.java | 34 ----- ...udeIncrementalIntIdentityHashMapMixin.java | 33 ----- .../common/DefaultedIdRegistryAccess.java | 15 -- .../mixin/common/Id2ObjectBiMapMixin.java | 59 -------- .../impl/mixin/common/IdRegistryMixin.java | 53 ------- .../impl/mixin/common/PlayerManagerMixin.java | 38 ----- .../impl/mixin/common/RegistryMixin.java | 28 ---- .../impl/registry/VanillaRegistries.java | 19 --- .../registry/WrappedDefaultedIdRegistry.java | 25 ---- .../impl/registry/WrappedIdRegistry.java | 133 ------------------ .../SyncedRegistriesPacketSerializer.java | 81 ----------- .../src/main/resources/fabric.mod.json | 37 ----- .../resources/osl.registries.classtweaker | 4 - settings.gradle | 3 +- 59 files changed, 198 insertions(+), 1124 deletions(-) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/build.gradle (100%) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/gradle.properties (68%) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/api/registry/RegistryKeys.java (100%) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/api/registry/sync/Id2ObjectBiMapMapper.java (100%) rename libraries/registries/{registries-mc19w04a-mc1.14.4 => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java (91%) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/access/Clearable.java (100%) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/access/Id2ObjectBiMapAccess.java (100%) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/access/IdRegistryAccess.java (100%) create mode 100644 libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/NbtCompoundAccess.java create mode 100644 libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/ServerWorldAccess.java rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java (100%) rename libraries/registries/{registries-mc19w04a-mc1.14.4 => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java (64%) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java (85%) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/BootstrapMixin.java (100%) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin.java (100%) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/DefaultedIdRegistryAccess.java (100%) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/Id2ObjectBiMapMixin.java (100%) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/IdRegistryMixin.java (100%) rename libraries/registries/{registries-mc19w04a-mc1.14.4 => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java (60%) create mode 100644 libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/NbtCompoundMixin.java rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/PlayerManagerMixin.java (100%) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/RegistryMixin.java (100%) create mode 100644 libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/ServerWorldMixin.java rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/registry/VanillaRegistries.java (100%) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/registry/WrappedDefaultedIdRegistry.java (100%) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/registry/WrappedIdRegistry.java (100%) rename libraries/registries/{registries-mc19w04a-mc1.14.4 => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesNbtSerializer.java (92%) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesPacketSerializer.java (100%) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/resources/fabric.mod.json (95%) rename libraries/registries/{registries-mc18w43a-mc19w03c => registries-mc18w43a-mc1.14.4}/src/main/resources/osl.registries.classtweaker (100%) rename libraries/registries/{registries-mc19w04a-mc1.14.4 => registries-mc18w43a-mc1.14.4}/src/main/resources/osl.registries.mixins.json (77%) delete mode 100644 libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java delete mode 100644 libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java delete mode 100644 libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java delete mode 100644 libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesNbtSerializer.java delete mode 100644 libraries/registries/registries-mc18w43a-mc19w03c/src/main/resources/osl.registries.mixins.json delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/build.gradle delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/gradle.properties delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/api/registry/RegistryKeys.java delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/api/registry/sync/Id2ObjectBiMapMapper.java delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/Clearable.java delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/Id2ObjectBiMapAccess.java delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/IdRegistryAccess.java delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/BootstrapMixin.java delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin.java delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/DefaultedIdRegistryAccess.java delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/Id2ObjectBiMapMixin.java delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/IdRegistryMixin.java delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/PlayerManagerMixin.java delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/RegistryMixin.java delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/VanillaRegistries.java delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/WrappedDefaultedIdRegistry.java delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/WrappedIdRegistry.java delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesPacketSerializer.java delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/resources/fabric.mod.json delete mode 100644 libraries/registries/registries-mc19w04a-mc1.14.4/src/main/resources/osl.registries.classtweaker diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/build.gradle b/libraries/registries/registries-mc18w43a-mc1.14.4/build.gradle similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/build.gradle rename to libraries/registries/registries-mc18w43a-mc1.14.4/build.gradle diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/gradle.properties b/libraries/registries/registries-mc18w43a-mc1.14.4/gradle.properties similarity index 68% rename from libraries/registries/registries-mc18w43a-mc19w03c/gradle.properties rename to libraries/registries/registries-mc18w43a-mc1.14.4/gradle.properties index 03ff2aa59..51633ca93 100644 --- a/libraries/registries/registries-mc18w43a-mc19w03c/gradle.properties +++ b/libraries/registries/registries-mc18w43a-mc1.14.4/gradle.properties @@ -1,4 +1,4 @@ min_mc_version = 18w43a -max_mc_version = 19w03c +max_mc_version = 1.14.4 minecraft_version = 19w03c diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/api/registry/RegistryKeys.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/api/registry/RegistryKeys.java similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/api/registry/RegistryKeys.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/api/registry/RegistryKeys.java diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/api/registry/sync/Id2ObjectBiMapMapper.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/api/registry/sync/Id2ObjectBiMapMapper.java similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/api/registry/sync/Id2ObjectBiMapMapper.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/api/registry/sync/Id2ObjectBiMapMapper.java diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java similarity index 91% rename from libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java index 28b987b31..d1c8411fd 100644 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java +++ b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java @@ -2,6 +2,7 @@ import net.minecraft.text.LiteralText; +import net.ornithemc.osl.core.impl.util.MinecraftVersion; import net.ornithemc.osl.entrypoints.api.client.ClientModInitializer; import net.ornithemc.osl.networking.api.client.ClientConnectionEvents; import net.ornithemc.osl.networking.api.client.ClientPlayNetworking; @@ -13,6 +14,8 @@ public final class RegistriesEntrypoint implements ClientModInitializer { + public static final boolean OLD_WORLD_STORAGE = MinecraftVersion.resolve().compareTo("19w04a") < 0; + @Override public void initClient() { ClientPlayNetworking.registerListener(Constants.OSL_REGISTRY_SYNC_CHANNEL, (context, buffer) -> { diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/access/Clearable.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/Clearable.java similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/access/Clearable.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/Clearable.java diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/access/Id2ObjectBiMapAccess.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/Id2ObjectBiMapAccess.java similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/access/Id2ObjectBiMapAccess.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/Id2ObjectBiMapAccess.java diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/access/IdRegistryAccess.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/IdRegistryAccess.java similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/access/IdRegistryAccess.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/IdRegistryAccess.java diff --git a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/NbtCompoundAccess.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/NbtCompoundAccess.java new file mode 100644 index 000000000..9c7036d93 --- /dev/null +++ b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/NbtCompoundAccess.java @@ -0,0 +1,9 @@ +package net.ornithemc.osl.registries.impl.access; + +import net.minecraft.nbt.NbtElement; + +public interface NbtCompoundAccess { + + void osl$registries$put(String key, NbtElement element); + +} diff --git a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/ServerWorldAccess.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/ServerWorldAccess.java new file mode 100644 index 000000000..c845e18c4 --- /dev/null +++ b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/ServerWorldAccess.java @@ -0,0 +1,7 @@ +package net.ornithemc.osl.registries.impl.access; + +public interface ServerWorldAccess { + + WorldStorageAccess accessStorage(); + +} diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java similarity index 64% rename from libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java index f574a096b..926ed55f1 100644 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java +++ b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java @@ -13,6 +13,10 @@ import net.minecraft.util.crash.CrashException; import net.minecraft.util.crash.CrashReport; import net.minecraft.world.storage.AlphaWorldStorage; +import net.minecraft.world.storage.WorldStorage; + +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; @@ -20,6 +24,25 @@ @Mixin(IntegratedServer.class) public class IntegratedServerMixin { + @Conditional(minecraftVersion = @Version("<19w04a")) + @Inject( + method = "loadWorld", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/storage/WorldStorage;loadData()Lnet/minecraft/world/WorldData;" + ) + ) + private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local WorldStorage storage) { + if (storage instanceof WorldStorageAccess) { + try { + ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); + } catch (IOException e) { + throw new CrashException(CrashReport.of(e, "Exception initializing level")); + } + } + } + + @Conditional(minecraftVersion = @Version(">=19w04a")) @Inject( method = "loadWorld", at = @At( diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java similarity index 85% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java index f7de606ca..c81631f9a 100644 --- a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java +++ b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java @@ -16,7 +16,11 @@ import net.minecraft.nbt.NbtIo; import net.minecraft.world.storage.AlphaWorldStorage; +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + import net.ornithemc.osl.registries.impl.Constants; +import net.ornithemc.osl.registries.impl.RegistriesEntrypoint; import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; @@ -30,12 +34,17 @@ public class AlphaWorldStorageMixin implements WorldStorageAccess { @Shadow @Final private String name; + @Conditional(minecraftVersion = @Version("<19w04a")) @Shadow private File getDirectory() { return null; } + @Conditional(minecraftVersion = @Version(">=19w04a")) + @Shadow + private File m_52081685() { return null; } + @Override public void osl$registries$loadRegistryMappings() throws IOException { - File dir = this.getDirectory(); + File dir = this.osl$getDirectory(); File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); if (!this.readRegistryMappings(file, false)) { @@ -77,7 +86,7 @@ private boolean readRegistryMappings(File file, boolean throwOnException) throws @Override public void osl$registries$saveRegistryMappings() throws IOException { - File dir = this.getDirectory(); + File dir = this.osl$getDirectory(); File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); File tmp = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_tmp"); File backup = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); @@ -113,4 +122,13 @@ private void writeRegistryMappings(File file, File newFile, File oldFile) throws RegistriesImpl.LOGGER.warn("error while writing registry mappings for '" + this.name + "'", e); } } + + @Unique + private File osl$getDirectory() { + if (RegistriesEntrypoint.OLD_WORLD_STORAGE) { + return this.getDirectory(); + } else { + return this.m_52081685(); + } + } } diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/BootstrapMixin.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/BootstrapMixin.java similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/BootstrapMixin.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/BootstrapMixin.java diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin.java similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin.java diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/DefaultedIdRegistryAccess.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/DefaultedIdRegistryAccess.java similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/DefaultedIdRegistryAccess.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/DefaultedIdRegistryAccess.java diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/Id2ObjectBiMapMixin.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/Id2ObjectBiMapMixin.java similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/Id2ObjectBiMapMixin.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/Id2ObjectBiMapMixin.java diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/IdRegistryMixin.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/IdRegistryMixin.java similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/IdRegistryMixin.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/IdRegistryMixin.java diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java similarity index 60% rename from libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java index c3908b99c..470e6f0a7 100644 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java +++ b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java @@ -3,6 +3,7 @@ import java.io.IOException; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -16,13 +17,37 @@ import net.minecraft.util.crash.CrashReport; import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.storage.AlphaWorldStorage; +import net.minecraft.world.storage.WorldStorage; +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + +import net.ornithemc.osl.registries.impl.access.ServerWorldAccess; import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; @Mixin(MinecraftServer.class) public class MinecraftServerMixin { + @Conditional(minecraftVersion = @Version("<19w04a")) + @Inject( + method = "loadWorld", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/storage/WorldStorage;loadData()Lnet/minecraft/world/WorldData;" + ) + ) + private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local WorldStorage storage) { + if (storage instanceof WorldStorageAccess) { + try { + ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); + } catch (IOException e) { + throw new CrashException(CrashReport.of(e, "Exception initializing level")); + } + } + } + + @Conditional(minecraftVersion = @Version(">=19w04a")) @Inject( method = "loadWorld", at = @At( @@ -40,6 +65,18 @@ public class MinecraftServerMixin { } } + @Conditional(minecraftVersion = @Version("<19w04a")) + @Inject( + method = "saveWorlds", + at = @At( + value = "HEAD" + ) + ) + private void osl$registries$saveRegistryMappings(CallbackInfo ci) { + this.saveRegistryMappings(); + } + + @Conditional(minecraftVersion = @Version(">=19w04a")) @Inject( method = "saveWorlds", at = @At( @@ -47,13 +84,18 @@ public class MinecraftServerMixin { ) ) private void osl$registries$saveRegistryMappings(CallbackInfoReturnable cir) { + this.saveRegistryMappings(); + } + + @Unique + private void saveRegistryMappings() { @SuppressWarnings("resource") MinecraftServer server = (MinecraftServer) (Object) this; ServerWorld overworld = server.getWorld(DimensionType.OVERWORLD); - AlphaWorldStorage storage = overworld.m_73575718(); + WorldStorageAccess storage = ((ServerWorldAccess) overworld).accessStorage(); - if (storage instanceof WorldStorageAccess) { + if (storage != null) { try { ((WorldStorageAccess) storage).osl$registries$saveRegistryMappings(); } catch (IOException e) { diff --git a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/NbtCompoundMixin.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/NbtCompoundMixin.java new file mode 100644 index 000000000..2264b76ed --- /dev/null +++ b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/NbtCompoundMixin.java @@ -0,0 +1,34 @@ +package net.ornithemc.osl.registries.impl.mixin.common; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.NbtElement; + +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + +import net.ornithemc.osl.registries.impl.RegistriesEntrypoint; +import net.ornithemc.osl.registries.impl.access.NbtCompoundAccess; + +@Mixin(NbtCompound.class) +public class NbtCompoundMixin implements NbtCompoundAccess { + + @Conditional(minecraftVersion = @Version("<19w04a")) + @Shadow + private void put(String key, NbtElement elementn) { } + + @Conditional(minecraftVersion = @Version(">=19w04a")) + @Shadow + private NbtElement m_21770494(String key, NbtElement elementn) { return null; } + + @Override + public void osl$registries$put(String key, NbtElement element) { + if (RegistriesEntrypoint.OLD_WORLD_STORAGE) { + this.put(key, element); + } else { + this.m_21770494(key, element); + } + } +} diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/PlayerManagerMixin.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/PlayerManagerMixin.java similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/PlayerManagerMixin.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/PlayerManagerMixin.java diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/RegistryMixin.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/RegistryMixin.java similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/RegistryMixin.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/RegistryMixin.java diff --git a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/ServerWorldMixin.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/ServerWorldMixin.java new file mode 100644 index 000000000..931321367 --- /dev/null +++ b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/ServerWorldMixin.java @@ -0,0 +1,47 @@ +package net.ornithemc.osl.registries.impl.mixin.common; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; + +import net.minecraft.server.world.ServerWorld; +import net.minecraft.world.World; +import net.minecraft.world.storage.AlphaWorldStorage; +import net.minecraft.world.storage.WorldStorage; + +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + +import net.ornithemc.osl.registries.impl.RegistriesEntrypoint; +import net.ornithemc.osl.registries.impl.access.ServerWorldAccess; +import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; + +@Mixin(ServerWorld.class) +public abstract class ServerWorldMixin extends World implements ServerWorldAccess { + + private ServerWorldMixin() { + super(null, null, null, null, null, null, false); + } + + @Conditional(minecraftVersion = @Version("<19w04a")) + @Shadow + private WorldStorage storage; + + @Conditional(minecraftVersion = @Version(">=19w04a")) + @Shadow + private AlphaWorldStorage f_63102719; + + @Override + public WorldStorageAccess accessStorage() { + if (RegistriesEntrypoint.OLD_WORLD_STORAGE) { + if (this.storage instanceof WorldStorageAccess) { + return (WorldStorageAccess) this.storage; + } + } else { + if (this.f_63102719 instanceof WorldStorageAccess) { + return (WorldStorageAccess) this.f_63102719; + } + } + + return null; + } +} diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/registry/VanillaRegistries.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/VanillaRegistries.java similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/registry/VanillaRegistries.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/VanillaRegistries.java diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/registry/WrappedDefaultedIdRegistry.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/WrappedDefaultedIdRegistry.java similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/registry/WrappedDefaultedIdRegistry.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/WrappedDefaultedIdRegistry.java diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/registry/WrappedIdRegistry.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/WrappedIdRegistry.java similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/registry/WrappedIdRegistry.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/WrappedIdRegistry.java diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesNbtSerializer.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesNbtSerializer.java similarity index 92% rename from libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesNbtSerializer.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesNbtSerializer.java index b2b48ca34..461e18458 100644 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesNbtSerializer.java +++ b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesNbtSerializer.java @@ -10,6 +10,7 @@ import net.ornithemc.osl.core.api.util.NamespacedIdentifiers; import net.ornithemc.osl.registries.api.registry.Registry; import net.ornithemc.osl.registries.impl.Constants; +import net.ornithemc.osl.registries.impl.access.NbtCompoundAccess; import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; import net.ornithemc.osl.registries.impl.registry.SyncedRegistry; @@ -28,11 +29,11 @@ public static void serialize(NbtCompound nbt) throws IOException { NbtCompound mappingsNbt = new NbtCompound(); mappings.write(mappingsNbt, SyncedRegistriesNbtSerializer::serialize); - registriesNbt.put(identifier.toString(), mappingsNbt); + ((NbtCompoundAccess) registriesNbt).osl$registries$put(identifier.toString(), mappingsNbt); } nbt.putInt(Constants.FORMAT_NBT_KEY, Constants.REGISTRY_MAPPINGS_FORMAT); - nbt.put(Constants.REGISTRIES_NBT_KEY, registriesNbt); + ((NbtCompoundAccess) nbt).osl$registries$put(Constants.REGISTRIES_NBT_KEY, registriesNbt); } public static void deserialize(NbtCompound nbt, RegistryMappingSource source) throws IOException, RegistryMappingException { diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesPacketSerializer.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesPacketSerializer.java similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesPacketSerializer.java rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesPacketSerializer.java diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/resources/fabric.mod.json b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/resources/fabric.mod.json similarity index 95% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/resources/fabric.mod.json rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/resources/fabric.mod.json index adc83f685..66326b42f 100644 --- a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/resources/fabric.mod.json +++ b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/resources/fabric.mod.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, "id": "osl-registries", - "version": "0.4.0+mc18w43a-mc19w03c", + "version": "0.4.0+mc18w43a-mc1.14.4", "environment": "*", "entrypoints": { "client-init": [ @@ -14,7 +14,7 @@ "accessWidener": "osl.registries.classtweaker", "depends": { "fabricloader": "\u003e\u003d0.18.0", - "minecraft": "\u003e\u003d1.14-alpha.18.43.a \u003c\u003d1.14-alpha.19.3.c", + "minecraft": "\u003e\u003d1.14-alpha.18.43.a \u003c\u003d1.14.4", "osl-core": "\u003e\u003d0.11.0", "osl-entrypoints": "\u003e\u003d0.5.0", "osl-lifecycle-events": "\u003e\u003d0.6.0", diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/resources/osl.registries.classtweaker b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/resources/osl.registries.classtweaker similarity index 100% rename from libraries/registries/registries-mc18w43a-mc19w03c/src/main/resources/osl.registries.classtweaker rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/resources/osl.registries.classtweaker diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/resources/osl.registries.mixins.json b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/resources/osl.registries.mixins.json similarity index 77% rename from libraries/registries/registries-mc19w04a-mc1.14.4/src/main/resources/osl.registries.mixins.json rename to libraries/registries/registries-mc18w43a-mc1.14.4/src/main/resources/osl.registries.mixins.json index 18fd032b2..9de7f8c2d 100644 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/resources/osl.registries.mixins.json +++ b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/resources/osl.registries.mixins.json @@ -3,6 +3,7 @@ "minVersion": "0.8", "package": "net.ornithemc.osl.registries.impl.mixin", "compatibilityLevel": "JAVA_8", + "plugin": "net.ornithemc.conditionalmixin.mixin.ConditionalMixinPlugin", "mixins": [ "common.AlphaWorldStorageMixin", "common.BootstrapMixin", @@ -11,8 +12,10 @@ "common.Id2ObjectBiMapMixin", "common.IdRegistryMixin", "common.MinecraftServerMixin", + "common.NbtCompoundMixin", "common.PlayerManagerMixin", - "common.RegistryMixin" + "common.RegistryMixin", + "common.ServerWorldMixin" ], "client": [ "client.IntegratedServerMixin" diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java b/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java deleted file mode 100644 index 28b987b31..000000000 --- a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/RegistriesEntrypoint.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.ornithemc.osl.registries.impl; - -import net.minecraft.text.LiteralText; - -import net.ornithemc.osl.entrypoints.api.client.ClientModInitializer; -import net.ornithemc.osl.networking.api.client.ClientConnectionEvents; -import net.ornithemc.osl.networking.api.client.ClientPlayNetworking; -import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingException; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingSource; -import net.ornithemc.osl.registries.impl.registry.sync.SyncedRegistriesPacketSerializer; - -public final class RegistriesEntrypoint implements ClientModInitializer { - - @Override - public void initClient() { - ClientPlayNetworking.registerListener(Constants.OSL_REGISTRY_SYNC_CHANNEL, (context, buffer) -> { - try { - SyncedRegistriesPacketSerializer.deserialize(buffer, RegistryMappingSource.REMOTE_SERVER); - - context.minecraft().execute(() -> { - SyncedRegistriesImpl.applyMappings(); - }); - } catch (RegistryMappingException e) { - RegistriesImpl.LOGGER.error("Unable to remap registries!", e); - - context.minecraft().execute(() -> { - SyncedRegistriesImpl.resetMappings(); - - if (context.networkHandler().getConnection().isConnected()) { - context.networkHandler().getConnection().disconnect(new LiteralText("Failed to remap registries: " + e.getMessage())); - } - }); - } - }); - ClientConnectionEvents.DISCONNECT.register(context -> { - if (context.isMultiplayer()) { - SyncedRegistriesImpl.undoMappings(); - } - }); - } -} diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java b/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java deleted file mode 100644 index 16d16aa6b..000000000 --- a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java +++ /dev/null @@ -1,49 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.client; - -import java.io.IOException; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import com.llamalad7.mixinextras.sugar.Local; - -import net.minecraft.server.integrated.IntegratedServer; -import net.minecraft.util.crash.CrashException; -import net.minecraft.util.crash.CrashReport; -import net.minecraft.world.storage.WorldStorage; - -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; -import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; - -@Mixin(IntegratedServer.class) -public class IntegratedServerMixin { - - @Inject( - method = "loadWorld", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/storage/WorldStorage;loadData()Lnet/minecraft/world/WorldData;" - ) - ) - private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local WorldStorage storage) { - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); - } catch (IOException e) { - throw new CrashException(CrashReport.of(e, "Exception initializing level")); - } - } - } - - @Inject( - method = "shutdown", - at = @At( - value = "TAIL" - ) - ) - private void osl$registries$unmapRegistries(CallbackInfo ci) { - SyncedRegistriesImpl.undoMappings(); - } -} diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java b/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java deleted file mode 100644 index 3c06c9618..000000000 --- a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java +++ /dev/null @@ -1,63 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.common; - -import java.io.IOException; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import com.llamalad7.mixinextras.sugar.Local; - -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.world.ServerWorld; -import net.minecraft.util.crash.CrashException; -import net.minecraft.util.crash.CrashReport; -import net.minecraft.world.dimension.DimensionType; -import net.minecraft.world.storage.WorldStorage; - -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; -import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; - -@Mixin(MinecraftServer.class) -public class MinecraftServerMixin { - - @Inject( - method = "loadWorld", - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/world/storage/WorldStorage;loadData()Lnet/minecraft/world/WorldData;" - ) - ) - private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local WorldStorage storage) { - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); - } catch (IOException e) { - throw new CrashException(CrashReport.of(e, "Exception initializing level")); - } - } - } - - @Inject( - method = "saveWorlds", - at = @At( - value = "HEAD" - ) - ) - private void osl$registries$saveRegistryMappings(CallbackInfo ci) { - @SuppressWarnings("resource") - MinecraftServer server = (MinecraftServer) (Object) this; - - ServerWorld overworld = server.getWorld(DimensionType.OVERWORLD); - WorldStorage storage = overworld.getStorage(); - - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$saveRegistryMappings(); - } catch (IOException e) { - RegistriesImpl.LOGGER.error("Exception saving level", e); - } - } - } -} diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesNbtSerializer.java b/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesNbtSerializer.java deleted file mode 100644 index b2b48ca34..000000000 --- a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesNbtSerializer.java +++ /dev/null @@ -1,78 +0,0 @@ -package net.ornithemc.osl.registries.impl.registry.sync; - -import java.io.IOException; - -import it.unimi.dsi.fastutil.objects.Object2IntMap; - -import net.minecraft.nbt.NbtCompound; - -import net.ornithemc.osl.core.api.util.NamespacedIdentifier; -import net.ornithemc.osl.core.api.util.NamespacedIdentifiers; -import net.ornithemc.osl.registries.api.registry.Registry; -import net.ornithemc.osl.registries.impl.Constants; -import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.SyncedRegistry; - -public final class SyncedRegistriesNbtSerializer { - - private static final Registry REGISTRIES = SyncedRegistriesImpl.SYNCED_REGISTRIES; - - public static void serialize(NbtCompound nbt) throws IOException { - NbtCompound registriesNbt = new NbtCompound(); - - for (SyncedRegistry registry : REGISTRIES) { - NamespacedIdentifier identifier = registry.identifier(); - SerializableRegistryMappings mappings = registry.getMappings(); - - NbtCompound mappingsNbt = new NbtCompound(); - - mappings.write(mappingsNbt, SyncedRegistriesNbtSerializer::serialize); - registriesNbt.put(identifier.toString(), mappingsNbt); - } - - nbt.putInt(Constants.FORMAT_NBT_KEY, Constants.REGISTRY_MAPPINGS_FORMAT); - nbt.put(Constants.REGISTRIES_NBT_KEY, registriesNbt); - } - - public static void deserialize(NbtCompound nbt, RegistryMappingSource source) throws IOException, RegistryMappingException { - int format = nbt.getInt(Constants.FORMAT_NBT_KEY); - - if (format > Constants.REGISTRY_MAPPINGS_FORMAT) { - throw new IllegalStateException("cannot read registry mappings of newer format " + format); - } - - NbtCompound registriesNbt = nbt.getCompound(Constants.REGISTRIES_NBT_KEY); - - for (String key : registriesNbt.getKeys()) { - NbtCompound mappingsNbt = registriesNbt.getCompound(key); - - NamespacedIdentifier identifier = NamespacedIdentifiers.parse(key); - SyncedRegistry registry = REGISTRIES.get(identifier); - - if (registry != null) { - SerializableRegistryMappings mappings = registry.getMappings(); - - try { - mappings.read(mappingsNbt, SyncedRegistriesNbtSerializer::deserialize, source); - } catch (RegistryMappingException e) { - throw new RegistryMappingException("Invalid registry mappings for " + identifier, e); - } - } else { - RegistriesImpl.LOGGER.info("Skipping mappings for missing registry {}", identifier); - } - } - } - - public static void serialize(NbtCompound nbt, Object2IntMap mappings) throws IOException { - for (Object2IntMap.Entry mapping : mappings.object2IntEntrySet()) { - nbt.putInt(mapping.getKey().toString(), mapping.getIntValue()); - } - } - - public static void deserialize(NbtCompound nbt, Object2IntMap mappings, RegistryMappingSource source) throws IOException, RegistryMappingException { - for (String key : nbt.getKeys()) { - mappings.put(NamespacedIdentifiers.parse(key), nbt.getInt(key)); - } - } -} diff --git a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/resources/osl.registries.mixins.json b/libraries/registries/registries-mc18w43a-mc19w03c/src/main/resources/osl.registries.mixins.json deleted file mode 100644 index 18fd032b2..000000000 --- a/libraries/registries/registries-mc18w43a-mc19w03c/src/main/resources/osl.registries.mixins.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "required": true, - "minVersion": "0.8", - "package": "net.ornithemc.osl.registries.impl.mixin", - "compatibilityLevel": "JAVA_8", - "mixins": [ - "common.AlphaWorldStorageMixin", - "common.BootstrapMixin", - "common.CrudeIncrementalIntIdentityHashMapMixin", - "common.DefaultedIdRegistryAccess", - "common.Id2ObjectBiMapMixin", - "common.IdRegistryMixin", - "common.MinecraftServerMixin", - "common.PlayerManagerMixin", - "common.RegistryMixin" - ], - "client": [ - "client.IntegratedServerMixin" - ], - "server": [ - ], - "injectors": { - "defaultRequire": 1 - } -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/build.gradle b/libraries/registries/registries-mc19w04a-mc1.14.4/build.gradle deleted file mode 100644 index 0a350fdb3..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/build.gradle +++ /dev/null @@ -1 +0,0 @@ -setUpModule(project) diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/gradle.properties b/libraries/registries/registries-mc19w04a-mc1.14.4/gradle.properties deleted file mode 100644 index db02c71d7..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/gradle.properties +++ /dev/null @@ -1,4 +0,0 @@ -min_mc_version = 19w04a -max_mc_version = 1.14.4 - -minecraft_version = 1.14.4 diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/api/registry/RegistryKeys.java b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/api/registry/RegistryKeys.java deleted file mode 100644 index 1897728b1..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/api/registry/RegistryKeys.java +++ /dev/null @@ -1,46 +0,0 @@ -package net.ornithemc.osl.registries.api.registry; - -import net.minecraft.block.Block; -import net.minecraft.block.entity.BlockEntityType; -import net.minecraft.entity.EntityType; -import net.minecraft.item.Item; -import net.minecraft.world.biome.Biome; - -import net.ornithemc.osl.core.api.util.NamespacedIdentifier; -import net.ornithemc.osl.core.api.util.NamespacedIdentifiers; - -/** - * Utility class containing commonly used registry keys (i.e. @linkplain - * ResourceKey resource keys} for registries), as well as factory methods - * for creating registry keys. - */ -public final class RegistryKeys { - - public static final ResourceKey> BLOCK = from("block"); - public static final ResourceKey> ITEM = from("item"); - public static final ResourceKey>> BLOCK_ENTITY_TYPE = from("block_entity_type"); - public static final ResourceKey>> ENTITY_TYPE = from("entity_type"); - public static final ResourceKey> BIOME = from("biome"); - - /** - * Constructs a registry key with the default namespace and the given identifier. - * - * @param the value type of the registry. - * @param identifier the identifier of the registry. - * @return the constructed registry key. - */ - public static ResourceKey> from(String identifier) { - return from(NamespacedIdentifiers.from(identifier)); - } - - /** - * Constructs a registry key with the given namespaced identifier. - * - * @param the value type of the registry. - * @param identifier the namespaced identifier of the registry. - * @return the constructed registry key. - */ - public static ResourceKey> from(NamespacedIdentifier identifier) { - return ResourceKeys.from(identifier); - } -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/api/registry/sync/Id2ObjectBiMapMapper.java b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/api/registry/sync/Id2ObjectBiMapMapper.java deleted file mode 100644 index 544daace9..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/api/registry/sync/Id2ObjectBiMapMapper.java +++ /dev/null @@ -1,67 +0,0 @@ -package net.ornithemc.osl.registries.api.registry.sync; - -import net.minecraft.util.Id2ObjectBiMap; - -/** - * An {@linkplain IdMapper} implementation for {@linkplain Id2ObjectBiMap}s - * where IDs are used as keys to the map. The values are moved from the old key - * (the old ID) to the new key (the new ID) within the same map. {@code null} is - * used as the default or "empty" value. - */ -public class Id2ObjectBiMapMapper implements IdMapper { - - public static Id2ObjectBiMapMapper of(Id2ObjectBiMap registry) { - return new Id2ObjectBiMapMapper(registry); - } - - private final Id2ObjectBiMap registry; - private final Id2ObjectBiMap backup; - - private boolean applied; - - @SuppressWarnings("unchecked") - private Id2ObjectBiMapMapper(Id2ObjectBiMap registry) { - this.registry = (Id2ObjectBiMap) registry; - this.backup = new Id2ObjectBiMap<>(registry.size()); - } - - /* - * unlike Registry, Id2ObjectBiMap allows duplicate values - * thus iterating over all values will not give you all id-value pairs! - */ - - @Override - public void apply(RegistryMappings mappings) { - this.backup.osl$registries$clear(); - - for (int id : this.registry.osl$registries$idSet()) { - this.backup.put(this.registry.get(id), id); - } - - this.registry.osl$registries$clear(); - - for (int oldId : this.backup.osl$registries$idSet()) { - Object value = this.backup.get(oldId); - int newId = mappings.remap(oldId); - - if (newId >= 0) { - this.registry.put(value, newId); - } - } - - this.applied = true; - } - - @Override - public void undo(RegistryMappings mappings) { - if (this.applied) { - this.registry.osl$registries$clear(); - - for (int id : this.backup.osl$registries$idSet()) { - this.registry.put(this.backup.get(id), id); - } - } - - this.applied = false; - } -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/Clearable.java b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/Clearable.java deleted file mode 100644 index d7017be43..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/Clearable.java +++ /dev/null @@ -1,16 +0,0 @@ -package net.ornithemc.osl.registries.impl.access; - -public interface Clearable { - - static void clear(Object o) { - if (o instanceof Clearable) { - ((Clearable) o).osl$registries$clear(); - } else { - throw new IllegalArgumentException("not clearable: " + o); - } - } - - default void osl$registries$clear() { - throw new AbstractMethodError(); - } -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/Id2ObjectBiMapAccess.java b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/Id2ObjectBiMapAccess.java deleted file mode 100644 index d0437d3ac..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/Id2ObjectBiMapAccess.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.ornithemc.osl.registries.impl.access; - -import it.unimi.dsi.fastutil.ints.IntSet; - -public interface Id2ObjectBiMapAccess { - - default IntSet osl$registries$idSet() { - throw new AbstractMethodError(); - } - - default void osl$registries$clear() { - throw new AbstractMethodError(); - } -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/IdRegistryAccess.java b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/IdRegistryAccess.java deleted file mode 100644 index 83f069aa5..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/IdRegistryAccess.java +++ /dev/null @@ -1,20 +0,0 @@ -package net.ornithemc.osl.registries.impl.access; - -import net.minecraft.resource.Identifier; - -public interface IdRegistryAccess { - - default void osl$registries$setCallback(RegisterCallback callback) { - throw new AbstractMethodError(); - } - - default void osl$registries$clear() { - throw new AbstractMethodError(); - } - - interface RegisterCallback { - - void valueRegistered(int id, Identifier key, Object value); - - } -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java deleted file mode 100644 index ea596a58c..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.ornithemc.osl.registries.impl.access; - -import java.io.IOException; - -public interface WorldStorageAccess { - - void osl$registries$loadRegistryMappings() throws IOException; - - void osl$registries$saveRegistryMappings() throws IOException; - -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java deleted file mode 100644 index 8095bd5a7..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java +++ /dev/null @@ -1,116 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.common; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; - -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtIo; -import net.minecraft.world.storage.AlphaWorldStorage; - -import net.ornithemc.osl.registries.impl.Constants; -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; -import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingException; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingSource; -import net.ornithemc.osl.registries.impl.registry.sync.SyncedRegistriesNbtSerializer; - -@Mixin(AlphaWorldStorage.class) -public class AlphaWorldStorageMixin implements WorldStorageAccess { - - @Shadow @Final - private String name; - - @Shadow - private File m_52081685() { return null; } - - @Override - public void osl$registries$loadRegistryMappings() throws IOException { - File dir = this.m_52081685(); - File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); - - if (!this.readRegistryMappings(file, false)) { - file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); - - if (!this.readRegistryMappings(file, true)) { - RegistriesImpl.LOGGER.debug("no registry mappings read for '" + this.name + "'"); - } - } - } - - @Unique - private boolean readRegistryMappings(File file, boolean throwOnException) throws IOException { - if (file.exists()) { - try (InputStream is = new FileInputStream(file)) { - NbtCompound nbt = NbtIo.readCompressed(is); - - SyncedRegistriesNbtSerializer.deserialize(nbt, RegistryMappingSource.WORLD_SAVE); - SyncedRegistriesImpl.applyMappings(); - - return true; - } catch (IOException e) { - if (throwOnException) { - throw new IOException("Unable to read registry mappings for '" + this.name + "'", e); - } else { - RegistriesImpl.LOGGER.warn("error while reading registry mappings for '" + this.name + "'", e); - } - } catch (RegistryMappingException e) { - if (throwOnException) { - throw new IOException("Invalid registry mappings for '" + this.name + "'", e); - } else { - RegistriesImpl.LOGGER.warn("invalid registry mappings for '" + this.name + "'", e); - } - } - } - - return false; - } - - @Override - public void osl$registries$saveRegistryMappings() throws IOException { - File dir = this.m_52081685(); - File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); - File tmp = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_tmp"); - File backup = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); - - this.writeRegistryMappings(file, tmp, backup); - } - - @Unique - private void writeRegistryMappings(File file, File newFile, File oldFile) throws IOException { - NbtCompound nbt = new NbtCompound(); - - try { - SyncedRegistriesNbtSerializer.serialize(nbt); - - try (OutputStream os = new FileOutputStream(newFile)) { - NbtIo.writeCompressed(nbt, os); - } - - if (oldFile.exists()) { - oldFile.delete(); - } - - file.renameTo(oldFile); - if (file.exists()) { - file.delete(); - } - - newFile.renameTo(file); - if (newFile.exists()) { - newFile.delete(); - } - } catch (IOException e) { - RegistriesImpl.LOGGER.warn("error while writing registry mappings for '" + this.name + "'", e); - } - } -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/BootstrapMixin.java b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/BootstrapMixin.java deleted file mode 100644 index a82ff17bd..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/BootstrapMixin.java +++ /dev/null @@ -1,34 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.common; - -import org.objectweb.asm.Opcodes; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import net.minecraft.Bootstrap; -import net.minecraft.util.registry.Registry; - -import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; - -@Mixin(Bootstrap.class) -public class BootstrapMixin { - - @Inject( - method = "init", - at = @At( - value = "FIELD", - target = "Lnet/minecraft/util/registry/Registry;REGISTRY:Lnet/minecraft/unmapped/C_06803903;", - opcode = Opcodes.GETSTATIC - ) - ) - private static void osl$registries$initRegistries(CallbackInfo ci) { - // force registry loading (the targeted field access does the same) - Registry.REGISTRY.getClass(); - - RegistriesImpl.init(); - SyncedRegistriesImpl.init(); - } -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin.java b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin.java deleted file mode 100644 index 773df9d09..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/CrudeIncrementalIntIdentityHashMapMixin.java +++ /dev/null @@ -1,33 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.common; - -import java.util.Arrays; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -import net.minecraft.util.CrudeIncrementalIntIdentityHashMap; - -import net.ornithemc.osl.registries.impl.access.Clearable; - -@Mixin(CrudeIncrementalIntIdentityHashMap.class) -public class CrudeIncrementalIntIdentityHashMapMixin implements Clearable { - - @Shadow - private Object[] keys; - @Shadow - private Object[] byId; - - @Shadow - private int nextId; - @Shadow - private int size; - - @Override - public void osl$registries$clear() { - Arrays.fill(this.keys, null); - Arrays.fill(this.byId, null); - - this.nextId = 0; - this.size = 0; - } -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/DefaultedIdRegistryAccess.java b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/DefaultedIdRegistryAccess.java deleted file mode 100644 index 79f753e2f..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/DefaultedIdRegistryAccess.java +++ /dev/null @@ -1,15 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.common; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -import net.minecraft.resource.Identifier; -import net.minecraft.util.registry.DefaultedIdRegistry; - -@Mixin(DefaultedIdRegistry.class) -public interface DefaultedIdRegistryAccess { - - @Accessor("defaultId") - Identifier accessDefaultId(); - -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/Id2ObjectBiMapMixin.java b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/Id2ObjectBiMapMixin.java deleted file mode 100644 index 3a3ce1078..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/Id2ObjectBiMapMixin.java +++ /dev/null @@ -1,59 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.common; - -import java.util.IdentityHashMap; -import java.util.List; - -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import it.unimi.dsi.fastutil.ints.IntOpenHashSet; -import it.unimi.dsi.fastutil.ints.IntSet; - -import net.minecraft.util.Id2ObjectBiMap; - -import net.ornithemc.osl.registries.impl.access.Clearable; -import net.ornithemc.osl.registries.impl.access.Id2ObjectBiMapAccess; - -@Mixin(Id2ObjectBiMap.class) -public class Id2ObjectBiMapMixin implements Id2ObjectBiMapAccess, Clearable { - - @Shadow @Final - private List values; - @Shadow @Final - private IdentityHashMap ids; - - @Shadow - private int nextId; - - @Unique - private final IntSet idSet = new IntOpenHashSet(); - - @Inject( - method = "put(Ljava/lang/Object;I)V", - at = @At( - value = "TAIL" - ) - ) - private void osl$registries$put(T value, int id, CallbackInfo ci) { - this.idSet.add(id); - } - - @Override - public IntSet osl$registries$idSet() { - return this.idSet; - } - - @Override - public void osl$registries$clear() { - this.values.clear(); - this.ids.clear(); - this.idSet.clear(); - - this.nextId = 0; - } -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/IdRegistryMixin.java b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/IdRegistryMixin.java deleted file mode 100644 index 02a70e1be..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/IdRegistryMixin.java +++ /dev/null @@ -1,53 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.common; - -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; - -import com.google.common.collect.BiMap; - -import net.minecraft.resource.Identifier; -import net.minecraft.util.CrudeIncrementalIntIdentityHashMap; -import net.minecraft.util.registry.IdRegistry; - -import net.ornithemc.osl.registries.impl.access.Clearable; -import net.ornithemc.osl.registries.impl.access.IdRegistryAccess; - -@Mixin(IdRegistry.class) -public class IdRegistryMixin implements IdRegistryAccess, Clearable { - - @Shadow @Final - private CrudeIncrementalIntIdentityHashMap ids; - @Shadow @Final - private BiMap values; - - @Unique - private RegisterCallback callback; - - @Inject( - method = "m_26252208", - at = @At( - value = "RETURN" - ) - ) - private void osl$registries$register(int id, Identifier key, T value, CallbackInfoReturnable cir) { - if (this.callback != null) { - this.callback.valueRegistered(id, key, value); - } - } - - @Override - public void osl$registries$setCallback(RegisterCallback callback) { - this.callback = callback; - } - - @Override - public void osl$registries$clear() { - this.values.clear(); - Clearable.clear(this.ids); - } -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/PlayerManagerMixin.java b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/PlayerManagerMixin.java deleted file mode 100644 index 01174aa6b..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/PlayerManagerMixin.java +++ /dev/null @@ -1,38 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.common; - -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import com.llamalad7.mixinextras.sugar.Local; - -import net.minecraft.server.MinecraftServer; -import net.minecraft.server.PlayerManager; -import net.minecraft.server.entity.living.player.ServerPlayerEntity; - -import net.ornithemc.osl.networking.api.server.ServerPlayNetworking; -import net.ornithemc.osl.registries.impl.Constants; -import net.ornithemc.osl.registries.impl.registry.sync.SyncedRegistriesPacketSerializer; - -@Mixin(PlayerManager.class) -public class PlayerManagerMixin { - - @Shadow @Final - private MinecraftServer server; - - @Inject( - method = "onLogin", - at = @At( - value = "NEW", - target = "net/minecraft/network/packet/s2c/play/LoginS2CPacket" - ) - ) - private void osl$idsync$syncRegistries(CallbackInfo ci, @Local ServerPlayerEntity player) { - if (this.server.isDedicated() || !this.server.getUsername().equals(player.getGameProfile().getName())) { - ServerPlayNetworking.sendNoCheck(player, Constants.OSL_REGISTRY_SYNC_CHANNEL, SyncedRegistriesPacketSerializer::serialize); - } - } -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/RegistryMixin.java b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/RegistryMixin.java deleted file mode 100644 index 25dedc451..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/RegistryMixin.java +++ /dev/null @@ -1,28 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.common; - -import org.objectweb.asm.Opcodes; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; - -import net.minecraft.util.registry.Registry; - -import net.ornithemc.osl.registries.api.RegistryEvents; - -@Mixin(Registry.class) -public class RegistryMixin { - - @Inject( - method = "", - at = @At( - value = "FIELD", - target = "Lnet/minecraft/util/registry/Registry;f_81997657:Ljava/util/Map;", - opcode = Opcodes.GETSTATIC - ) - ) - private static void osl$registries$initRegistries(CallbackInfo ci) { - RegistryEvents.INIT_REGISTRIES.invoker().run();; - } -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/VanillaRegistries.java b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/VanillaRegistries.java deleted file mode 100644 index 9cdf561fc..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/VanillaRegistries.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.ornithemc.osl.registries.impl.registry; - -import net.minecraft.util.registry.DefaultedIdRegistry; -import net.minecraft.util.registry.IdRegistry; - -import net.ornithemc.osl.registries.api.registry.DefaultedRegistry; -import net.ornithemc.osl.registries.api.registry.Registry; -import net.ornithemc.osl.registries.api.registry.ResourceKey; - -public final class VanillaRegistries { - - public static Registry registerSimple(ResourceKey> key, net.minecraft.util.registry.Registry registry) { - return RegistriesImpl.register(key, WrappedIdRegistry.of(key, (IdRegistry) registry), () -> { }); - } - - public static DefaultedRegistry registerDefaulted(ResourceKey> key, net.minecraft.util.registry.Registry registry) { - return RegistriesImpl.register(key, WrappedDefaultedIdRegistry.of(key, (DefaultedIdRegistry) registry), () -> { }); - } -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/WrappedDefaultedIdRegistry.java b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/WrappedDefaultedIdRegistry.java deleted file mode 100644 index d1cf93ce7..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/WrappedDefaultedIdRegistry.java +++ /dev/null @@ -1,25 +0,0 @@ -package net.ornithemc.osl.registries.impl.registry; - -import net.minecraft.util.registry.DefaultedIdRegistry; - -import net.ornithemc.osl.core.api.util.NamespacedIdentifier; -import net.ornithemc.osl.registries.api.registry.DefaultedRegistry; -import net.ornithemc.osl.registries.api.registry.Registry; -import net.ornithemc.osl.registries.api.registry.ResourceKey; -import net.ornithemc.osl.registries.impl.mixin.common.DefaultedIdRegistryAccess; - -public class WrappedDefaultedIdRegistry extends WrappedIdRegistry implements DefaultedRegistry { - - public static WrappedDefaultedIdRegistry of(ResourceKey> key, DefaultedIdRegistry registry) { - return new WrappedDefaultedIdRegistry<>(key.identifier(), registry); - } - - private WrappedDefaultedIdRegistry(NamespacedIdentifier identifier, DefaultedIdRegistry registry) { - super(identifier, registry); - } - - @Override - public NamespacedIdentifier getDefaultIdentifier() { - return this.serializeKey(((DefaultedIdRegistryAccess) this.registry).accessDefaultId()); - } -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/WrappedIdRegistry.java b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/WrappedIdRegistry.java deleted file mode 100644 index 6d0df9147..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/WrappedIdRegistry.java +++ /dev/null @@ -1,133 +0,0 @@ -package net.ornithemc.osl.registries.impl.registry; - -import java.util.Iterator; -import java.util.Set; -import java.util.stream.Collectors; - -import net.minecraft.resource.Identifier; -import net.minecraft.util.registry.IdRegistry; - -import net.ornithemc.osl.core.api.util.NamespacedIdentifier; -import net.ornithemc.osl.registries.api.registry.Registry; -import net.ornithemc.osl.registries.api.registry.ResourceKey; -import net.ornithemc.osl.registries.api.registry.ResourceKeys; - -public class WrappedIdRegistry implements ClearableRegistry { - - public static WrappedIdRegistry of(ResourceKey> key, IdRegistry registry) { - return new WrappedIdRegistry<>(key.identifier(), registry); - } - - final NamespacedIdentifier identifier; - final IdRegistry registry; - - private int nextId; - private boolean frozen; - - WrappedIdRegistry(NamespacedIdentifier identifier, IdRegistry registry) { - this.identifier = identifier; - this.registry = registry; - - this.registry.osl$registries$setCallback(this::valueRegistered); - } - - NamespacedIdentifier serializeKey(Identifier key) { - return key; - } - - Identifier deserializeKey(NamespacedIdentifier identifier) { - return identifier == null ? null : (identifier instanceof Identifier ? (Identifier) identifier : new Identifier(identifier.namespace(), identifier.identifier())); - } - - ResourceKey resourceKey(NamespacedIdentifier identifier) { - return identifier == null ? null : ResourceKeys.from(this.identifier, identifier); - } - - private void valueRegistered(int id, Identifier key, Object value) { - if (this.frozen) { - throw new IllegalStateException("registry is frozen!"); - } - - this.nextId = Math.max(this.nextId, id + 1); - } - - @Override - public V register(ResourceKey key, V value) { - return this.register(this.nextId, key, value); - } - - @Override - public V register(int id, ResourceKey key, V value) { - this.registry.m_26252208(id, this.deserializeKey(key.identifier()), value); - return value; - } - - @Override - public NamespacedIdentifier identifier() { - return this.identifier; - } - - @Override - public T get(int id) { - return this.registry.get(id); - } - - @Override - public T get(ResourceKey key) { - Identifier k = this.deserializeKey(key.identifier()); - return this.registry.containsKey(k) ? this.registry.getOrDefault(k) : null; - } - - @Override - public T get(NamespacedIdentifier identifier) { - Identifier k = this.deserializeKey(identifier); - return this.registry.containsKey(k) ? this.registry.getOrDefault(k) : null; - } - - @Override - public int getId(T value) { - return this.registry.getId(value); - } - - @Override - public ResourceKey getKey(T value) { - return this.resourceKey(this.serializeKey(this.registry.getKey(value))); - } - - @Override - public NamespacedIdentifier getIdentifier(T value) { - return this.serializeKey(this.registry.getKey(value)); - } - - @Override - public Set> keySet() { - return this.registry.keySet().stream().map(this::serializeKey).map(this::resourceKey).collect(Collectors.toSet()); - } - - @Override - public Set identifierSet() { - return this.registry.keySet().stream().map(this::serializeKey).collect(Collectors.toSet()); - } - - @Override - public Iterator iterator() { - return this.registry.iterator(); - } - - @Override - public Registry freeze() { - if (!this.frozen) { - this.frozen = true; - } - - return this; - } - - @Override - public void clear() { - this.registry.osl$registries$clear(); - - this.nextId = 0; - this.frozen = false; - } -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesPacketSerializer.java b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesPacketSerializer.java deleted file mode 100644 index d21165816..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/SyncedRegistriesPacketSerializer.java +++ /dev/null @@ -1,81 +0,0 @@ -package net.ornithemc.osl.registries.impl.registry.sync; - -import java.io.IOException; - -import it.unimi.dsi.fastutil.objects.Object2IntMap; - -import net.ornithemc.osl.core.api.util.NamespacedIdentifier; -import net.ornithemc.osl.networking.api.PacketBuffer; -import net.ornithemc.osl.registries.api.registry.Registry; -import net.ornithemc.osl.registries.impl.Constants; -import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.SyncedRegistry; - -public final class SyncedRegistriesPacketSerializer { - - private static final Registry REGISTRIES = SyncedRegistriesImpl.SYNCED_REGISTRIES; - - public static void serialize(PacketBuffer buffer) throws IOException { - buffer.writeVarInt(Constants.REGISTRY_MAPPINGS_FORMAT); - buffer.writeVarInt(REGISTRIES.keySet().size()); - - for (SyncedRegistry registry : REGISTRIES) { - NamespacedIdentifier identifier = registry.identifier(); - SerializableRegistryMappings mappings = registry.getMappings(); - - buffer.writeNamespacedIdentifier(identifier); - mappings.write(buffer, SyncedRegistriesPacketSerializer::serialize); - } - } - - public static void deserialize(PacketBuffer buffer, RegistryMappingSource source) throws IOException, RegistryMappingException { - int format = buffer.readVarInt(); - - if (format > Constants.REGISTRY_MAPPINGS_FORMAT) { - throw new IllegalStateException("cannot read registry mappings of newer format " + format); - } - - int size = buffer.readVarInt(); - - for (int i = 0; i < size; i++) { - NamespacedIdentifier identifier = buffer.readNamespacedIdentifier(); - SyncedRegistry registry = REGISTRIES.get(identifier); - - if (registry != null) { - SerializableRegistryMappings mappings = registry.getMappings(); - - try { - mappings.read(buffer, SyncedRegistriesPacketSerializer::deserialize, source); - } catch (RegistryMappingException e) { - throw new RegistryMappingException("Invalid registry mappings for " + identifier, e); - } - } else { - RegistriesImpl.LOGGER.info("Skipping mappings for missing registry {}", identifier); - } - } - } - - public static void serialize(PacketBuffer buffer, Object2IntMap mappings) throws IOException { - buffer.writeVarInt(mappings.size()); - - for (Object2IntMap.Entry mapping : mappings.object2IntEntrySet()) { - NamespacedIdentifier identifier = mapping.getKey(); - int id = mapping.getIntValue(); - - buffer.writeNamespacedIdentifier(identifier); - buffer.writeVarInt(id); - } - } - - public static void deserialize(PacketBuffer buffer, Object2IntMap mappings, RegistryMappingSource source) throws IOException, RegistryMappingException { - int size = buffer.readVarInt(); - - for (int i = 0; i < size; i++) { - NamespacedIdentifier identifier = buffer.readNamespacedIdentifier(); - int id = buffer.readVarInt(); - - mappings.put(identifier, id); - } - } -} diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/resources/fabric.mod.json b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/resources/fabric.mod.json deleted file mode 100644 index 4bc8f70fb..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/resources/fabric.mod.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "schemaVersion": 1, - "id": "osl-registries", - "version": "0.4.0+mc19w04a-mc1.14.4", - "environment": "*", - "entrypoints": { - "client-init": [ - "net.ornithemc.osl.registries.impl.RegistriesEntrypoint" - ] - }, - "mixins": [ - "osl.registries.mixins.json" - ], - "accessWidener": "osl.registries.classtweaker", - "depends": { - "fabricloader": "\u003e\u003d0.18.0", - "minecraft": "\u003e\u003d1.14-alpha.19.4.a \u003c\u003d1.14.4", - "osl-core": "\u003e\u003d0.11.0", - "osl-entrypoints": "\u003e\u003d0.5.0", - "osl-lifecycle-events": "\u003e\u003d0.6.0", - "osl-executors": "\u003e\u003d0.1.0", - "osl-text-components": "\u003e\u003d0.1.0", - "osl-networking": "\u003e\u003d0.12.0", - "osl-networking-impl": "\u003e\u003d0.2.0" - }, - "name": "OSL Registries", - "description": "Registries API and numerical ID synchronization.", - "authors": [ - "OrnitheMC" - ], - "contact": { - "homepage": "https://ornithemc.net/", - "issues": "https://github.com/OrnitheMC/ornithe-standard-libraries/issues", - "sources": "https://github.com/OrnitheMC/ornithe-standard-libraries" - }, - "license": "Apache-2.0" -} \ No newline at end of file diff --git a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/resources/osl.registries.classtweaker b/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/resources/osl.registries.classtweaker deleted file mode 100644 index 9cbd4bc0c..000000000 --- a/libraries/registries/registries-mc19w04a-mc1.14.4/src/main/resources/osl.registries.classtweaker +++ /dev/null @@ -1,4 +0,0 @@ -classTweaker v1 named - -inject-interface net/minecraft/util/Id2ObjectBiMap net/ornithemc/osl/registries/impl/access/Id2ObjectBiMapAccess -inject-interface net/minecraft/util/registry/IdRegistry net/ornithemc/osl/registries/impl/access/IdRegistryAccess diff --git a/settings.gradle b/settings.gradle index 9c7dd77b1..dd40afefc 100644 --- a/settings.gradle +++ b/settings.gradle @@ -184,8 +184,7 @@ include ':libraries:registries:registries-mc13w36a-mc14w26c' include ':libraries:registries:registries-mc14w27a-mc17w46a' include ':libraries:registries:registries-mc17w47a-mc18w31a' include ':libraries:registries:registries-mc18w32a-mc1.13.2' -include ':libraries:registries:registries-mc18w43a-mc19w03c' -include ':libraries:registries:registries-mc19w04a-mc1.14.4' +include ':libraries:registries:registries-mc18w43a-mc1.14.4' include ':libraries:resource-loader' include ':libraries:resource-loader:resource-loader-mca1.0.1_01-mca1.2.1_01' From dfd33f39bee81ad9a59a85aa21276c07f43705b4 Mon Sep 17 00:00:00 2001 From: Space Walker Date: Thu, 5 Nov 2026 20:05:24 +0100 Subject: [PATCH 3/3] [registries] move registry mapping loading/saving out of mixins --- .../impl/access/WorldStorageAccess.java | 6 +- .../mixin/client/IntegratedServerMixin.java | 6 +- .../mixin/common/AlphaWorldStorageMixin.java | 99 +------------ .../mixin/common/MinecraftServerMixin.java | 10 +- .../sync/RegistryMappingStorage.java} | 53 ++----- .../impl/access/WorldStorageAccess.java | 11 -- .../mixin/client/IntegratedServerMixin.java | 15 +- .../mixin/common/MinecraftServerMixin.java | 27 ++-- .../sync/RegistryMappingStorage.java} | 53 ++----- .../main/resources/osl.registries.mixins.json | 1 - .../impl/access/WorldStorageAccess.java | 11 -- .../mixin/client/IntegratedServerMixin.java | 15 +- .../mixin/common/MinecraftServerMixin.java | 27 ++-- .../sync/RegistryMappingStorage.java} | 53 ++----- .../main/resources/osl.registries.mixins.json | 1 - .../impl/access/WorldStorageAccess.java | 11 -- .../mixin/client/IntegratedServerMixin.java | 15 +- .../mixin/common/MinecraftServerMixin.java | 27 ++-- .../sync/RegistryMappingStorage.java} | 53 ++----- .../main/resources/osl.registries.mixins.json | 1 - .../impl/access/WorldStorageAccess.java | 11 -- .../mixin/client/IntegratedServerMixin.java | 15 +- .../mixin/common/MinecraftServerMixin.java | 27 ++-- .../registry/sync/RegistryMappingStorage.java | 93 ++++++++++++ .../main/resources/osl.registries.mixins.json | 1 - .../impl/access/ServerWorldAccess.java | 7 - .../impl/access/WorldStorageAccess.java | 11 -- .../mixin/client/IntegratedServerMixin.java | 27 ++-- .../mixin/common/AlphaWorldStorageMixin.java | 134 ------------------ .../mixin/common/MinecraftServerMixin.java | 64 +++++---- .../impl/mixin/common/ServerWorldAccess.java | 19 +++ .../impl/mixin/common/ServerWorldMixin.java | 47 ------ .../registry/sync/RegistryMappingStorage.java | 93 ++++++++++++ .../main/resources/osl.registries.mixins.json | 3 +- .../mixin/common/AlphaWorldStorageMixin.java | 7 +- 35 files changed, 425 insertions(+), 629 deletions(-) rename libraries/registries/{registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java => registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java} (56%) delete mode 100644 libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java rename libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/{mixin/common/AlphaWorldStorageMixin.java => registry/sync/RegistryMappingStorage.java} (56%) delete mode 100644 libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java rename libraries/registries/{registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java => registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java} (56%) delete mode 100644 libraries/registries/registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java rename libraries/registries/{registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java => registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java} (56%) delete mode 100644 libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java create mode 100644 libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java delete mode 100644 libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/ServerWorldAccess.java delete mode 100644 libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java delete mode 100644 libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java create mode 100644 libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/ServerWorldAccess.java delete mode 100644 libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/ServerWorldMixin.java create mode 100644 libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java diff --git a/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java b/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java index ea596a58c..2999a189f 100644 --- a/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java +++ b/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java @@ -1,11 +1,9 @@ package net.ornithemc.osl.registries.impl.access; -import java.io.IOException; +import java.io.File; public interface WorldStorageAccess { - void osl$registries$loadRegistryMappings() throws IOException; - - void osl$registries$saveRegistryMappings() throws IOException; + File osl$registries$getDirectory(); } diff --git a/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java b/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java index 12527f90d..4e5eadaaf 100644 --- a/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java +++ b/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java @@ -1,5 +1,6 @@ package net.ornithemc.osl.registries.impl.mixin.client; +import java.io.File; import java.io.IOException; import org.spongepowered.asm.mixin.Mixin; @@ -18,6 +19,7 @@ import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; +import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingStorage; @Conditional(minecraftVersion = @Version(">=12w25a")) @Mixin(IntegratedServer.class) @@ -34,8 +36,10 @@ public class IntegratedServerMixin { ) private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local WorldStorage storage) { if (storage instanceof WorldStorageAccess) { + File dir = ((WorldStorageAccess) storage).osl$registries$getDirectory(); + try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); + RegistryMappingStorage.loadRegistryMappings(dir); } catch (IOException e) { throw new RuntimeException("Exception initializing level", e); } diff --git a/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java b/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java index f7de606ca..f9709701e 100644 --- a/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java +++ b/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java @@ -1,116 +1,23 @@ package net.ornithemc.osl.registries.impl.mixin.common; import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtIo; import net.minecraft.world.storage.AlphaWorldStorage; -import net.ornithemc.osl.registries.impl.Constants; import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; -import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingException; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingSource; -import net.ornithemc.osl.registries.impl.registry.sync.SyncedRegistriesNbtSerializer; @Mixin(AlphaWorldStorage.class) public class AlphaWorldStorageMixin implements WorldStorageAccess { @Shadow @Final - private String name; - - @Shadow - private File getDirectory() { return null; } + private File dir; @Override - public void osl$registries$loadRegistryMappings() throws IOException { - File dir = this.getDirectory(); - File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); - - if (!this.readRegistryMappings(file, false)) { - file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); - - if (!this.readRegistryMappings(file, true)) { - RegistriesImpl.LOGGER.debug("no registry mappings read for '" + this.name + "'"); - } - } - } - - @Unique - private boolean readRegistryMappings(File file, boolean throwOnException) throws IOException { - if (file.exists()) { - try (InputStream is = new FileInputStream(file)) { - NbtCompound nbt = NbtIo.readCompressed(is); - - SyncedRegistriesNbtSerializer.deserialize(nbt, RegistryMappingSource.WORLD_SAVE); - SyncedRegistriesImpl.applyMappings(); - - return true; - } catch (IOException e) { - if (throwOnException) { - throw new IOException("Unable to read registry mappings for '" + this.name + "'", e); - } else { - RegistriesImpl.LOGGER.warn("error while reading registry mappings for '" + this.name + "'", e); - } - } catch (RegistryMappingException e) { - if (throwOnException) { - throw new IOException("Invalid registry mappings for '" + this.name + "'", e); - } else { - RegistriesImpl.LOGGER.warn("invalid registry mappings for '" + this.name + "'", e); - } - } - } - - return false; - } - - @Override - public void osl$registries$saveRegistryMappings() throws IOException { - File dir = this.getDirectory(); - File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); - File tmp = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_tmp"); - File backup = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); - - this.writeRegistryMappings(file, tmp, backup); - } - - @Unique - private void writeRegistryMappings(File file, File newFile, File oldFile) throws IOException { - NbtCompound nbt = new NbtCompound(); - - try { - SyncedRegistriesNbtSerializer.serialize(nbt); - - try (OutputStream os = new FileOutputStream(newFile)) { - NbtIo.writeCompressed(nbt, os); - } - - if (oldFile.exists()) { - oldFile.delete(); - } - - file.renameTo(oldFile); - if (file.exists()) { - file.delete(); - } - - newFile.renameTo(file); - if (newFile.exists()) { - newFile.delete(); - } - } catch (IOException e) { - RegistriesImpl.LOGGER.warn("error while writing registry mappings for '" + this.name + "'", e); - } + public File osl$registries$getDirectory() { + return this.dir; } } diff --git a/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java b/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java index b78e237c1..765025a32 100644 --- a/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java +++ b/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java @@ -1,5 +1,6 @@ package net.ornithemc.osl.registries.impl.mixin.common; +import java.io.File; import java.io.IOException; import org.spongepowered.asm.mixin.Mixin; @@ -15,6 +16,7 @@ import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; +import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingStorage; @Mixin(MinecraftServer.class) public class MinecraftServerMixin { @@ -28,8 +30,10 @@ public class MinecraftServerMixin { ) private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local WorldStorage storage) { if (storage instanceof WorldStorageAccess) { + File dir = ((WorldStorageAccess) storage).osl$registries$getDirectory(); + try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); + RegistryMappingStorage.loadRegistryMappings(dir); } catch (IOException e) { throw new RuntimeException("Exception initializing level", e); } @@ -49,8 +53,10 @@ public class MinecraftServerMixin { WorldStorage storage = overworld.getStorage(); if (storage instanceof WorldStorageAccess) { + File dir = ((WorldStorageAccess) storage).osl$registries$getDirectory(); + try { - ((WorldStorageAccess) storage).osl$registries$saveRegistryMappings(); + RegistryMappingStorage.saveRegistryMappings(dir); } catch (IOException e) { RegistriesImpl.LOGGER.error("Exception saving level", e); } diff --git a/libraries/registries/registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java b/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java similarity index 56% rename from libraries/registries/registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java rename to libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java index f7de606ca..0deac4414 100644 --- a/libraries/registries/registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java +++ b/libraries/registries/registries-mc12w18a-mc1.6.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java @@ -1,4 +1,4 @@ -package net.ornithemc.osl.registries.impl.mixin.common; +package net.ornithemc.osl.registries.impl.registry.sync; import java.io.File; import java.io.FileInputStream; @@ -7,48 +7,28 @@ import java.io.InputStream; import java.io.OutputStream; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; - import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtIo; -import net.minecraft.world.storage.AlphaWorldStorage; import net.ornithemc.osl.registries.impl.Constants; -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingException; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingSource; -import net.ornithemc.osl.registries.impl.registry.sync.SyncedRegistriesNbtSerializer; - -@Mixin(AlphaWorldStorage.class) -public class AlphaWorldStorageMixin implements WorldStorageAccess { - - @Shadow @Final - private String name; - @Shadow - private File getDirectory() { return null; } +public final class RegistryMappingStorage { - @Override - public void osl$registries$loadRegistryMappings() throws IOException { - File dir = this.getDirectory(); + public static void loadRegistryMappings(File dir) throws IOException { File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); - if (!this.readRegistryMappings(file, false)) { + if (!readRegistryMappings(dir, file, false)) { file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); - if (!this.readRegistryMappings(file, true)) { - RegistriesImpl.LOGGER.debug("no registry mappings read for '" + this.name + "'"); + if (!readRegistryMappings(dir, file, true)) { + RegistriesImpl.LOGGER.debug("no registry mappings read for '" + dir.getName() + "'"); } } } - @Unique - private boolean readRegistryMappings(File file, boolean throwOnException) throws IOException { + private static boolean readRegistryMappings(File dir, File file, boolean throwOnException) throws IOException { if (file.exists()) { try (InputStream is = new FileInputStream(file)) { NbtCompound nbt = NbtIo.readCompressed(is); @@ -59,15 +39,15 @@ private boolean readRegistryMappings(File file, boolean throwOnException) throws return true; } catch (IOException e) { if (throwOnException) { - throw new IOException("Unable to read registry mappings for '" + this.name + "'", e); + throw new IOException("Unable to read registry mappings for '" + dir.getName() + "'", e); } else { - RegistriesImpl.LOGGER.warn("error while reading registry mappings for '" + this.name + "'", e); + RegistriesImpl.LOGGER.warn("error while reading registry mappings for '" + dir.getName() + "'", e); } } catch (RegistryMappingException e) { if (throwOnException) { - throw new IOException("Invalid registry mappings for '" + this.name + "'", e); + throw new IOException("Invalid registry mappings for '" + dir.getName() + "'", e); } else { - RegistriesImpl.LOGGER.warn("invalid registry mappings for '" + this.name + "'", e); + RegistriesImpl.LOGGER.warn("invalid registry mappings for '" + dir.getName() + "'", e); } } } @@ -75,18 +55,15 @@ private boolean readRegistryMappings(File file, boolean throwOnException) throws return false; } - @Override - public void osl$registries$saveRegistryMappings() throws IOException { - File dir = this.getDirectory(); + public static void saveRegistryMappings(File dir) throws IOException { File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); File tmp = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_tmp"); File backup = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); - this.writeRegistryMappings(file, tmp, backup); + writeRegistryMappings(dir, file, tmp, backup); } - @Unique - private void writeRegistryMappings(File file, File newFile, File oldFile) throws IOException { + private static void writeRegistryMappings(File dir, File file, File newFile, File oldFile) throws IOException { NbtCompound nbt = new NbtCompound(); try { @@ -110,7 +87,7 @@ private void writeRegistryMappings(File file, File newFile, File oldFile) throws newFile.delete(); } } catch (IOException e) { - RegistriesImpl.LOGGER.warn("error while writing registry mappings for '" + this.name + "'", e); + RegistriesImpl.LOGGER.warn("error while writing registry mappings for '" + dir.getName() + "'", e); } } } diff --git a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java b/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java deleted file mode 100644 index ea596a58c..000000000 --- a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.ornithemc.osl.registries.impl.access; - -import java.io.IOException; - -public interface WorldStorageAccess { - - void osl$registries$loadRegistryMappings() throws IOException; - - void osl$registries$saveRegistryMappings() throws IOException; - -} diff --git a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java b/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java index 12ddba1d4..d826cf396 100644 --- a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java +++ b/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java @@ -1,5 +1,6 @@ package net.ornithemc.osl.registries.impl.mixin.client; +import java.io.File; import java.io.IOException; import org.spongepowered.asm.mixin.Mixin; @@ -15,8 +16,8 @@ import net.minecraft.util.crash.CrashReport; import net.minecraft.world.storage.WorldStorage; -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; +import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingStorage; @Mixin(IntegratedServer.class) public class IntegratedServerMixin { @@ -31,12 +32,12 @@ public class IntegratedServerMixin { ) ) private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local WorldStorage storage) { - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); - } catch (IOException e) { - throw new CrashException(CrashReport.of(e, "Exception initializing level")); - } + File dir = storage.getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + throw new CrashException(CrashReport.of(e, "Exception initializing level")); } } diff --git a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java b/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java index 61a318c15..67e6c2a4d 100644 --- a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java +++ b/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java @@ -1,5 +1,6 @@ package net.ornithemc.osl.registries.impl.mixin.common; +import java.io.File; import java.io.IOException; import org.spongepowered.asm.mixin.Mixin; @@ -15,8 +16,8 @@ import net.minecraft.util.crash.CrashReport; import net.minecraft.world.storage.WorldStorage; -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; +import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingStorage; @Mixin(MinecraftServer.class) public class MinecraftServerMixin { @@ -29,12 +30,12 @@ public class MinecraftServerMixin { ) ) private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local WorldStorage storage) { - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); - } catch (IOException e) { - throw new CrashException(CrashReport.of(e, "Exception initializing level")); - } + File dir = storage.getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + throw new CrashException(CrashReport.of(e, "Exception initializing level")); } } @@ -50,12 +51,12 @@ public class MinecraftServerMixin { ServerWorld overworld = server.worlds[0]; WorldStorage storage = overworld.getStorage(); - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$saveRegistryMappings(); - } catch (IOException e) { - RegistriesImpl.LOGGER.error("Exception saving level", e); - } + File dir = storage.getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + RegistriesImpl.LOGGER.error("Exception saving level", e); } } } diff --git a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java b/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java similarity index 56% rename from libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java rename to libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java index f7de606ca..0deac4414 100644 --- a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java +++ b/libraries/registries/registries-mc13w36a-mc14w26c/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java @@ -1,4 +1,4 @@ -package net.ornithemc.osl.registries.impl.mixin.common; +package net.ornithemc.osl.registries.impl.registry.sync; import java.io.File; import java.io.FileInputStream; @@ -7,48 +7,28 @@ import java.io.InputStream; import java.io.OutputStream; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; - import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtIo; -import net.minecraft.world.storage.AlphaWorldStorage; import net.ornithemc.osl.registries.impl.Constants; -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingException; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingSource; -import net.ornithemc.osl.registries.impl.registry.sync.SyncedRegistriesNbtSerializer; - -@Mixin(AlphaWorldStorage.class) -public class AlphaWorldStorageMixin implements WorldStorageAccess { - - @Shadow @Final - private String name; - @Shadow - private File getDirectory() { return null; } +public final class RegistryMappingStorage { - @Override - public void osl$registries$loadRegistryMappings() throws IOException { - File dir = this.getDirectory(); + public static void loadRegistryMappings(File dir) throws IOException { File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); - if (!this.readRegistryMappings(file, false)) { + if (!readRegistryMappings(dir, file, false)) { file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); - if (!this.readRegistryMappings(file, true)) { - RegistriesImpl.LOGGER.debug("no registry mappings read for '" + this.name + "'"); + if (!readRegistryMappings(dir, file, true)) { + RegistriesImpl.LOGGER.debug("no registry mappings read for '" + dir.getName() + "'"); } } } - @Unique - private boolean readRegistryMappings(File file, boolean throwOnException) throws IOException { + private static boolean readRegistryMappings(File dir, File file, boolean throwOnException) throws IOException { if (file.exists()) { try (InputStream is = new FileInputStream(file)) { NbtCompound nbt = NbtIo.readCompressed(is); @@ -59,15 +39,15 @@ private boolean readRegistryMappings(File file, boolean throwOnException) throws return true; } catch (IOException e) { if (throwOnException) { - throw new IOException("Unable to read registry mappings for '" + this.name + "'", e); + throw new IOException("Unable to read registry mappings for '" + dir.getName() + "'", e); } else { - RegistriesImpl.LOGGER.warn("error while reading registry mappings for '" + this.name + "'", e); + RegistriesImpl.LOGGER.warn("error while reading registry mappings for '" + dir.getName() + "'", e); } } catch (RegistryMappingException e) { if (throwOnException) { - throw new IOException("Invalid registry mappings for '" + this.name + "'", e); + throw new IOException("Invalid registry mappings for '" + dir.getName() + "'", e); } else { - RegistriesImpl.LOGGER.warn("invalid registry mappings for '" + this.name + "'", e); + RegistriesImpl.LOGGER.warn("invalid registry mappings for '" + dir.getName() + "'", e); } } } @@ -75,18 +55,15 @@ private boolean readRegistryMappings(File file, boolean throwOnException) throws return false; } - @Override - public void osl$registries$saveRegistryMappings() throws IOException { - File dir = this.getDirectory(); + public static void saveRegistryMappings(File dir) throws IOException { File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); File tmp = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_tmp"); File backup = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); - this.writeRegistryMappings(file, tmp, backup); + writeRegistryMappings(dir, file, tmp, backup); } - @Unique - private void writeRegistryMappings(File file, File newFile, File oldFile) throws IOException { + private static void writeRegistryMappings(File dir, File file, File newFile, File oldFile) throws IOException { NbtCompound nbt = new NbtCompound(); try { @@ -110,7 +87,7 @@ private void writeRegistryMappings(File file, File newFile, File oldFile) throws newFile.delete(); } } catch (IOException e) { - RegistriesImpl.LOGGER.warn("error while writing registry mappings for '" + this.name + "'", e); + RegistriesImpl.LOGGER.warn("error while writing registry mappings for '" + dir.getName() + "'", e); } } } diff --git a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/resources/osl.registries.mixins.json b/libraries/registries/registries-mc13w36a-mc14w26c/src/main/resources/osl.registries.mixins.json index 195fc4e7c..5f668ca82 100644 --- a/libraries/registries/registries-mc13w36a-mc14w26c/src/main/resources/osl.registries.mixins.json +++ b/libraries/registries/registries-mc13w36a-mc14w26c/src/main/resources/osl.registries.mixins.json @@ -5,7 +5,6 @@ "compatibilityLevel": "JAVA_8", "plugin": "net.ornithemc.conditionalmixin.mixin.ConditionalMixinPlugin", "mixins": [ - "common.AlphaWorldStorageMixin", "common.BootstrapMixin", "common.CrudeIncrementalIntIdentityHashMapMixin", "common.DefaultedIdRegistryAccess", diff --git a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java deleted file mode 100644 index ea596a58c..000000000 --- a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.ornithemc.osl.registries.impl.access; - -import java.io.IOException; - -public interface WorldStorageAccess { - - void osl$registries$loadRegistryMappings() throws IOException; - - void osl$registries$saveRegistryMappings() throws IOException; - -} diff --git a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java index 16d16aa6b..c28da67aa 100644 --- a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java +++ b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java @@ -1,5 +1,6 @@ package net.ornithemc.osl.registries.impl.mixin.client; +import java.io.File; import java.io.IOException; import org.spongepowered.asm.mixin.Mixin; @@ -14,8 +15,8 @@ import net.minecraft.util.crash.CrashReport; import net.minecraft.world.storage.WorldStorage; -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; +import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingStorage; @Mixin(IntegratedServer.class) public class IntegratedServerMixin { @@ -28,12 +29,12 @@ public class IntegratedServerMixin { ) ) private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local WorldStorage storage) { - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); - } catch (IOException e) { - throw new CrashException(CrashReport.of(e, "Exception initializing level")); - } + File dir = storage.getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + throw new CrashException(CrashReport.of(e, "Exception initializing level")); } } diff --git a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java index 61a318c15..67e6c2a4d 100644 --- a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java +++ b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java @@ -1,5 +1,6 @@ package net.ornithemc.osl.registries.impl.mixin.common; +import java.io.File; import java.io.IOException; import org.spongepowered.asm.mixin.Mixin; @@ -15,8 +16,8 @@ import net.minecraft.util.crash.CrashReport; import net.minecraft.world.storage.WorldStorage; -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; +import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingStorage; @Mixin(MinecraftServer.class) public class MinecraftServerMixin { @@ -29,12 +30,12 @@ public class MinecraftServerMixin { ) ) private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local WorldStorage storage) { - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); - } catch (IOException e) { - throw new CrashException(CrashReport.of(e, "Exception initializing level")); - } + File dir = storage.getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + throw new CrashException(CrashReport.of(e, "Exception initializing level")); } } @@ -50,12 +51,12 @@ public class MinecraftServerMixin { ServerWorld overworld = server.worlds[0]; WorldStorage storage = overworld.getStorage(); - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$saveRegistryMappings(); - } catch (IOException e) { - RegistriesImpl.LOGGER.error("Exception saving level", e); - } + File dir = storage.getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + RegistriesImpl.LOGGER.error("Exception saving level", e); } } } diff --git a/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java similarity index 56% rename from libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java rename to libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java index f7de606ca..0deac4414 100644 --- a/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java +++ b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java @@ -1,4 +1,4 @@ -package net.ornithemc.osl.registries.impl.mixin.common; +package net.ornithemc.osl.registries.impl.registry.sync; import java.io.File; import java.io.FileInputStream; @@ -7,48 +7,28 @@ import java.io.InputStream; import java.io.OutputStream; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; - import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtIo; -import net.minecraft.world.storage.AlphaWorldStorage; import net.ornithemc.osl.registries.impl.Constants; -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingException; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingSource; -import net.ornithemc.osl.registries.impl.registry.sync.SyncedRegistriesNbtSerializer; - -@Mixin(AlphaWorldStorage.class) -public class AlphaWorldStorageMixin implements WorldStorageAccess { - - @Shadow @Final - private String name; - @Shadow - private File getDirectory() { return null; } +public final class RegistryMappingStorage { - @Override - public void osl$registries$loadRegistryMappings() throws IOException { - File dir = this.getDirectory(); + public static void loadRegistryMappings(File dir) throws IOException { File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); - if (!this.readRegistryMappings(file, false)) { + if (!readRegistryMappings(dir, file, false)) { file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); - if (!this.readRegistryMappings(file, true)) { - RegistriesImpl.LOGGER.debug("no registry mappings read for '" + this.name + "'"); + if (!readRegistryMappings(dir, file, true)) { + RegistriesImpl.LOGGER.debug("no registry mappings read for '" + dir.getName() + "'"); } } } - @Unique - private boolean readRegistryMappings(File file, boolean throwOnException) throws IOException { + private static boolean readRegistryMappings(File dir, File file, boolean throwOnException) throws IOException { if (file.exists()) { try (InputStream is = new FileInputStream(file)) { NbtCompound nbt = NbtIo.readCompressed(is); @@ -59,15 +39,15 @@ private boolean readRegistryMappings(File file, boolean throwOnException) throws return true; } catch (IOException e) { if (throwOnException) { - throw new IOException("Unable to read registry mappings for '" + this.name + "'", e); + throw new IOException("Unable to read registry mappings for '" + dir.getName() + "'", e); } else { - RegistriesImpl.LOGGER.warn("error while reading registry mappings for '" + this.name + "'", e); + RegistriesImpl.LOGGER.warn("error while reading registry mappings for '" + dir.getName() + "'", e); } } catch (RegistryMappingException e) { if (throwOnException) { - throw new IOException("Invalid registry mappings for '" + this.name + "'", e); + throw new IOException("Invalid registry mappings for '" + dir.getName() + "'", e); } else { - RegistriesImpl.LOGGER.warn("invalid registry mappings for '" + this.name + "'", e); + RegistriesImpl.LOGGER.warn("invalid registry mappings for '" + dir.getName() + "'", e); } } } @@ -75,18 +55,15 @@ private boolean readRegistryMappings(File file, boolean throwOnException) throws return false; } - @Override - public void osl$registries$saveRegistryMappings() throws IOException { - File dir = this.getDirectory(); + public static void saveRegistryMappings(File dir) throws IOException { File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); File tmp = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_tmp"); File backup = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); - this.writeRegistryMappings(file, tmp, backup); + writeRegistryMappings(dir, file, tmp, backup); } - @Unique - private void writeRegistryMappings(File file, File newFile, File oldFile) throws IOException { + private static void writeRegistryMappings(File dir, File file, File newFile, File oldFile) throws IOException { NbtCompound nbt = new NbtCompound(); try { @@ -110,7 +87,7 @@ private void writeRegistryMappings(File file, File newFile, File oldFile) throws newFile.delete(); } } catch (IOException e) { - RegistriesImpl.LOGGER.warn("error while writing registry mappings for '" + this.name + "'", e); + RegistriesImpl.LOGGER.warn("error while writing registry mappings for '" + dir.getName() + "'", e); } } } diff --git a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/resources/osl.registries.mixins.json b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/resources/osl.registries.mixins.json index 837c8ca3b..3e47eefd3 100644 --- a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/resources/osl.registries.mixins.json +++ b/libraries/registries/registries-mc14w27a-mc17w46a/src/main/resources/osl.registries.mixins.json @@ -5,7 +5,6 @@ "compatibilityLevel": "JAVA_8", "plugin": "net.ornithemc.conditionalmixin.mixin.ConditionalMixinPlugin", "mixins": [ - "common.AlphaWorldStorageMixin", "common.BootstrapMixin", "common.CrudeIncrementalIntIdentityHashMapMixin", "common.DefaultedIdRegistryAccess", diff --git a/libraries/registries/registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java b/libraries/registries/registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java deleted file mode 100644 index ea596a58c..000000000 --- a/libraries/registries/registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.ornithemc.osl.registries.impl.access; - -import java.io.IOException; - -public interface WorldStorageAccess { - - void osl$registries$loadRegistryMappings() throws IOException; - - void osl$registries$saveRegistryMappings() throws IOException; - -} diff --git a/libraries/registries/registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java b/libraries/registries/registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java index 16d16aa6b..c28da67aa 100644 --- a/libraries/registries/registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java +++ b/libraries/registries/registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java @@ -1,5 +1,6 @@ package net.ornithemc.osl.registries.impl.mixin.client; +import java.io.File; import java.io.IOException; import org.spongepowered.asm.mixin.Mixin; @@ -14,8 +15,8 @@ import net.minecraft.util.crash.CrashReport; import net.minecraft.world.storage.WorldStorage; -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; +import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingStorage; @Mixin(IntegratedServer.class) public class IntegratedServerMixin { @@ -28,12 +29,12 @@ public class IntegratedServerMixin { ) ) private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local WorldStorage storage) { - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); - } catch (IOException e) { - throw new CrashException(CrashReport.of(e, "Exception initializing level")); - } + File dir = storage.getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + throw new CrashException(CrashReport.of(e, "Exception initializing level")); } } diff --git a/libraries/registries/registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java b/libraries/registries/registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java index 61a318c15..67e6c2a4d 100644 --- a/libraries/registries/registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java +++ b/libraries/registries/registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java @@ -1,5 +1,6 @@ package net.ornithemc.osl.registries.impl.mixin.common; +import java.io.File; import java.io.IOException; import org.spongepowered.asm.mixin.Mixin; @@ -15,8 +16,8 @@ import net.minecraft.util.crash.CrashReport; import net.minecraft.world.storage.WorldStorage; -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; +import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingStorage; @Mixin(MinecraftServer.class) public class MinecraftServerMixin { @@ -29,12 +30,12 @@ public class MinecraftServerMixin { ) ) private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local WorldStorage storage) { - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); - } catch (IOException e) { - throw new CrashException(CrashReport.of(e, "Exception initializing level")); - } + File dir = storage.getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + throw new CrashException(CrashReport.of(e, "Exception initializing level")); } } @@ -50,12 +51,12 @@ public class MinecraftServerMixin { ServerWorld overworld = server.worlds[0]; WorldStorage storage = overworld.getStorage(); - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$saveRegistryMappings(); - } catch (IOException e) { - RegistriesImpl.LOGGER.error("Exception saving level", e); - } + File dir = storage.getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + RegistriesImpl.LOGGER.error("Exception saving level", e); } } } diff --git a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java b/libraries/registries/registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java similarity index 56% rename from libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java rename to libraries/registries/registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java index f7de606ca..0deac4414 100644 --- a/libraries/registries/registries-mc14w27a-mc17w46a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java +++ b/libraries/registries/registries-mc17w47a-mc18w31a/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java @@ -1,4 +1,4 @@ -package net.ornithemc.osl.registries.impl.mixin.common; +package net.ornithemc.osl.registries.impl.registry.sync; import java.io.File; import java.io.FileInputStream; @@ -7,48 +7,28 @@ import java.io.InputStream; import java.io.OutputStream; -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; - import net.minecraft.nbt.NbtCompound; import net.minecraft.nbt.NbtIo; -import net.minecraft.world.storage.AlphaWorldStorage; import net.ornithemc.osl.registries.impl.Constants; -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingException; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingSource; -import net.ornithemc.osl.registries.impl.registry.sync.SyncedRegistriesNbtSerializer; - -@Mixin(AlphaWorldStorage.class) -public class AlphaWorldStorageMixin implements WorldStorageAccess { - - @Shadow @Final - private String name; - @Shadow - private File getDirectory() { return null; } +public final class RegistryMappingStorage { - @Override - public void osl$registries$loadRegistryMappings() throws IOException { - File dir = this.getDirectory(); + public static void loadRegistryMappings(File dir) throws IOException { File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); - if (!this.readRegistryMappings(file, false)) { + if (!readRegistryMappings(dir, file, false)) { file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); - if (!this.readRegistryMappings(file, true)) { - RegistriesImpl.LOGGER.debug("no registry mappings read for '" + this.name + "'"); + if (!readRegistryMappings(dir, file, true)) { + RegistriesImpl.LOGGER.debug("no registry mappings read for '" + dir.getName() + "'"); } } } - @Unique - private boolean readRegistryMappings(File file, boolean throwOnException) throws IOException { + private static boolean readRegistryMappings(File dir, File file, boolean throwOnException) throws IOException { if (file.exists()) { try (InputStream is = new FileInputStream(file)) { NbtCompound nbt = NbtIo.readCompressed(is); @@ -59,15 +39,15 @@ private boolean readRegistryMappings(File file, boolean throwOnException) throws return true; } catch (IOException e) { if (throwOnException) { - throw new IOException("Unable to read registry mappings for '" + this.name + "'", e); + throw new IOException("Unable to read registry mappings for '" + dir.getName() + "'", e); } else { - RegistriesImpl.LOGGER.warn("error while reading registry mappings for '" + this.name + "'", e); + RegistriesImpl.LOGGER.warn("error while reading registry mappings for '" + dir.getName() + "'", e); } } catch (RegistryMappingException e) { if (throwOnException) { - throw new IOException("Invalid registry mappings for '" + this.name + "'", e); + throw new IOException("Invalid registry mappings for '" + dir.getName() + "'", e); } else { - RegistriesImpl.LOGGER.warn("invalid registry mappings for '" + this.name + "'", e); + RegistriesImpl.LOGGER.warn("invalid registry mappings for '" + dir.getName() + "'", e); } } } @@ -75,18 +55,15 @@ private boolean readRegistryMappings(File file, boolean throwOnException) throws return false; } - @Override - public void osl$registries$saveRegistryMappings() throws IOException { - File dir = this.getDirectory(); + public static void saveRegistryMappings(File dir) throws IOException { File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); File tmp = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_tmp"); File backup = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); - this.writeRegistryMappings(file, tmp, backup); + writeRegistryMappings(dir, file, tmp, backup); } - @Unique - private void writeRegistryMappings(File file, File newFile, File oldFile) throws IOException { + private static void writeRegistryMappings(File dir, File file, File newFile, File oldFile) throws IOException { NbtCompound nbt = new NbtCompound(); try { @@ -110,7 +87,7 @@ private void writeRegistryMappings(File file, File newFile, File oldFile) throws newFile.delete(); } } catch (IOException e) { - RegistriesImpl.LOGGER.warn("error while writing registry mappings for '" + this.name + "'", e); + RegistriesImpl.LOGGER.warn("error while writing registry mappings for '" + dir.getName() + "'", e); } } } diff --git a/libraries/registries/registries-mc17w47a-mc18w31a/src/main/resources/osl.registries.mixins.json b/libraries/registries/registries-mc17w47a-mc18w31a/src/main/resources/osl.registries.mixins.json index 60e06d4c1..6d2e224c1 100644 --- a/libraries/registries/registries-mc17w47a-mc18w31a/src/main/resources/osl.registries.mixins.json +++ b/libraries/registries/registries-mc17w47a-mc18w31a/src/main/resources/osl.registries.mixins.json @@ -4,7 +4,6 @@ "package": "net.ornithemc.osl.registries.impl.mixin", "compatibilityLevel": "JAVA_8", "mixins": [ - "common.AlphaWorldStorageMixin", "common.BootstrapMixin", "common.CrudeIncrementalIntIdentityHashMapMixin", "common.DefaultedIdRegistryAccess", diff --git a/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java b/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java deleted file mode 100644 index ea596a58c..000000000 --- a/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.ornithemc.osl.registries.impl.access; - -import java.io.IOException; - -public interface WorldStorageAccess { - - void osl$registries$loadRegistryMappings() throws IOException; - - void osl$registries$saveRegistryMappings() throws IOException; - -} diff --git a/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java b/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java index 16d16aa6b..c28da67aa 100644 --- a/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java +++ b/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java @@ -1,5 +1,6 @@ package net.ornithemc.osl.registries.impl.mixin.client; +import java.io.File; import java.io.IOException; import org.spongepowered.asm.mixin.Mixin; @@ -14,8 +15,8 @@ import net.minecraft.util.crash.CrashReport; import net.minecraft.world.storage.WorldStorage; -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; +import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingStorage; @Mixin(IntegratedServer.class) public class IntegratedServerMixin { @@ -28,12 +29,12 @@ public class IntegratedServerMixin { ) ) private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local WorldStorage storage) { - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); - } catch (IOException e) { - throw new CrashException(CrashReport.of(e, "Exception initializing level")); - } + File dir = storage.getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + throw new CrashException(CrashReport.of(e, "Exception initializing level")); } } diff --git a/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java b/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java index fd559a78c..740fc297d 100644 --- a/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java +++ b/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java @@ -1,5 +1,6 @@ package net.ornithemc.osl.registries.impl.mixin.common; +import java.io.File; import java.io.IOException; import org.spongepowered.asm.mixin.Mixin; @@ -16,8 +17,8 @@ import net.minecraft.world.dimension.DimensionType; import net.minecraft.world.storage.WorldStorage; -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; +import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingStorage; @Mixin(MinecraftServer.class) public class MinecraftServerMixin { @@ -30,12 +31,12 @@ public class MinecraftServerMixin { ) ) private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local WorldStorage storage) { - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); - } catch (IOException e) { - throw new CrashException(CrashReport.of(e, "Exception initializing level")); - } + File dir = storage.getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + throw new CrashException(CrashReport.of(e, "Exception initializing level")); } } @@ -51,12 +52,12 @@ public class MinecraftServerMixin { ServerWorld overworld = server.getWorld(DimensionType.OVERWORLD); WorldStorage storage = overworld.getStorage(); - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$saveRegistryMappings(); - } catch (IOException e) { - RegistriesImpl.LOGGER.error("Exception saving level", e); - } + File dir = storage.getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + RegistriesImpl.LOGGER.error("Exception saving level", e); } } } diff --git a/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java b/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java new file mode 100644 index 000000000..0deac4414 --- /dev/null +++ b/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java @@ -0,0 +1,93 @@ +package net.ornithemc.osl.registries.impl.registry.sync; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.NbtIo; + +import net.ornithemc.osl.registries.impl.Constants; +import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; +import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; + +public final class RegistryMappingStorage { + + public static void loadRegistryMappings(File dir) throws IOException { + File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); + + if (!readRegistryMappings(dir, file, false)) { + file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); + + if (!readRegistryMappings(dir, file, true)) { + RegistriesImpl.LOGGER.debug("no registry mappings read for '" + dir.getName() + "'"); + } + } + } + + private static boolean readRegistryMappings(File dir, File file, boolean throwOnException) throws IOException { + if (file.exists()) { + try (InputStream is = new FileInputStream(file)) { + NbtCompound nbt = NbtIo.readCompressed(is); + + SyncedRegistriesNbtSerializer.deserialize(nbt, RegistryMappingSource.WORLD_SAVE); + SyncedRegistriesImpl.applyMappings(); + + return true; + } catch (IOException e) { + if (throwOnException) { + throw new IOException("Unable to read registry mappings for '" + dir.getName() + "'", e); + } else { + RegistriesImpl.LOGGER.warn("error while reading registry mappings for '" + dir.getName() + "'", e); + } + } catch (RegistryMappingException e) { + if (throwOnException) { + throw new IOException("Invalid registry mappings for '" + dir.getName() + "'", e); + } else { + RegistriesImpl.LOGGER.warn("invalid registry mappings for '" + dir.getName() + "'", e); + } + } + } + + return false; + } + + public static void saveRegistryMappings(File dir) throws IOException { + File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); + File tmp = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_tmp"); + File backup = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); + + writeRegistryMappings(dir, file, tmp, backup); + } + + private static void writeRegistryMappings(File dir, File file, File newFile, File oldFile) throws IOException { + NbtCompound nbt = new NbtCompound(); + + try { + SyncedRegistriesNbtSerializer.serialize(nbt); + + try (OutputStream os = new FileOutputStream(newFile)) { + NbtIo.writeCompressed(nbt, os); + } + + if (oldFile.exists()) { + oldFile.delete(); + } + + file.renameTo(oldFile); + if (file.exists()) { + file.delete(); + } + + newFile.renameTo(file); + if (newFile.exists()) { + newFile.delete(); + } + } catch (IOException e) { + RegistriesImpl.LOGGER.warn("error while writing registry mappings for '" + dir.getName() + "'", e); + } + } +} diff --git a/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/resources/osl.registries.mixins.json b/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/resources/osl.registries.mixins.json index 18fd032b2..f235ae314 100644 --- a/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/resources/osl.registries.mixins.json +++ b/libraries/registries/registries-mc18w32a-mc1.13.2/src/main/resources/osl.registries.mixins.json @@ -4,7 +4,6 @@ "package": "net.ornithemc.osl.registries.impl.mixin", "compatibilityLevel": "JAVA_8", "mixins": [ - "common.AlphaWorldStorageMixin", "common.BootstrapMixin", "common.CrudeIncrementalIntIdentityHashMapMixin", "common.DefaultedIdRegistryAccess", diff --git a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/ServerWorldAccess.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/ServerWorldAccess.java deleted file mode 100644 index c845e18c4..000000000 --- a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/ServerWorldAccess.java +++ /dev/null @@ -1,7 +0,0 @@ -package net.ornithemc.osl.registries.impl.access; - -public interface ServerWorldAccess { - - WorldStorageAccess accessStorage(); - -} diff --git a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java deleted file mode 100644 index ea596a58c..000000000 --- a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/access/WorldStorageAccess.java +++ /dev/null @@ -1,11 +0,0 @@ -package net.ornithemc.osl.registries.impl.access; - -import java.io.IOException; - -public interface WorldStorageAccess { - - void osl$registries$loadRegistryMappings() throws IOException; - - void osl$registries$saveRegistryMappings() throws IOException; - -} diff --git a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java index 926ed55f1..01f2ca995 100644 --- a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java +++ b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/client/IntegratedServerMixin.java @@ -1,5 +1,6 @@ package net.ornithemc.osl.registries.impl.mixin.client; +import java.io.File; import java.io.IOException; import org.spongepowered.asm.mixin.Mixin; @@ -18,8 +19,8 @@ import net.ornithemc.conditionalmixin.annotations.Conditional; import net.ornithemc.conditionalmixin.annotations.Version; -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; +import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingStorage; @Mixin(IntegratedServer.class) public class IntegratedServerMixin { @@ -33,12 +34,12 @@ public class IntegratedServerMixin { ) ) private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local WorldStorage storage) { - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); - } catch (IOException e) { - throw new CrashException(CrashReport.of(e, "Exception initializing level")); - } + File dir = storage.getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + throw new CrashException(CrashReport.of(e, "Exception initializing level")); } } @@ -51,12 +52,12 @@ public class IntegratedServerMixin { ) ) private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local AlphaWorldStorage storage) { - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); - } catch (IOException e) { - throw new CrashException(CrashReport.of(e, "Exception initializing level")); - } + File dir = storage.getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + throw new CrashException(CrashReport.of(e, "Exception initializing level")); } } diff --git a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java deleted file mode 100644 index c81631f9a..000000000 --- a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java +++ /dev/null @@ -1,134 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.common; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; - -import org.spongepowered.asm.mixin.Final; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; -import org.spongepowered.asm.mixin.Unique; - -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtIo; -import net.minecraft.world.storage.AlphaWorldStorage; - -import net.ornithemc.conditionalmixin.annotations.Conditional; -import net.ornithemc.conditionalmixin.annotations.Version; - -import net.ornithemc.osl.registries.impl.Constants; -import net.ornithemc.osl.registries.impl.RegistriesEntrypoint; -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; -import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingException; -import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingSource; -import net.ornithemc.osl.registries.impl.registry.sync.SyncedRegistriesNbtSerializer; - -@Mixin(AlphaWorldStorage.class) -public class AlphaWorldStorageMixin implements WorldStorageAccess { - - @Shadow @Final - private String name; - - @Conditional(minecraftVersion = @Version("<19w04a")) - @Shadow - private File getDirectory() { return null; } - - @Conditional(minecraftVersion = @Version(">=19w04a")) - @Shadow - private File m_52081685() { return null; } - - @Override - public void osl$registries$loadRegistryMappings() throws IOException { - File dir = this.osl$getDirectory(); - File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); - - if (!this.readRegistryMappings(file, false)) { - file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); - - if (!this.readRegistryMappings(file, true)) { - RegistriesImpl.LOGGER.debug("no registry mappings read for '" + this.name + "'"); - } - } - } - - @Unique - private boolean readRegistryMappings(File file, boolean throwOnException) throws IOException { - if (file.exists()) { - try (InputStream is = new FileInputStream(file)) { - NbtCompound nbt = NbtIo.readCompressed(is); - - SyncedRegistriesNbtSerializer.deserialize(nbt, RegistryMappingSource.WORLD_SAVE); - SyncedRegistriesImpl.applyMappings(); - - return true; - } catch (IOException e) { - if (throwOnException) { - throw new IOException("Unable to read registry mappings for '" + this.name + "'", e); - } else { - RegistriesImpl.LOGGER.warn("error while reading registry mappings for '" + this.name + "'", e); - } - } catch (RegistryMappingException e) { - if (throwOnException) { - throw new IOException("Invalid registry mappings for '" + this.name + "'", e); - } else { - RegistriesImpl.LOGGER.warn("invalid registry mappings for '" + this.name + "'", e); - } - } - } - - return false; - } - - @Override - public void osl$registries$saveRegistryMappings() throws IOException { - File dir = this.osl$getDirectory(); - File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); - File tmp = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_tmp"); - File backup = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); - - this.writeRegistryMappings(file, tmp, backup); - } - - @Unique - private void writeRegistryMappings(File file, File newFile, File oldFile) throws IOException { - NbtCompound nbt = new NbtCompound(); - - try { - SyncedRegistriesNbtSerializer.serialize(nbt); - - try (OutputStream os = new FileOutputStream(newFile)) { - NbtIo.writeCompressed(nbt, os); - } - - if (oldFile.exists()) { - oldFile.delete(); - } - - file.renameTo(oldFile); - if (file.exists()) { - file.delete(); - } - - newFile.renameTo(file); - if (newFile.exists()) { - newFile.delete(); - } - } catch (IOException e) { - RegistriesImpl.LOGGER.warn("error while writing registry mappings for '" + this.name + "'", e); - } - } - - @Unique - private File osl$getDirectory() { - if (RegistriesEntrypoint.OLD_WORLD_STORAGE) { - return this.getDirectory(); - } else { - return this.m_52081685(); - } - } -} diff --git a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java index 470e6f0a7..2b6dcf190 100644 --- a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java +++ b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/MinecraftServerMixin.java @@ -1,9 +1,9 @@ package net.ornithemc.osl.registries.impl.mixin.common; +import java.io.File; import java.io.IOException; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @@ -22,9 +22,8 @@ import net.ornithemc.conditionalmixin.annotations.Conditional; import net.ornithemc.conditionalmixin.annotations.Version; -import net.ornithemc.osl.registries.impl.access.ServerWorldAccess; -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; +import net.ornithemc.osl.registries.impl.registry.sync.RegistryMappingStorage; @Mixin(MinecraftServer.class) public class MinecraftServerMixin { @@ -38,12 +37,12 @@ public class MinecraftServerMixin { ) ) private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local WorldStorage storage) { - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); - } catch (IOException e) { - throw new CrashException(CrashReport.of(e, "Exception initializing level")); - } + File dir = storage.getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + throw new CrashException(CrashReport.of(e, "Exception initializing level")); } } @@ -56,12 +55,12 @@ public class MinecraftServerMixin { ) ) private void osl$registries$loadRegistryMappings(CallbackInfo ci, @Local AlphaWorldStorage storage) { - if (storage instanceof WorldStorageAccess) { - try { - ((WorldStorageAccess) storage).osl$registries$loadRegistryMappings(); - } catch (IOException e) { - throw new CrashException(CrashReport.of(e, "Exception initializing level")); - } + File dir = storage.getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + throw new CrashException(CrashReport.of(e, "Exception initializing level")); } } @@ -73,7 +72,19 @@ public class MinecraftServerMixin { ) ) private void osl$registries$saveRegistryMappings(CallbackInfo ci) { - this.saveRegistryMappings(); + @SuppressWarnings("resource") + MinecraftServer server = (MinecraftServer) (Object) this; + + ServerWorld overworld = server.getWorld(DimensionType.OVERWORLD); + WorldStorage storage = overworld.getStorage(); + + File dir = storage.getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + RegistriesImpl.LOGGER.error("Exception saving level", e); + } } @Conditional(minecraftVersion = @Version(">=19w04a")) @@ -84,23 +95,18 @@ public class MinecraftServerMixin { ) ) private void osl$registries$saveRegistryMappings(CallbackInfoReturnable cir) { - this.saveRegistryMappings(); - } - - @Unique - private void saveRegistryMappings() { @SuppressWarnings("resource") MinecraftServer server = (MinecraftServer) (Object) this; ServerWorld overworld = server.getWorld(DimensionType.OVERWORLD); - WorldStorageAccess storage = ((ServerWorldAccess) overworld).accessStorage(); - - if (storage != null) { - try { - ((WorldStorageAccess) storage).osl$registries$saveRegistryMappings(); - } catch (IOException e) { - RegistriesImpl.LOGGER.error("Exception saving level", e); - } + AlphaWorldStorage storage = ((ServerWorldAccess) overworld).accessStorage(); + + File dir = storage.getDirectory(); + + try { + RegistryMappingStorage.loadRegistryMappings(dir); + } catch (IOException e) { + RegistriesImpl.LOGGER.error("Exception saving level", e); } } } diff --git a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/ServerWorldAccess.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/ServerWorldAccess.java new file mode 100644 index 000000000..7e0c8e051 --- /dev/null +++ b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/ServerWorldAccess.java @@ -0,0 +1,19 @@ +package net.ornithemc.osl.registries.impl.mixin.common; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import net.minecraft.server.world.ServerWorld; +import net.minecraft.world.storage.AlphaWorldStorage; + +import net.ornithemc.conditionalmixin.annotations.Conditional; +import net.ornithemc.conditionalmixin.annotations.Version; + +@Conditional(minecraftVersion = @Version(">=19w04a")) +@Mixin(ServerWorld.class) +public interface ServerWorldAccess { + + @Accessor("f_63102719") + AlphaWorldStorage accessStorage(); + +} diff --git a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/ServerWorldMixin.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/ServerWorldMixin.java deleted file mode 100644 index 931321367..000000000 --- a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/ServerWorldMixin.java +++ /dev/null @@ -1,47 +0,0 @@ -package net.ornithemc.osl.registries.impl.mixin.common; - -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; - -import net.minecraft.server.world.ServerWorld; -import net.minecraft.world.World; -import net.minecraft.world.storage.AlphaWorldStorage; -import net.minecraft.world.storage.WorldStorage; - -import net.ornithemc.conditionalmixin.annotations.Conditional; -import net.ornithemc.conditionalmixin.annotations.Version; - -import net.ornithemc.osl.registries.impl.RegistriesEntrypoint; -import net.ornithemc.osl.registries.impl.access.ServerWorldAccess; -import net.ornithemc.osl.registries.impl.access.WorldStorageAccess; - -@Mixin(ServerWorld.class) -public abstract class ServerWorldMixin extends World implements ServerWorldAccess { - - private ServerWorldMixin() { - super(null, null, null, null, null, null, false); - } - - @Conditional(minecraftVersion = @Version("<19w04a")) - @Shadow - private WorldStorage storage; - - @Conditional(minecraftVersion = @Version(">=19w04a")) - @Shadow - private AlphaWorldStorage f_63102719; - - @Override - public WorldStorageAccess accessStorage() { - if (RegistriesEntrypoint.OLD_WORLD_STORAGE) { - if (this.storage instanceof WorldStorageAccess) { - return (WorldStorageAccess) this.storage; - } - } else { - if (this.f_63102719 instanceof WorldStorageAccess) { - return (WorldStorageAccess) this.f_63102719; - } - } - - return null; - } -} diff --git a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java new file mode 100644 index 000000000..0deac4414 --- /dev/null +++ b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/java/net/ornithemc/osl/registries/impl/registry/sync/RegistryMappingStorage.java @@ -0,0 +1,93 @@ +package net.ornithemc.osl.registries.impl.registry.sync; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; + +import net.minecraft.nbt.NbtCompound; +import net.minecraft.nbt.NbtIo; + +import net.ornithemc.osl.registries.impl.Constants; +import net.ornithemc.osl.registries.impl.registry.RegistriesImpl; +import net.ornithemc.osl.registries.impl.registry.SyncedRegistriesImpl; + +public final class RegistryMappingStorage { + + public static void loadRegistryMappings(File dir) throws IOException { + File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); + + if (!readRegistryMappings(dir, file, false)) { + file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); + + if (!readRegistryMappings(dir, file, true)) { + RegistriesImpl.LOGGER.debug("no registry mappings read for '" + dir.getName() + "'"); + } + } + } + + private static boolean readRegistryMappings(File dir, File file, boolean throwOnException) throws IOException { + if (file.exists()) { + try (InputStream is = new FileInputStream(file)) { + NbtCompound nbt = NbtIo.readCompressed(is); + + SyncedRegistriesNbtSerializer.deserialize(nbt, RegistryMappingSource.WORLD_SAVE); + SyncedRegistriesImpl.applyMappings(); + + return true; + } catch (IOException e) { + if (throwOnException) { + throw new IOException("Unable to read registry mappings for '" + dir.getName() + "'", e); + } else { + RegistriesImpl.LOGGER.warn("error while reading registry mappings for '" + dir.getName() + "'", e); + } + } catch (RegistryMappingException e) { + if (throwOnException) { + throw new IOException("Invalid registry mappings for '" + dir.getName() + "'", e); + } else { + RegistriesImpl.LOGGER.warn("invalid registry mappings for '" + dir.getName() + "'", e); + } + } + } + + return false; + } + + public static void saveRegistryMappings(File dir) throws IOException { + File file = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME); + File tmp = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_tmp"); + File backup = new File(dir, Constants.REGISTRY_MAPPINGS_FILE_NAME + "_old"); + + writeRegistryMappings(dir, file, tmp, backup); + } + + private static void writeRegistryMappings(File dir, File file, File newFile, File oldFile) throws IOException { + NbtCompound nbt = new NbtCompound(); + + try { + SyncedRegistriesNbtSerializer.serialize(nbt); + + try (OutputStream os = new FileOutputStream(newFile)) { + NbtIo.writeCompressed(nbt, os); + } + + if (oldFile.exists()) { + oldFile.delete(); + } + + file.renameTo(oldFile); + if (file.exists()) { + file.delete(); + } + + newFile.renameTo(file); + if (newFile.exists()) { + newFile.delete(); + } + } catch (IOException e) { + RegistriesImpl.LOGGER.warn("error while writing registry mappings for '" + dir.getName() + "'", e); + } + } +} diff --git a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/resources/osl.registries.mixins.json b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/resources/osl.registries.mixins.json index 9de7f8c2d..070b4a569 100644 --- a/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/resources/osl.registries.mixins.json +++ b/libraries/registries/registries-mc18w43a-mc1.14.4/src/main/resources/osl.registries.mixins.json @@ -5,7 +5,6 @@ "compatibilityLevel": "JAVA_8", "plugin": "net.ornithemc.conditionalmixin.mixin.ConditionalMixinPlugin", "mixins": [ - "common.AlphaWorldStorageMixin", "common.BootstrapMixin", "common.CrudeIncrementalIntIdentityHashMapMixin", "common.DefaultedIdRegistryAccess", @@ -15,7 +14,7 @@ "common.NbtCompoundMixin", "common.PlayerManagerMixin", "common.RegistryMixin", - "common.ServerWorldMixin" + "common.ServerWorldAccess" ], "client": [ "client.IntegratedServerMixin" diff --git a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java index 4f2fa4e56..67fbbb4d6 100644 --- a/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java +++ b/libraries/registries/registries-mca1.0.1_01-mc12w17a/src/main/java/net/ornithemc/osl/registries/impl/mixin/common/AlphaWorldStorageMixin.java @@ -2,6 +2,7 @@ import java.io.File; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -16,11 +17,11 @@ @Mixin(AlphaWorldStorage.class) public class AlphaWorldStorageMixin implements WorldStorageAccess { - @Shadow - private File getDirectory() { return null; } + @Shadow @Final + private File dir; @Override public File osl$registries$getDirectory() { - return this.getDirectory(); + return this.dir; } }