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

@@ -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();
}
}