stonecutter: support 1.20.1

This commit is contained in:
Martin Prokoph
2025-11-20 18:27:04 +01:00
parent 673a936bf7
commit 8d1dec071b
10 changed files with 120 additions and 22 deletions

View File

@@ -40,6 +40,8 @@ dependencies {
}
if (loader == "forge") {
"forge"("net.minecraftforge:forge:${minecraft}-${mod.dep("forge_loader")}")
modCompileOnly("maven.modrinth:xenon-forge:0.3.31")
}
if (loader == "neoforge") {
"neoForge"("net.neoforged:neoforge:${mod.dep("neoforge_loader")}")
@@ -57,7 +59,7 @@ loom {
}
}
if (loader == "forge") {
forge.mixinConfigs("midnightlib.mixins.json")
forge.mixinConfigs("cullleaves.mixins.json", "cullleaves-neoforge.mixins.json")
}
}
@@ -224,4 +226,12 @@ stonecutter {
constants {
arrayOf("fabric", "neoforge", "forge").forEach { it -> put(it, loader == it) }
}
replacements.string {
direction = eval(current.version, ">=1.21")
replace("new ResourceLocation", "ResourceLocation.fromNamespaceAndPath")
}
replacements.string {
direction = eval(current.version, ">=1.21")
replace("me.jellysquid.mods.sodium", "net.caffeinemc.mods.sodium")
}
}

View File

@@ -22,7 +22,7 @@ import org.slf4j.LoggerFactory;
import java.io.IOException;
//? fabric {
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.resource.ResourceManagerHelper;
import net.fabricmc.fabric.api.resource.ResourcePackActivationType;
import net.fabricmc.loader.api.FabricLoader;
@@ -48,9 +48,28 @@ import net.neoforged.neoforge.event.AddPackFindersEvent;
^///?}
*///?}
//? neoforge
//? forge {
/*import net.minecraft.network.chat.Component;
import net.minecraft.server.packs.repository.Pack;
import net.minecraft.server.packs.repository.PackSource;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.ConfigScreenHandler;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.AddPackFindersEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.IExtensionPoint;
import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.forgespi.locating.IModFile;
import net.minecraftforge.network.NetworkConstants;
import net.minecraftforge.resource.PathPackResources;
*///?}
//? neoforge || forge
/*@Mod(CullLeavesClient.MOD_ID)*/
public class CullLeavesClient /*? fabric {*/ implements ClientModInitializer /*?}*/ {
public class CullLeavesClient /*? fabric {*/ implements ModInitializer /*?}*/ {
public static final String MOD_ID = "cullleaves";
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
@@ -115,7 +134,7 @@ public class CullLeavesClient /*? fabric {*/ implements ClientModInitializer /*?
//? fabric {
@Override
public void onInitializeClient() {
public void onInitialize() {
MidnightConfig.init(CullLeavesClient.MOD_ID, CullLeavesConfig.class);
FabricLoader.getInstance().getModContainer("cullleaves").ifPresent(modContainer -> {
ResourceManagerHelper.registerBuiltinResourcePack(ResourceLocation.fromNamespaceAndPath(CullLeavesClient.MOD_ID, "smartleaves"), modContainer, ResourcePackActivationType.NORMAL);
@@ -153,6 +172,32 @@ public class CullLeavesClient /*? fabric {*/ implements ClientModInitializer /*?
event. /^? if >= 1.21.4 {^/ addListener(ResourceLocation.fromNamespaceAndPath(CullLeavesClient.MOD_ID, "resourcepack_options"), /^?} else {^/ /^registerReloadListener( ^//^?}^/ CullLeavesClient.ReloadListener.INSTANCE);
}
}
*///?} else if forge {
/*public CullLeavesClient() {
MidnightConfig.init(MOD_ID, CullLeavesConfig.class);
ModLoadingContext.get().registerExtensionPoint(IExtensionPoint.DisplayTest.class, () -> new IExtensionPoint.DisplayTest(() -> NetworkConstants.IGNORESERVERONLY, (remote, server) -> true));
ModLoadingContext.get().registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class, () ->
new ConfigScreenHandler.ConfigScreenFactory((client, parent) -> MidnightConfig.getScreen(parent, "cullleaves")));
//MinecraftForge.EVENT_BUS.register(new CullLeavesClientEvents());
}
@Mod.EventBusSubscriber(modid = MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
public static class CullLeavesClientEvents {
@SubscribeEvent
public static void addPackFinders(AddPackFindersEvent event) {
if (event.getPackType() == PackType.CLIENT_RESOURCES) {
registerResourcePack(event, ResourceLocation.fromNamespaceAndPath(MOD_ID, "smartleaves"), false);
}
}
private static void registerResourcePack(AddPackFindersEvent event, ResourceLocation id, boolean alwaysEnabled) {
event.addRepositorySource((profileAdder -> {
IModFile file = ModList.get().getModFileById(id.getNamespace()).getFile();
try (PathPackResources pack = new PathPackResources(id.toString(), true, file.findResource("resourcepacks/"+id.getPath()))) {
profileAdder.accept(Pack.readMetaAndCreate(id.toString(), Component.literal(id.getNamespace()+"/"+id.getPath()), alwaysEnabled, a -> pack, PackType.CLIENT_RESOURCES, Pack.Position.TOP, PackSource.BUILT_IN));
} catch (NullPointerException e) {e.printStackTrace();}
}));
}
}
*///?}
}

View File

View File

View File

@@ -1,43 +1,50 @@
package eu.midnightdust.cullleaves.mixin.sodium;
import eu.midnightdust.cullleaves.CullLeavesClient;
import net.caffeinemc.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderer;
import net.caffeinemc.mods.sodium.client.render.frapi.render.AbstractBlockRenderContext;
import net.minecraft.core.BlockPos;
import eu.midnightdust.cullleaves.CullLeavesClient;
import net.minecraft.world.level.block.LeavesBlock;
import net.minecraft.world.level.block.state.BlockState;
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;
//? if >= 1.21.4 {
import net.minecraft.client.renderer.block.model.BlockStateModel;
//?} else {
/*import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.core.BlockPos;
//?} else if >= 1.21 {
/*import net.minecraft.core.BlockPos;
import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.world.level.block.state.BlockState;
*///?} else {
/*import net.caffeinemc.mods.sodium.client.render.chunk.compile.ChunkBuildBuffers;
import net.caffeinemc.mods.sodium.client.render.chunk.compile.pipeline.BlockRenderContext;
*///?}
//? if fabric {
//? if fabric && >= 1.21 {
import net.caffeinemc.mods.sodium.client.render.frapi.render.AbstractBlockRenderContext;
//?} else {
/*import net.minecraft.client.Minecraft;
import org.spongepowered.asm.mixin.Unique;
*///?}
@Mixin(BlockRenderer.class)
public abstract class MixinBlockRenderer /*? if fabric {*/ extends AbstractBlockRenderContext /*?}*/ {
//? if neoforge {
public abstract class MixinBlockRenderer /*? if fabric && >= 1.21 {*/ extends AbstractBlockRenderContext /*?}*/ {
//? if neoforge || < 1.21 {
/*@Unique
private static final Minecraft cullleaves$client = Minecraft.getInstance();
*///?}
@Inject(at = @At("HEAD"), method = "renderModel", cancellable = true)
@Inject(at = @At("HEAD"), method = "renderModel", cancellable = true /*? if forge {*//*, remap = false *//*?}*/)
//? if >= 1.21.4 {
public void cullleaves$cancelRendering(BlockStateModel model, BlockState state, BlockPos pos, BlockPos origin, CallbackInfo ci) {
//?} else {
//?} else if >= 1.21 {
/*public void cullleaves$cancelRendering(BakedModel model, BlockState state, BlockPos pos, BlockPos origin, CallbackInfo ci) {
*///?} else {
/*public void cullleaves$cancelRendering(BlockRenderContext ctx, ChunkBuildBuffers buffers, CallbackInfo ci) {
var state = ctx.state();
var pos = ctx.pos();
*///?}
if (state.getBlock() instanceof LeavesBlock && CullLeavesClient.shouldHideBlock(/*? if fabric {*/ this.level /*?} else {*/ /*cullleaves$client.level *//*?}*/, pos))
if (state.getBlock() instanceof LeavesBlock && CullLeavesClient.shouldHideBlock(/*? if fabric && >= 1.21 {*/ this.level /*?} else {*/ /*cullleaves$client.level *//*?}*/, pos))
ci.cancel();
}
}

View File

@@ -6,7 +6,7 @@
"client": [
"MixinBlockModelRenderer",
"MixinLeavesBlock",
"MixinMangroveRootsBlock",
"MixinMangroveRootsBlock"
],
"injectors": {
"defaultRequire": 1

View File

@@ -20,14 +20,14 @@
"environment": "client",
"entrypoints": {
"client": [
"main": [
"eu.midnightdust.cullleaves.CullLeavesClient"
]
},
"depends": {
"midnightlib": "*",
"minecraft": ">=1.21"
"minecraft": ">=1.20"
},
"breaks": {
"sodium": "<0.6.0"

View File

@@ -8,5 +8,6 @@ deps.neoforge_loader=[UNSUPPORTED]
deps.fabric_version=0.92.3+1.20.1
deps.modmenu_version=7.2.2
deps.sodium_version=mc1.20.1-0.5.13
loom.platform=fabric

View File

@@ -0,0 +1,35 @@
modLoader = "javafml"
loaderVersion = "[43,)"
#issueTrackerURL = ""
license = "MIT License"
[[mods]]
modId = "${id}"
version = "${version}"
displayName = "CullLeaves"
authors = "Motschen, TeamMidnightDust"
description = '''
Adds culling to leaf blocks, providing a huge performance boost over vanilla.
'''
logoFile = "icon.png"
[[dependencies.cullleaves]]
modId = "forge"
mandatory = true
versionRange = "[43,)"
ordering = "NONE"
side = "CLIENT"
[[dependencies.cullleaves]]
modId = "minecraft"
mandatory = true
versionRange = "[1.19.2,)"
ordering = "NONE"
side = "CLIENT"
[[dependencies.cullleaves]]
modId = "midnightlib"
mandatory = true
versionRange = "[1.0.0,)"
ordering = "BEFORE"
side = "CLIENT"