stonecutter: support NeoForge 1.21.10

This commit is contained in:
Martin Prokoph
2025-11-19 16:26:51 +01:00
parent b77bdc215e
commit c2e4008871
5 changed files with 68 additions and 52 deletions

View File

@@ -1,17 +1,19 @@
package net.puzzlemc.core; package net.puzzlemc.core;
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
import com.terraformersmc.modmenu.api.ModMenuApi;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.resource.v1.ResourceLoader;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.packs.PackType;
import net.puzzlemc.gui.screen.PuzzleOptionsScreen; import net.puzzlemc.gui.screen.PuzzleOptionsScreen;
import net.puzzlemc.splashscreen.PuzzleSplashScreen; import net.puzzlemc.splashscreen.PuzzleSplashScreen;
import static net.puzzlemc.core.PuzzleCore.MOD_ID; import static net.puzzlemc.core.PuzzleCore.MOD_ID;
//? fabric { //? fabric {
import com.terraformersmc.modmenu.api.ConfigScreenFactory;
import com.terraformersmc.modmenu.api.ModMenuApi;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.resource.v1.ResourceLoader;
import net.minecraft.server.packs.PackType;
public class PuzzleClient implements ClientModInitializer, ModMenuApi { public class PuzzleClient implements ClientModInitializer, ModMenuApi {
@Override @Override
@@ -30,19 +32,27 @@ public class PuzzleClient implements ClientModInitializer, ModMenuApi {
//?} //?}
//? neoforge { //? neoforge {
// @Mod(value = MOD_ID, dist = Dist.CLIENT) /*import net.neoforged.api.distmarker.Dist;
// public class PuzzleClient { import net.neoforged.bus.api.SubscribeEvent;
// public PuzzleClient() { import net.neoforged.fml.ModList;
// PuzzleCore.initModules(); import net.neoforged.fml.common.EventBusSubscriber;
// ModList.get().getModContainerById(MOD_ID).orElseThrow().registerExtensionPoint(IConfigScreenFactory.class, (client, parent) -> new PuzzleOptionsScreen(parent)); import net.neoforged.fml.common.Mod;
// } import net.neoforged.neoforge.client.event.AddClientReloadListenersEvent;
// import net.neoforged.neoforge.client.gui.IConfigScreenFactory;
// @EventBusSubscriber(modid = MOD_ID, value = Dist.CLIENT)
// public static class MidnightLibBusEvents { @Mod(value = MOD_ID, dist = Dist.CLIENT)
// @SubscribeEvent public class PuzzleClient {
// public static void onResourceReload(AddClientReloadListenersEvent event) { public PuzzleClient() {
// event.addListener(ResourceLocation.of(MOD_ID, "splash_screen"), PuzzleSplashScreen.ReloadListener.INSTANCE); PuzzleCore.initModules();
// } ModList.get().getModContainerById(MOD_ID).orElseThrow().registerExtensionPoint(IConfigScreenFactory.class, (client, parent) -> new PuzzleOptionsScreen(parent));
// } }
// }
//?} @EventBusSubscriber(modid = MOD_ID, value = Dist.CLIENT)
public static class MidnightLibBusEvents {
@SubscribeEvent
public static void onResourceReload(AddClientReloadListenersEvent event) {
event.addListener(ResourceLocation.fromNamespaceAndPath(MOD_ID, "splash_screen"), PuzzleSplashScreen.ReloadListener.INSTANCE);
}
}
}
*///?}

View File

@@ -11,9 +11,11 @@ import static net.puzzlemc.gui.PuzzleGui.YES;
public class LBGCompat { public class LBGCompat {
public static void init() { public static void init() {
//? fabric {
LBGConfig lbgConfig = LambdaBetterGrass.get().config; LBGConfig lbgConfig = LambdaBetterGrass.get().config;
PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Component.literal("\uD83C\uDF31 LambdaBetterGrass"))); PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Component.literal("\uD83C\uDF31 LambdaBetterGrass")));
PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Component.translatable("lambdabettergrass.option.mode"), (button) -> button.setMessage(lbgConfig.getMode().getTranslatedText()), (button) -> lbgConfig.setMode(lbgConfig.getMode().next()))); PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Component.translatable("lambdabettergrass.option.mode"), (button) -> button.setMessage(lbgConfig.getMode().getTranslatedText()), (button) -> lbgConfig.setMode(lbgConfig.getMode().next())));
PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Component.translatable("lambdabettergrass.option.better_snow"), (button) -> button.setMessage(lbgConfig.hasBetterLayer() ? YES : NO), (button) -> lbgConfig.setBetterLayer(!lbgConfig.hasBetterLayer()))); PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Component.translatable("lambdabettergrass.option.better_snow"), (button) -> button.setMessage(lbgConfig.hasBetterLayer() ? YES : NO), (button) -> lbgConfig.setBetterLayer(!lbgConfig.hasBetterLayer())));
//?}
} }
} }

View File

@@ -11,6 +11,7 @@ import static net.puzzlemc.gui.PuzzleGui.YES;
public class LDLCompat { public class LDLCompat {
public static void init() { public static void init() {
//? fabric {
DynamicLightsConfig ldlConfig = LambDynLights.get().config; DynamicLightsConfig ldlConfig = LambDynLights.get().config;
PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Component.literal("\uD83D\uDCA1 LambDynamicLights"))); PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Component.literal("\uD83D\uDCA1 LambDynamicLights")));
@@ -19,5 +20,6 @@ public class LDLCompat {
PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Component.empty().append("DynLights: ").append(Component.translatable("entity.minecraft.creeper")), (button) -> button.setMessage(ldlConfig.getCreeperLightingMode().getTranslatedText()), (button) -> ldlConfig.setCreeperLightingMode(ldlConfig.getCreeperLightingMode().next()))); PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Component.empty().append("DynLights: ").append(Component.translatable("entity.minecraft.creeper")), (button) -> button.setMessage(ldlConfig.getCreeperLightingMode().getTranslatedText()), (button) -> ldlConfig.setCreeperLightingMode(ldlConfig.getCreeperLightingMode().next())));
PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Component.empty().append("DynLights: ").append(Component.translatable("block.minecraft.tnt")), (button) -> button.setMessage(ldlConfig.getTntLightingMode().getTranslatedText()), (button) -> ldlConfig.setTntLightingMode(ldlConfig.getTntLightingMode().next()))); PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Component.empty().append("DynLights: ").append(Component.translatable("block.minecraft.tnt")), (button) -> button.setMessage(ldlConfig.getTntLightingMode().getTranslatedText()), (button) -> ldlConfig.setTntLightingMode(ldlConfig.getTntLightingMode().next())));
PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Component.empty().append("DynLights: ").append(Component.translatable("lambdynlights.option.light_sources.water_sensitive_check")), (button) -> button.setMessage(ldlConfig.getWaterSensitiveCheck().get() ? YES : NO), (button) -> ldlConfig.getWaterSensitiveCheck().set(!ldlConfig.getWaterSensitiveCheck().get()))); PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Component.empty().append("DynLights: ").append(Component.translatable("lambdynlights.option.light_sources.water_sensitive_check")), (button) -> button.setMessage(ldlConfig.getWaterSensitiveCheck().get() ? YES : NO), (button) -> ldlConfig.getWaterSensitiveCheck().set(!ldlConfig.getWaterSensitiveCheck().get())));
//?}
} }
} }

View File

@@ -46,8 +46,10 @@ public abstract class MixinOptionsScreen extends Screen {
@Unique @Unique
public void puzzle$setButtonPos() { public void puzzle$setButtonPos() {
int i = 0; int i = 0;
if (PlatformFunctions.isModLoaded("lod")) i = i + 358; if (PlatformFunctions.isModLoaded("lod")) {
i = i + 358;
if (MidnightLibConfig.config_screen_list.equals(MidnightLibConfig.ConfigButton.FALSE)) i = i - 25; if (MidnightLibConfig.config_screen_list.equals(MidnightLibConfig.ConfigButton.FALSE)) i = i - 25;
}
puzzle$button.setPosition(this.width / 2 - 178 + i, layout.getY() + layout.getFooterHeight() - 4); puzzle$button.setPosition(this.width / 2 - 178 + i, layout.getY() + layout.getFooterHeight() - 4);
} }
} }

View File

@@ -1,32 +1,32 @@
package net.puzzlemc.splashscreen.mixin; package net.puzzlemc.splashscreen.mixin;
//? neoforge || forge { //? neoforge || forge {
//import net.minecraft.client.MinecraftClient; /*import net.minecraft.client.Minecraft;
//import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.GuiGraphics;
//import net.minecraft.client.gui.screen.SplashOverlay; import net.minecraft.client.gui.screens.LoadingOverlay;
//import net.minecraft.resource.ResourceReload; import net.minecraft.server.packs.resources.ReloadInstance;
//import net.neoforged.neoforge.client.loading.NeoForgeLoadingOverlay; import net.neoforged.neoforge.client.loading.NeoForgeLoadingOverlay;
//import net.puzzlemc.core.config.PuzzleConfig; import net.puzzlemc.core.config.PuzzleConfig;
//import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
//import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
//import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
//import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
//
//import java.util.Optional; import java.util.Optional;
//import java.util.function.Consumer; import java.util.function.Consumer;
//
//@Mixin(NeoForgeLoadingOverlay.class) @Mixin(NeoForgeLoadingOverlay.class)
//public class MixinNeoForgeLoadingOverlay extends SplashOverlay { public class MixinNeoForgeLoadingOverlay extends LoadingOverlay {
// public MixinNeoForgeLoadingOverlay(MinecraftClient client, ResourceReload monitor, Consumer<Optional<Throwable>> exceptionHandler, boolean reloading) { public MixinNeoForgeLoadingOverlay(Minecraft arg, ReloadInstance arg2, Consumer<Optional<Throwable>> consumer, boolean bl) {
// super(client, monitor, exceptionHandler, reloading); super(arg, arg2, consumer, bl);
// } }
//
// @Inject(method = "render", at = @At("HEAD"), cancellable = true) // Replaces the NeoForge loading screen in later stages with the (customized) vanilla version @Inject(method = "render", at = @At("HEAD"), cancellable = true) // Replaces the NeoForge loading screen in later stages with the (customized) vanilla version
// private void redirectNeoForgeLoading(DrawContext context, int mouseX, int mouseY, float tickDelta, CallbackInfo ci) { private void redirectNeoForgeLoading(GuiGraphics context, int mouseX, int mouseY, float tickDelta, CallbackInfo ci) {
// if (PuzzleConfig.resourcepackSplashScreen && PuzzleConfig.hasCustomSplashScreen) { if (PuzzleConfig.resourcepackSplashScreen && PuzzleConfig.hasCustomSplashScreen) {
// super.render(context, mouseX, mouseY, tickDelta); super.render(context, mouseX, mouseY, tickDelta);
// ci.cancel(); ci.cancel();
// } }
// } }
//} }
//?} *///?}