mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-04 00:45:57 +00:00
Fix a ton of fabric impl bugs
This commit is contained in:
parent
c78a984a11
commit
3033fbbf29
@ -1,8 +1,6 @@
|
|||||||
package com.dfsek.terra.mod.util;
|
package com.dfsek.terra.mod.util;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import net.minecraft.registry.Registry;
|
import net.minecraft.registry.Registry;
|
||||||
import net.minecraft.registry.RegistryKey;
|
|
||||||
import net.minecraft.registry.entry.RegistryEntry;
|
import net.minecraft.registry.entry.RegistryEntry;
|
||||||
import net.minecraft.registry.tag.TagGroupLoader.RegistryTags;
|
import net.minecraft.registry.tag.TagGroupLoader.RegistryTags;
|
||||||
import net.minecraft.registry.tag.TagKey;
|
import net.minecraft.registry.tag.TagKey;
|
||||||
@ -16,6 +14,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
|
||||||
public final class TagUtil {
|
public final class TagUtil {
|
||||||
@ -26,10 +25,9 @@ public final class TagUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static <T> Map<TagKey<T>, List<RegistryEntry<T>>> tagsToMutableMap(Registry<T> registry) {
|
private static <T> Map<TagKey<T>, List<RegistryEntry<T>>> tagsToMutableMap(Registry<T> registry) {
|
||||||
return registry
|
return registry.streamTags().collect(HashMap::new,
|
||||||
.streamTags().collect(HashMap::new,
|
(map, tag) -> map.put(tag.getTag(), tag.stream().collect(Collectors.toList())),
|
||||||
(map, tag) -> map.put(tag.getTag(), new ArrayList<>()),
|
HashMap::putAll);
|
||||||
HashMap::putAll);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void registerWorldPresetTags(Registry<WorldPreset> registry) {
|
public static void registerWorldPresetTags(Registry<WorldPreset> registry) {
|
||||||
@ -47,6 +45,13 @@ public final class TagUtil {
|
|||||||
() -> logger.error("Preset {} does not exist!", id)));
|
() -> logger.error("Preset {} does not exist!", id)));
|
||||||
|
|
||||||
registry.startTagReload(new RegistryTags<>(registry.getKey(), collect)).apply();
|
registry.startTagReload(new RegistryTags<>(registry.getKey(), collect)).apply();
|
||||||
|
|
||||||
|
if(logger.isDebugEnabled()) {
|
||||||
|
registry.streamEntries()
|
||||||
|
.map(e -> e.registryKey().getValue() + ": " +
|
||||||
|
e.streamTags().reduce("", (s, t) -> t.id() + ", " + s, String::concat))
|
||||||
|
.forEach(logger::debug);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void registerBiomeTags(Registry<Biome> registry) {
|
public static void registerBiomeTags(Registry<Biome> registry) {
|
||||||
|
@ -0,0 +1,27 @@
|
|||||||
|
package com.dfsek.terra.lifecycle.mixin.lifecycle;
|
||||||
|
|
||||||
|
|
||||||
|
import com.dfsek.terra.api.Platform;
|
||||||
|
|
||||||
|
import com.dfsek.terra.mod.CommonPlatform;
|
||||||
|
|
||||||
|
import com.dfsek.terra.mod.ModPlatform;
|
||||||
|
|
||||||
|
import net.minecraft.client.gui.screen.world.CreateWorldScreen;
|
||||||
|
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 static com.dfsek.terra.lifecycle.util.LifecycleUtil.initialized;
|
||||||
|
|
||||||
|
|
||||||
|
@Mixin(CreateWorldScreen.class)
|
||||||
|
public class CreateWorldScreenMixin {
|
||||||
|
@Inject(method = "onCloseScreen()V", at = @At("HEAD"))
|
||||||
|
public void onClose(CallbackInfo ci) {
|
||||||
|
ModPlatform platform = CommonPlatform.get();
|
||||||
|
platform.getRawConfigRegistry().clear();
|
||||||
|
initialized = false;
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,8 @@
|
|||||||
package com.dfsek.terra.lifecycle.mixin.lifecycle;
|
package com.dfsek.terra.lifecycle.mixin.lifecycle;
|
||||||
|
|
||||||
|
import com.dfsek.terra.mod.CommonPlatform;
|
||||||
|
import com.dfsek.terra.mod.ModPlatform;
|
||||||
|
|
||||||
import com.mojang.datafixers.DataFixer;
|
import com.mojang.datafixers.DataFixer;
|
||||||
import net.minecraft.resource.ResourcePackManager;
|
import net.minecraft.resource.ResourcePackManager;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
@ -34,6 +37,8 @@ public class MinecraftServerMixin {
|
|||||||
|
|
||||||
@Inject(method = "shutdown()V", at = @At("RETURN"))
|
@Inject(method = "shutdown()V", at = @At("RETURN"))
|
||||||
private void injectShutdown(CallbackInfo ci) {
|
private void injectShutdown(CallbackInfo ci) {
|
||||||
|
ModPlatform platform = CommonPlatform.get();
|
||||||
|
platform.getRawConfigRegistry().clear();
|
||||||
initialized = false;
|
initialized = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -39,8 +39,7 @@ public class RegistryLoaderMixin {
|
|||||||
private static Logger LOGGER;
|
private static Logger LOGGER;
|
||||||
|
|
||||||
@Redirect(
|
@Redirect(
|
||||||
method = "load(Lnet/minecraft/registry/RegistryLoader$RegistryLoadable;Lnet/minecraft/registry/DynamicRegistryManager;" +
|
method = "load(Lnet/minecraft/registry/RegistryLoader$RegistryLoadable;Ljava/util/List;Ljava/util/List;)Lnet/minecraft/registry/DynamicRegistryManager$Immutable;",
|
||||||
"Ljava/util/List;)Lnet/minecraft/registry/DynamicRegistryManager$Immutable;",
|
|
||||||
at = @At(
|
at = @At(
|
||||||
value = "INVOKE",
|
value = "INVOKE",
|
||||||
target = "Ljava/util/List;forEach(Ljava/util/function/Consumer;)V",
|
target = "Ljava/util/List;forEach(Ljava/util/function/Consumer;)V",
|
||||||
|
@ -1,23 +1,24 @@
|
|||||||
{
|
{
|
||||||
"required": true,
|
"required": true,
|
||||||
"minVersion": "0.8",
|
"minVersion": "0.8",
|
||||||
"package": "com.dfsek.terra.lifecycle.mixin",
|
"package": "com.dfsek.terra.lifecycle.mixin",
|
||||||
"compatibilityLevel": "JAVA_21",
|
"compatibilityLevel": "JAVA_21",
|
||||||
"mixins": [
|
"mixins": [
|
||||||
"NoiseConfigMixin",
|
"NoiseConfigMixin",
|
||||||
"RegistryEntryReferenceInvoker",
|
"RegistryEntryReferenceInvoker",
|
||||||
"RegistryMixin",
|
"RegistryMixin",
|
||||||
"SimpleRegistryMixin",
|
"SimpleRegistryMixin",
|
||||||
"lifecycle.MinecraftServerMixin",
|
"lifecycle.MinecraftServerMixin",
|
||||||
"lifecycle.RegistryLoaderMixin",
|
"lifecycle.RegistryLoaderMixin",
|
||||||
"lifecycle.SaveLoadingMixin"
|
"lifecycle.SaveLoadingMixin"
|
||||||
],
|
],
|
||||||
"client": [
|
"client": [
|
||||||
],
|
"lifecycle.CreateWorldScreenMixin"
|
||||||
"server": [
|
],
|
||||||
],
|
"server": [
|
||||||
"injectors": {
|
],
|
||||||
"defaultRequire": 1
|
"injectors": {
|
||||||
},
|
"defaultRequire": 1
|
||||||
"refmap": "terra.lifecycle.refmap.json"
|
},
|
||||||
|
"refmap": "terra.lifecycle.refmap.json"
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user