Merge remote-tracking branch 'origin/1.18' into 1.19.2

This commit is contained in:
embeddedt 2023-08-02 19:35:34 -04:00
commit 88e0016e31
No known key found for this signature in database
GPG Key ID: A69433EC199B5613
12 changed files with 98 additions and 31 deletions

View File

@ -26,7 +26,7 @@ import java.util.concurrent.CopyOnWriteArrayList;
public class ModernFixClient {
public static ModernFixClient INSTANCE;
public static long worldLoadStartTime;
public static long worldLoadStartTime = -1;
private static int numRenderTicks;
public static float gameStartTimeSeconds = -1;

View File

@ -35,7 +35,13 @@ public class FerriteCorePostProcess {
toKeyIndex = keyIndex;
}
private static final Object2IntMap<?> EMPTY_MAP = Object2IntMaps.unmodifiable(new Object2IntArrayMap<>());
private static final Object2IntMap<?> EMPTY_MAP;
static {
Object2IntArrayMap<?> map = new Object2IntArrayMap<>();
map.defaultReturnValue(-1);
EMPTY_MAP = Object2IntMaps.unmodifiable(map);
}
public static <O, S extends StateHolder<O, S>> void postProcess(StateDefinition<O, S> state) {
if(!willPostProcess)

View File

@ -32,11 +32,10 @@ dependencies {
modImplementation "net.fabricmc:fabric-loader:${rootProject.fabric_loader_version}"
testImplementation "net.fabricmc:fabric-loader-junit:${rootProject.fabric_loader_version}"
modIncludeImplementation(fabricApi.module("fabric-api-base", rootProject.fabric_api_version)) { exclude group: 'net.fabricmc', module: 'fabric-loader' }
modIncludeImplementation(fabricApi.module("fabric-lifecycle-events-v1", rootProject.fabric_api_version)) { exclude group: 'net.fabricmc', module: 'fabric-loader' }
modImplementation(fabricApi.module("fabric-api-base", rootProject.fabric_api_version)) { exclude group: 'net.fabricmc', module: 'fabric-loader' }
modImplementation(fabricApi.module("fabric-screen-api-v1", rootProject.fabric_api_version)) { exclude group: 'net.fabricmc', module: 'fabric-loader' }
modIncludeImplementation(fabricApi.module("fabric-command-api-v2", rootProject.fabric_api_version)) { exclude group: 'net.fabricmc', module: 'fabric-loader' }
modIncludeImplementation(fabricApi.module("fabric-models-v0", rootProject.fabric_api_version)) { exclude group: 'net.fabricmc', module: 'fabric-loader' }
modImplementation(fabricApi.module("fabric-command-api-v2", rootProject.fabric_api_version)) { exclude group: 'net.fabricmc', module: 'fabric-loader' }
modImplementation(fabricApi.module("fabric-models-v0", rootProject.fabric_api_version)) { exclude group: 'net.fabricmc', module: 'fabric-loader' }
modImplementation(fabricApi.module("fabric-resource-loader-v0", rootProject.fabric_api_version)) { exclude group: 'net.fabricmc', module: 'fabric-loader' }
modImplementation(fabricApi.module("fabric-data-generation-api-v1", rootProject.fabric_api_version)) { exclude group: 'net.fabricmc', module: 'fabric-loader' }
modImplementation("com.terraformersmc:modmenu:${rootProject.modmenu_version}") { transitive false }

View File

@ -1,8 +1,6 @@
package org.embeddedt.modernfix;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
import net.fabricmc.loader.api.FabricLoader;
import org.embeddedt.modernfix.fabric.datagen.RuntimeDatagen;
@ -13,11 +11,8 @@ public class ModernFixClientFabric implements ClientModInitializer {
public void onInitializeClient() {
commonMod = new ModernFixClient();
ClientTickEvents.END_CLIENT_TICK.register((mc) -> commonMod.onRenderTickEnd());
ServerLifecycleEvents.SERVER_STARTED.register(server -> {
commonMod.onServerStarted(server);
});
org.embeddedt.modernfix.fabric.modfixs.DecorativeBlocksFix.fix();
if(FabricLoader.getInstance().isModLoaded("fabric-data-generation-api-v1")) {
RuntimeDatagen.init();
}

View File

@ -1,7 +1,6 @@
package org.embeddedt.modernfix;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents;
import net.minecraft.server.MinecraftServer;
import java.lang.ref.WeakReference;
@ -13,16 +12,6 @@ public class ModernFixFabric implements ModInitializer {
public void onInitialize() {
commonMod = new ModernFix();
ServerLifecycleEvents.SERVER_STARTING.register(server -> {
theServer = new WeakReference<>(server);
});
ServerLifecycleEvents.SERVER_STARTED.register(server -> {
commonMod.onServerStarted();
});
ServerLifecycleEvents.SERVER_STOPPED.register(server -> {
commonMod.onServerDead(server);
});
// TODO: implement entity ID desync
}

View File

@ -0,0 +1,16 @@
package org.embeddedt.modernfix.fabric.bridge;
import net.fabricmc.fabric.impl.client.model.ModelLoadingRegistryImpl;
import net.minecraft.client.resources.model.ModelBakery;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.packs.resources.ResourceManager;
import java.util.function.Consumer;
public class ModelV0Bridge {
public static void populate(Consumer<ResourceLocation> modelConsumer, ModelBakery bakery, ResourceManager manager) {
ModelLoadingRegistryImpl.LoaderInstance instance = ModelLoadingRegistryImpl.begin(bakery, manager);
instance.onModelPopulation(modelConsumer);
instance.finish();
}
}

View File

@ -0,0 +1,18 @@
package org.embeddedt.modernfix.fabric.mixin.core;
import net.minecraft.server.MinecraftServer;
import org.embeddedt.modernfix.ModernFixClient;
import org.embeddedt.modernfix.annotation.ClientOnlyMixin;
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;
@Mixin(MinecraftServer.class)
@ClientOnlyMixin
public class ClientMinecraftServerMixin {
@Inject(method = "runServer", at = @At(value = "INVOKE", target = "Lnet/minecraft/Util;getMillis()J", ordinal = 0))
private void markServerStarted(CallbackInfo ci) {
ModernFixClient.INSTANCE.onServerStarted((MinecraftServer)(Object)this);
}
}

View File

@ -0,0 +1,16 @@
package org.embeddedt.modernfix.fabric.mixin.core;
import net.minecraft.client.Minecraft;
import org.embeddedt.modernfix.ModernFixClient;
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;
@Mixin(Minecraft.class)
public class MCMixin_Fabric {
@Inject(method = "tick", at = @At("RETURN"))
private void onRenderTickEnd(CallbackInfo ci) {
ModernFixClient.INSTANCE.onRenderTickEnd();
}
}

View File

@ -0,0 +1,29 @@
package org.embeddedt.modernfix.fabric.mixin.core;
import net.minecraft.server.MinecraftServer;
import org.embeddedt.modernfix.ModernFix;
import org.embeddedt.modernfix.ModernFixFabric;
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 java.lang.ref.WeakReference;
@Mixin(MinecraftServer.class)
public class MinecraftServerMixin {
@Inject(method = "runServer", at = @At("HEAD"))
private void changeServerReference(CallbackInfo ci) {
ModernFixFabric.theServer = new WeakReference<>((MinecraftServer)(Object)this);
}
@Inject(method = "runServer", at = @At(value = "INVOKE", target = "Lnet/minecraft/Util;getMillis()J", ordinal = 0))
private void hookServerStarted(CallbackInfo ci) {
ModernFix.INSTANCE.onServerStarted();
}
@Inject(method = "stopServer", at = @At("RETURN"))
private void hookServerShutdown(CallbackInfo ci) {
ModernFix.INSTANCE.onServerDead((MinecraftServer)(Object)this);
}
}

View File

@ -8,7 +8,7 @@ import com.google.common.collect.ForwardingMap;
import com.google.common.collect.ImmutableList;
import com.mojang.math.Transformation;
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
import net.fabricmc.fabric.impl.client.model.ModelLoadingRegistryImpl;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.BlockModel;
import net.minecraft.client.renderer.block.model.BlockModelDefinition;
@ -38,6 +38,7 @@ import org.embeddedt.modernfix.api.entrypoint.ModernFixClientIntegration;
import org.embeddedt.modernfix.duck.IExtendedModelBakery;
import org.embeddedt.modernfix.dynamicresources.DynamicBakedModelProvider;
import org.embeddedt.modernfix.dynamicresources.ModelBakeryHelpers;
import org.embeddedt.modernfix.fabric.bridge.ModelV0Bridge;
import org.embeddedt.modernfix.util.LayeredForwardingMap;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
@ -141,9 +142,9 @@ public abstract class ModelBakeryMixin implements IExtendedModelBakery {
};
filler.push(s);
this.injectedModels = new ObjectOpenHashSet<>();
ModelLoadingRegistryImpl.LoaderInstance instance = ModelLoadingRegistryImpl.begin((ModelBakery)(Object)this, this.resourceManager);
instance.onModelPopulation(this.injectedModels::add);
instance.finish();
if(FabricLoader.getInstance().isModLoaded("fabric-models-v0")) {
ModelV0Bridge.populate(this.injectedModels::add, (ModelBakery)(Object)this, this.resourceManager);
}
}
private <K, V> void onModelRemoved(RemovalNotification<K, V> notification) {

View File

@ -93,7 +93,8 @@ public class ModernFixPlatformHooksImpl implements ModernFixPlatformHooks {
}
public void onServerCommandRegister(Consumer<CommandDispatcher<CommandSourceStack>> handler) {
CommandRegistrationCallback.EVENT.register((dispatcher, arg, env) -> handler.accept(dispatcher));
if(FabricLoader.getInstance().isModLoaded("fabric-command-api-v2"))
CommandRegistrationCallback.EVENT.register((dispatcher, arg, env) -> handler.accept(dispatcher));
}
private static Multimap<String, String> modOptions;

View File

@ -33,9 +33,6 @@
"modernfix-common.mixins.json"
],
"depends": {
"fabric-lifecycle-events-v1": "*",
"fabric-command-api-v2": "*",
"fabric-models-v0": "*",
"minecraft": ">=1.16.2"
},
"breaks": {