5 Commits

Author SHA1 Message Date
Martin Prokoph
65fccbc09e fix: invalid identifier crash in Sodium compat 2025-12-13 12:29:20 +01:00
Martin Prokoph
01e61acba2 release: v4.1.1
- Port to 1.21.11 (Mounts of Mayhem)
- Add support for Sodium 0.8.0
- Update to MidnightLib 1.9.2
2025-12-12 13:35:15 +01:00
Martin Prokoph
d50656d2af release: CullLeaves v4.1.0 2025-11-23 15:07:48 +01:00
Martin Prokoph
8d1dec071b stonecutter: support 1.20.1 2025-11-20 18:27:04 +01:00
Martin Prokoph
673a936bf7 stonecutter: support 1.21.1 2025-11-20 17:04:34 +01:00
38 changed files with 734 additions and 140 deletions

View File

@@ -0,0 +1,13 @@
### CullLeaves v4.1.1.1
- Fix crash due to invalid identifier in new Sodium compat
## CullLeaves v4.1.1
- Port to 1.21.11 (Mounts of Mayhem)
- Add support for Sodium 0.8.0
- Update to MidnightLib 1.9.2
# Cull Leaves v4.1.0
- Setup a **multiversion** build environment
- CullLeaves will now always be up-to-date on all relevant versions of Minecraft
(Fabric/Forge 1.20.1; Fabric/NeoForge 1.21.1, 1.21.5, 1.21.8, 1.21.10)
- Migrate to Mojang mappings in preparation for upcoming non-obfuscated releases

View File

@@ -24,13 +24,18 @@ repositories {
maven("https://maven.nucleoid.xyz/")
// MidnightLib
maven("https://maven.midnightdust.eu/snapshots/")
maven("https://maven.midnightdust.eu/releases/")
// Sodium
maven("https://maven.caffeinemc.net/releases")
}
dependencies {
minecraft("com.mojang:minecraft:$minecraft")
// MidnightLib
modImplementation ("eu.midnightdust:midnightlib:${mod.dep("midnightlib_version")}+${minecraft}-${loader}")
val midnightlib = "eu.midnightdust:midnightlib:${mod.dep("midnightlib_version")}+${minecraft}-${loader}"
modImplementation(midnightlib)
include(midnightlib)
if (loader == "fabric") {
modImplementation("net.fabricmc:fabric-loader:${mod.dep("fabric_loader")}")
@@ -40,10 +45,16 @@ 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")}")
modCompileOnly("maven.modrinth:sodium:${mod.dep("sodium_version")}-neoforge")
if (minecraft == "1.21.11")
modCompileOnly("net.caffeinemc:sodium-neoforge-mod:0.8.0+mc1.21.11")
else
modCompileOnly("maven.modrinth:sodium:${mod.dep("sodium_version")}-neoforge")
}
mappings (loom.officialMojangMappings())
}
@@ -57,7 +68,7 @@ loom {
}
}
if (loader == "forge") {
forge.mixinConfigs("midnightlib.mixins.json")
forge.mixinConfigs("cullleaves.mixins.json", "cullleaves-neoforge.mixins.json")
}
}
@@ -69,21 +80,24 @@ publishMods {
file = project.tasks.remapJar.get().archiveFile
dryRun = modrinthToken == null || curseforgeToken == null
displayName = "${mod.name} ${loader.replaceFirstChar { it.uppercase() }} ${property("mod.mc_title")}-${mod.version}"
version = mod.version
displayName = "${mod.name} ${mod.version} - ${loader.replaceFirstChar { it.uppercase() }} ${property("mod.mc_title")}"
version = "${mod.version}+${property("mod.mc_title")}-${loader}"
changelog = rootProject.file("CHANGELOG.md").readText()
type = BETA
type = STABLE
modLoaders.add(loader)
if (loader == "fabric") {
modLoaders.add("quilt")
}
val targets = property("mod.mc_targets").toString().split(' ')
modrinth {
projectId = property("publish.modrinth").toString()
accessToken = modrinthToken
targets.forEach(minecraftVersions::add)
requires("midnightlib")
if (loader == "fabric") {
requires("fabric-api")
optional("modmenu")
}
}
@@ -91,41 +105,28 @@ publishMods {
projectId = property("publish.curseforge").toString()
accessToken = curseforgeToken.toString()
targets.forEach(minecraftVersions::add)
requires("midnightlib")
if (loader == "fabric") {
requires("fabric-api")
optional("modmenu")
}
}
github {
accessToken = githubToken
repository = "TeamMidnightDust/CullLeaves"
commitish = "multiversion" // This is the branch the release tag will be created from
tagName = "v" + properties["mod.version"]
// Allow the release to be initially created without any files.
allowEmptyFiles = true
}
}
//publishing {
// publications {
// create<MavenPublication>("mavenJava") {
// pom {
// groupId = "eu.midnightdust"
// artifactId = "midnightlib"
// version = project.version
// github {
// accessToken = githubToken
// repository = "TeamMidnightDust/CullLeaves"
// commitish = "multiversion" // This is the branch the release tag will be created from
//
// from(components["java"])
// }
// }
// tagName = "v" + properties["mod.version"]
//
// // Allow the release to be initially created without any files.
// allowEmptyFiles = true
// }
//}
}
publishing {
repositories {
maven {
name = "MidnightDust"
url = uri("https://maven.midnightdust.eu/snapshots")
url = uri("https://maven.midnightdust.eu/releases")
credentials(PasswordCredentials::class)
}
}
@@ -224,4 +225,16 @@ stonecutter {
constants {
arrayOf("fabric", "neoforge", "forge").forEach { it -> put(it, loader == it) }
}
replacements.string {
direction = eval(current.version, ">=1.21.11")
replace("ResourceLocation", "Identifier")
}
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

@@ -7,7 +7,7 @@ org.gradle.parallel=false
#org.gradle.configureondemand=true
# Mod properties
mod.version=4.1.0
mod.version=4.1.1.1
mod.group=eu.midnightdust
mod.id=cullleaves
mod.name=CullLeaves
@@ -29,7 +29,7 @@ deps.neoforge_loader=[VERSIONED]
deps.neoforge_patch=[VERSIONED]
# Mod dependencies
deps.midnightlib_version=1.9.0-alpha.1
deps.midnightlib_version=1.9.2
deps.sodium_version=mc1.21.8-0.7.0
# Publishing

View File

@@ -22,10 +22,10 @@ stonecutter {
for (version in versions) vers("$version-$loader", version)
}
//i would recommend to use neoforge for mc > 1.20.1, i haven't tested template for forge on versions higher than that
mc("fabric","1.20.1", "1.21.1", "1.21.5", "1.21.8", "1.21.10")
mc("fabric","1.20.1", "1.21.1", "1.21.5", "1.21.8", "1.21.10", "1.21.11")
mc("forge","1.20.1")
//WARNING: neoforge uses mods.toml instead of neoforge.mods.toml for versions 1.20.4 (?) and earlier
mc("neoforge", "1.21.1", "1.21.5", "1.21.8", "1.21.10")
mc("neoforge", "1.21.1", "1.21.5", "1.21.8", "1.21.10", "1.21.11")
}
create(rootProject)
}

View File

@@ -7,7 +7,7 @@ import eu.midnightdust.lib.config.MidnightConfig;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.resources.Identifier;
import net.minecraft.server.packs.PackType;
import net.minecraft.server.packs.resources.ResourceManager;
@@ -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;
@@ -40,13 +40,36 @@ import net.neoforged.api.distmarker.Dist;
import net.neoforged.bus.api.SubscribeEvent;
import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.fml.common.Mod;
import net.neoforged.neoforge.client.event.AddClientReloadListenersEvent;
import net.neoforged.neoforge.event.AddPackFindersEvent;
//? if >= 1.21.4 {
import net.neoforged.neoforge.client.event.AddClientReloadListenersEvent;
//?} else {
/^import net.neoforged.neoforge.client.event.RegisterClientReloadListenersEvent;
^///?}
*///?}
//? 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);
@@ -111,18 +134,18 @@ 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);
ResourceManagerHelper.registerBuiltinResourcePack(Identifier.fromNamespaceAndPath(CullLeavesClient.MOD_ID, "smartleaves"), modContainer, ResourcePackActivationType.NORMAL);
});
//? if >= 1.21.9 {
ResourceLoader.get(PackType.CLIENT_RESOURCES).registerReloader(ResourceLocation.fromNamespaceAndPath(CullLeavesClient.MOD_ID, "resourcepack_options"), CullLeavesClient.ReloadListener.INSTANCE);
ResourceLoader.get(PackType.CLIENT_RESOURCES).registerReloader(Identifier.fromNamespaceAndPath(CullLeavesClient.MOD_ID, "resourcepack_options"), CullLeavesClient.ReloadListener.INSTANCE);
//?} else {
/*ResourceManagerHelper.get(PackType.CLIENT_RESOURCES).registerReloadListener(new SimpleSynchronousResourceReloadListener() {
@Override
public ResourceLocation getFabricId() {
return ResourceLocation.fromNamespaceAndPath(CullLeavesClient.MOD_ID, "resourcepack_options");
public Identifier getFabricId() {
return Identifier.fromNamespaceAndPath(CullLeavesClient.MOD_ID, "resourcepack_options");
}
@Override
public void onResourceManagerReload(ResourceManager manager) {
@@ -141,12 +164,38 @@ public class CullLeavesClient /*? fabric {*/ implements ClientModInitializer /*?
@SubscribeEvent
public static void addPackFinders(AddPackFindersEvent event) {
if (event.getPackType() == PackType.CLIENT_RESOURCES) {
event.addPackFinders(ResourceLocation.fromNamespaceAndPath(CullLeavesClient.MOD_ID, "resourcepacks/smartleaves"), PackType.CLIENT_RESOURCES, Component.literal("cullleaves/smartleaves"), PackSource.BUILT_IN, false, Pack.Position.TOP);
event.addPackFinders(Identifier.fromNamespaceAndPath(CullLeavesClient.MOD_ID, "resourcepacks/smartleaves"), PackType.CLIENT_RESOURCES, Component.literal("cullleaves/smartleaves"), PackSource.BUILT_IN, false, Pack.Position.TOP);
}
}
@SubscribeEvent
public static void onResourceReload(AddClientReloadListenersEvent event) {
event.addListener(ResourceLocation.fromNamespaceAndPath(CullLeavesClient.MOD_ID, "resourcepack_options"), CullLeavesClient.ReloadListener.INSTANCE);
public static void onResourceReload(/^? if >= 1.21.4 {^/ AddClientReloadListenersEvent /^?} else {^//^RegisterClientReloadListenersEvent ^//^?}^/ event) {
event. /^? if >= 1.21.4 {^/ addListener(Identifier.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, Identifier.fromNamespaceAndPath(MOD_ID, "smartleaves"), false);
}
}
private static void registerResourcePack(AddPackFindersEvent event, Identifier 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

@@ -0,0 +1,43 @@
package eu.midnightdust.cullleaves.config;
//? if >= 1.21.11 {
import net.caffeinemc.mods.sodium.api.config.ConfigEntryPoint;
import net.caffeinemc.mods.sodium.api.config.option.OptionFlag;
import net.caffeinemc.mods.sodium.api.config.option.OptionImpact;
import net.caffeinemc.mods.sodium.api.config.structure.ConfigBuilder;
import net.minecraft.network.chat.Component;
import net.minecraft.resources.Identifier;
import static eu.midnightdust.cullleaves.CullLeavesClient.MOD_ID;
public class SodiumConfigEntryPoint implements ConfigEntryPoint {
@Override
public void registerConfigLate(ConfigBuilder builder) {
builder.registerOwnModOptions().setName("Cull Leaves").setColorTheme(builder.createColorTheme().setBaseThemeRGB(0xFF55AA55))
.addPage(builder.createOptionPage().setName(Component.translatable("sodium.options.pages.performance")).addOptionGroup(builder.createOptionGroup()
.addOption(
builder.createBooleanOption(Identifier.fromNamespaceAndPath(MOD_ID, "enabled"))
.setDefaultValue(true)
.setName(Component.translatable("cullleaves.midnightconfig.enabled"))
.setTooltip(Component.translatable("cullleaves.midnightconfig.enabled.tooltip"))
.setBinding(value -> CullLeavesConfig.enabled = value,
() -> CullLeavesConfig.enabled)
.setStorageHandler(() -> CullLeavesConfig.write(MOD_ID))
.setFlags(OptionFlag.REQUIRES_RENDERER_RELOAD)
.setImpact(OptionImpact.MEDIUM)
)
.addOption(
builder.createBooleanOption(Identifier.fromNamespaceAndPath(MOD_ID, "cull_roots"))
.setDefaultValue(true)
.setName(Component.translatable("cullleaves.midnightconfig.cullRoots"))
.setTooltip(Component.translatable("cullleaves.midnightconfig.cullRoots.tooltip"))
.setBinding(value -> CullLeavesConfig.cullRoots = value,
() -> CullLeavesConfig.cullRoots)
.setStorageHandler(() -> CullLeavesConfig.write(MOD_ID))
.setFlags(OptionFlag.REQUIRES_RENDERER_RELOAD)
.setImpact(OptionImpact.MEDIUM)
)
));
}
}
//?}

View File

@@ -4,7 +4,6 @@ import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer;
import eu.midnightdust.cullleaves.CullLeavesClient;
import net.minecraft.client.renderer.block.ModelBlockRenderer;
import net.minecraft.client.renderer.block.model.BlockModelPart;
import net.minecraft.core.BlockPos;
import net.minecraft.world.level.BlockAndTintGetter;
import net.minecraft.world.level.block.LeavesBlock;
@@ -14,12 +13,22 @@ 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.BlockModelPart;
import java.util.List;
//?} else {
/*import net.minecraft.client.resources.model.BakedModel;
import net.minecraft.util.RandomSource;
*///?}
@Mixin(ModelBlockRenderer.class)
public class MixinBlockModelRenderer {
@Inject(at = @At("HEAD"), method = "tesselateBlock", cancellable = true)
//? if >= 1.21.4 {
private void cullleaves$cancelRendering(BlockAndTintGetter world, List<BlockModelPart> parts, BlockState state, BlockPos pos, PoseStack matrices, VertexConsumer vertexConsumer, boolean cull, int overlay, CallbackInfo ci) {
//?} else {
/*private void cullleaves$cancelRendering(BlockAndTintGetter world, BakedModel bakedModel, BlockState state, BlockPos pos, PoseStack matrices, VertexConsumer vertexConsumer, boolean cull, RandomSource randomSource, long l, int overlay, CallbackInfo ci) {
*///?}
if (state.getBlock() instanceof LeavesBlock &&
CullLeavesClient.shouldHideBlock(world, pos)) ci.cancel();
}

View File

View File

@@ -1,22 +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.client.renderer.block.model.BlockStateModel;
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;
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 && >= 1.21 {
/*? if < 1.21.11 {*/ /*import net.caffeinemc.mods.sodium.client.render.frapi.render.AbstractBlockRenderContext*/ /*?} else {*/ import net.caffeinemc.mods.sodium.client.render.model.AbstractBlockRenderContext; /*?}*/;
//?} else {
/*import net.minecraft.client.Minecraft;
import org.spongepowered.asm.mixin.Unique;
*///?}
@Mixin(BlockRenderer.class)
public abstract class MixinBlockRenderer extends AbstractBlockRenderContext {
@Inject(at = @At("HEAD"), method = "renderModel", cancellable = true)
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 /*? if forge {*//*, remap = false *//*?}*/)
//? if >= 1.21.4 {
public void cullleaves$cancelRendering(BlockStateModel model, BlockState state, BlockPos pos, BlockPos origin, CallbackInfo ci) {
if (state.getBlock() instanceof LeavesBlock && CullLeavesClient.shouldHideBlock(this.level, pos))
//?} 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 && >= 1.21 {*/ this.level /*?} else {*/ /*cullleaves$client.level *//*?}*/, pos))
ci.cancel();
}
}
}

View File

@@ -1,56 +1,65 @@
package eu.midnightdust.cullleaves.mixin.sodium;
import eu.midnightdust.cullleaves.config.CullLeavesConfig;
import net.caffeinemc.mods.sodium.client.gui.SodiumGameOptionPages;
import net.caffeinemc.mods.sodium.client.gui.options.OptionFlag;
import net.caffeinemc.mods.sodium.client.gui.options.OptionGroup;
import net.caffeinemc.mods.sodium.client.gui.options.OptionImpact;
import net.caffeinemc.mods.sodium.client.gui.options.OptionImpl;
import net.caffeinemc.mods.sodium.client.gui.options.control.TickBoxControl;
import net.caffeinemc.mods.sodium.client.gui.options.storage.SodiumOptionsStorage;
import net.minecraft.network.chat.Component;
import org.spongepowered.asm.mixin.Final;
//? if < 1.21.11 {
//import eu.midnightdust.cullleaves.config.CullLeavesConfig;
//import net.caffeinemc.mods.sodium.client.gui.SodiumGameOptionPages;
//import net.caffeinemc.mods.sodium.client.gui.options.OptionFlag;
//import net.caffeinemc.mods.sodium.client.gui.options.OptionGroup;
//import net.caffeinemc.mods.sodium.client.gui.options.OptionImpact;
//import net.caffeinemc.mods.sodium.client.gui.options.OptionImpl;
//import net.caffeinemc.mods.sodium.client.gui.options.control.TickBoxControl;
//import net.caffeinemc.mods.sodium.client.gui.options.storage.SodiumOptionsStorage;
//import net.minecraft.network.chat.Component;
//import org.spongepowered.asm.mixin.Final;
//import org.spongepowered.asm.mixin.Mixin;
//import org.spongepowered.asm.mixin.Shadow;
//import org.spongepowered.asm.mixin.injection.At;
//import org.spongepowered.asm.mixin.injection.ModifyVariable;
//
//import java.util.List;
//
//@Mixin(value = SodiumGameOptionPages.class, remap = false)
//public class MixinSodiumGameOptionPages {
//
// @Shadow @Final private static SodiumOptionsStorage sodiumOpts;
//
// @ModifyVariable(method = "performance", at = @At(value = "INVOKE", target = "Lcom/google/common/collect/ImmutableList;copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableList;"))
// private static List<OptionGroup> cullleaves$addCullLeavesOption(List<OptionGroup> groups) {
// groups.add(OptionGroup.createBuilder()
// .add(OptionImpl.createBuilder(boolean.class, sodiumOpts)
// .setName(Component.translatable("cullleaves.midnightconfig.enabled"))
// .setTooltip(Component.translatable("cullleaves.midnightconfig.enabled.tooltip"))
// .setControl(TickBoxControl::new)
// .setBinding((opts, value) -> {
// CullLeavesConfig.enabled = value;
// CullLeavesConfig.write("cullleaves");
// }, opts -> CullLeavesConfig.enabled)
// .setFlags(OptionFlag.REQUIRES_RENDERER_RELOAD)
// .setImpact(OptionImpact.MEDIUM)
// .build()
// ).add(OptionImpl.createBuilder(boolean.class, sodiumOpts)
// .setName(Component.translatable("cullleaves.midnightconfig.cullRoots"))
// .setTooltip(Component.translatable("cullleaves.midnightconfig.cullRoots.tooltip"))
// .setControl(TickBoxControl::new)
// .setBinding((opts, value) -> {
// CullLeavesConfig.cullRoots = value;
// CullLeavesConfig.write("cullleaves");
// }, opts -> CullLeavesConfig.cullRoots)
// .setFlags(OptionFlag.REQUIRES_RENDERER_RELOAD)
// .setImpact(OptionImpact.MEDIUM)
// .build()
// )
// .build()
// );
//
// return groups;
// }
//}
//?} else {
import eu.midnightdust.core.MidnightLib;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
import java.util.List;
@Mixin(value = SodiumGameOptionPages.class, remap = false)
@Mixin(value = MidnightLib.class)
public class MixinSodiumGameOptionPages {
@Shadow @Final private static SodiumOptionsStorage sodiumOpts;
@ModifyVariable(method = "performance", at = @At(value = "INVOKE", target = "Lcom/google/common/collect/ImmutableList;copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableList;"))
private static List<OptionGroup> cullleaves$addCullLeavesOption(List<OptionGroup> groups) {
groups.add(OptionGroup.createBuilder()
.add(OptionImpl.createBuilder(boolean.class, sodiumOpts)
.setName(Component.translatable("cullleaves.midnightconfig.enabled"))
.setTooltip(Component.translatable("cullleaves.midnightconfig.enabled.tooltip"))
.setControl(TickBoxControl::new)
.setBinding((opts, value) -> {
CullLeavesConfig.enabled = value;
CullLeavesConfig.write("cullleaves");
}, opts -> CullLeavesConfig.enabled)
.setFlags(OptionFlag.REQUIRES_RENDERER_RELOAD)
.setImpact(OptionImpact.MEDIUM)
.build()
).add(OptionImpl.createBuilder(boolean.class, sodiumOpts)
.setName(Component.translatable("cullleaves.midnightconfig.cullRoots"))
.setTooltip(Component.translatable("cullleaves.midnightconfig.cullRoots.tooltip"))
.setControl(TickBoxControl::new)
.setBinding((opts, value) -> {
CullLeavesConfig.cullRoots = value;
CullLeavesConfig.write("cullleaves");
}, opts -> CullLeavesConfig.cullRoots)
.setFlags(OptionFlag.REQUIRES_RENDERER_RELOAD)
.setImpact(OptionImpact.MEDIUM)
.build()
)
.build()
);
return groups;
}
}
//?}

View File

@@ -1,2 +0,0 @@
{
}

View File

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

View File

@@ -5,7 +5,7 @@ plugins {
id("com.github.johnrengelman.shadow") version "8.1.1" apply false
id("me.modmuss50.mod-publish-plugin") version "0.8.4" apply false
}
stonecutter active "1.21.10-fabric" /* [SC] DO NOT EDIT */
stonecutter active "1.21.11-fabric" /* [SC] DO NOT EDIT */
// See https://stonecutter.kikugie.dev/wiki/config/params
stonecutter parameters {

View File

@@ -1,12 +1,13 @@
mod.mc_dep_fabric==1.20.1
mod.mc_dep_fabric=>=1.20 <=1.20.1
mod.mc_dep_forgelike=[1.20, 1.20.1]
mod.mc_title=1.20.1
mod.mc_targets=1.20.1
mod.mc_targets=1.20 1.20.1
deps.forge_loader=47.3.0
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,40 @@
{
"schemaVersion": 1,
"id": "cullleaves",
"version": "${version}",
"name": "Cull Leaves",
"description": "Adds culling to leaf blocks, providing a huge performance boost over vanilla.",
"authors": [
"Motschen",
"TeamMidnightDust"
],
"contact": {
"homepage": "https://www.midnightdust.eu/",
"sources": "https://github.com/TeamMidnightDust/CullLeaves",
"issues": "https://github.com/TeamMidnightDust/CullLeaves/issues"
},
"license": "MIT",
"icon": "assets/cullleaves/icon.png",
"environment": "client",
"entrypoints": {
"main": [
"eu.midnightdust.cullleaves.CullLeavesClient"
]
},
"depends": {
"midnightlib": "*",
"minecraft": "${minecraft}"
},
"breaks": {
"sodium": ">=0.6.0"
},
"mixins": [
"cullleaves.mixins.json",
"cullleaves-fabric.mixins.json"
]
}

View File

@@ -1,7 +1,7 @@
mod.mc_dep_fabric==1.20.1
mod.mc_dep_fabric=>=1.20 <=1.20.1
mod.mc_dep_forgelike=[1.20, 1.20.1]
mod.mc_title=1.20.1
mod.mc_targets=1.20.1
mod.mc_targets=1.20 1.20.1
deps.forge_loader=47.3.0
deps.neoforge_loader=[UNSUPPORTED]

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 = "${minecraft}"
ordering = "NONE"
side = "CLIENT"
[[dependencies.cullleaves]]
modId = "midnightlib"
mandatory = true
versionRange = "[1.0.0,)"
ordering = "BEFORE"
side = "CLIENT"

View File

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

View File

@@ -8,6 +8,6 @@ deps.neoforge_loader=21.1.66
deps.fabric_version=0.114.0+1.21.1
deps.modmenu_version=[UNSUPPORTED]
deps.sodium_version=mc1.21.1-0.6.13
loom.platform=neoforge

View File

@@ -29,7 +29,7 @@ side = "CLIENT"
[[dependencies.cullleaves]]
modId = "minecraft"
required = true
versionRange = "[1.21,)"
versionRange = "${minecraft}"
ordering = "NONE"
side = "CLIENT"

View File

@@ -1,7 +1,7 @@
mod.mc_dep_fabric=>=1.21.9
mod.mc_dep_forgelike=[1.21.10,)
mod.mc_dep_fabric=>=1.21.9 <=1.21.10
mod.mc_dep_forgelike=[1.21.9,1.21.10]
mod.mc_title=1.21.10
mod.mc_targets=1.21.9, 1.21.10
mod.mc_targets=1.21.9 1.21.10
deps.forge_loader=0
deps.neoforge_loader=21.10.47-beta

View File

@@ -0,0 +1,40 @@
{
"schemaVersion": 1,
"id": "cullleaves",
"version": "${version}",
"name": "Cull Leaves",
"description": "Adds culling to leaf blocks, providing a huge performance boost over vanilla.",
"authors": [
"Motschen",
"TeamMidnightDust"
],
"contact": {
"homepage": "https://www.midnightdust.eu/",
"sources": "https://github.com/TeamMidnightDust/CullLeaves",
"issues": "https://github.com/TeamMidnightDust/CullLeaves/issues"
},
"license": "MIT",
"icon": "assets/cullleaves/icon.png",
"environment": "client",
"entrypoints": {
"main": [
"eu.midnightdust.cullleaves.CullLeavesClient"
]
},
"depends": {
"midnightlib": "*",
"minecraft": "${minecraft}"
},
"breaks": {
"sodium": "<0.6.0"
},
"mixins": [
"cullleaves.mixins.json",
"cullleaves-fabric.mixins.json"
]
}

View File

@@ -1,7 +1,7 @@
mod.mc_dep_fabric=>=1.21.9
mod.mc_dep_forgelike=[1.21.10,)
mod.mc_dep_fabric=>=1.21.9 <=1.21.10
mod.mc_dep_forgelike=[1.21.9,1.21.10]
mod.mc_title=1.21.10
mod.mc_targets=1.21.9, 1.21.10
mod.mc_targets=1.21.9 1.21.10
deps.forge_loader=0
deps.neoforge_loader=21.10.47-beta

View File

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

View File

@@ -0,0 +1,13 @@
mod.mc_dep_fabric=>=1.21.11
mod.mc_dep_forgelike=[1.21.11,)
mod.mc_title=1.21.11
mod.mc_targets=1.21.11
deps.forge_loader=0
deps.neoforge_loader=21.11.3-beta
deps.fabric_version=0.139.4+1.21.11
deps.modmenu_version=17.0.0-alpha.1
deps.sodium_version=mc1.21.11-0.8.0
loom.platform=fabric

View File

@@ -0,0 +1,43 @@
{
"schemaVersion": 1,
"id": "cullleaves",
"version": "${version}",
"name": "Cull Leaves",
"description": "Adds culling to leaf blocks, providing a huge performance boost over vanilla.",
"authors": [
"Motschen",
"TeamMidnightDust"
],
"contact": {
"homepage": "https://www.midnightdust.eu/",
"sources": "https://github.com/TeamMidnightDust/CullLeaves",
"issues": "https://github.com/TeamMidnightDust/CullLeaves/issues"
},
"license": "MIT",
"icon": "assets/cullleaves/icon.png",
"environment": "client",
"entrypoints": {
"main": [
"eu.midnightdust.cullleaves.CullLeavesClient"
],
"sodium:config_api_user": [
"eu.midnightdust.cullleaves.config.SodiumConfigEntryPoint"
]
},
"depends": {
"midnightlib": "*",
"minecraft": "${minecraft}"
},
"breaks": {
"sodium": "<0.6.0"
},
"mixins": [
"cullleaves.mixins.json",
"cullleaves-fabric.mixins.json"
]
}

View File

@@ -0,0 +1,13 @@
mod.mc_dep_fabric=>=1.21.11
mod.mc_dep_forgelike=[1.21.11,)
mod.mc_title=1.21.11
mod.mc_targets=1.21.11
deps.forge_loader=0
deps.neoforge_loader=21.11.3-beta
deps.fabric_version=0.139.4+1.21.11
deps.modmenu_version=17.0.0-alpha.1
deps.sodium_version=mc1.21.11-0.8.0
loom.platform=neoforge

View File

@@ -0,0 +1,44 @@
modLoader = "javafml"
loaderVersion = "[1,)"
#issueTrackerURL = ""
license = "MIT License"
[[mods]]
modId = "cullleaves"
version = "${version}"
displayName = "CullLeaves"
authors = "Motschen, TeamMidnightDust"
description = '''
Adds culling to leaf blocks, providing a huge performance boost over vanilla.
'''
logoFile = "icon.png"
[[mixins]]
config = "cullleaves.mixins.json"
[[mixins]]
config = "cullleaves-neoforge.mixins.json"
[modproperties.cullleaves]
"sodium:config_api_user" = "eu.midnightdust.cullleaves.config.SodiumConfigEntryPoint"
[[dependencies.cullleaves]]
modId = "neoforge"
required = true
versionRange = "[20.3,)"
ordering = "NONE"
side = "CLIENT"
[[dependencies.cullleaves]]
modId = "minecraft"
required = true
versionRange = "${minecraft}"
ordering = "NONE"
side = "CLIENT"
[[dependencies.cullleaves]]
modId = "midnightlib"
required = true
versionRange = "[1.0.0,)"
ordering = "BEFORE"
side = "CLIENT"

View File

@@ -1,7 +1,7 @@
mod.mc_dep_fabric==1.21.5
mod.mc_dep_forgelike=[1.21.5]
mod.mc_dep_fabric=>=1.21.4 <=1.21.5
mod.mc_dep_forgelike=[1.21.4, 1.21.5]
mod.mc_title=1.21.5
mod.mc_targets=1.21.5
mod.mc_targets=1.21.4 1.21.5
deps.forge_loader=54.0.13
deps.neoforge_loader=21.4.47-beta

View File

@@ -0,0 +1,40 @@
{
"schemaVersion": 1,
"id": "cullleaves",
"version": "${version}",
"name": "Cull Leaves",
"description": "Adds culling to leaf blocks, providing a huge performance boost over vanilla.",
"authors": [
"Motschen",
"TeamMidnightDust"
],
"contact": {
"homepage": "https://www.midnightdust.eu/",
"sources": "https://github.com/TeamMidnightDust/CullLeaves",
"issues": "https://github.com/TeamMidnightDust/CullLeaves/issues"
},
"license": "MIT",
"icon": "assets/cullleaves/icon.png",
"environment": "client",
"entrypoints": {
"main": [
"eu.midnightdust.cullleaves.CullLeavesClient"
]
},
"depends": {
"midnightlib": "*",
"minecraft": "${minecraft}"
},
"breaks": {
"sodium": "<0.6.0"
},
"mixins": [
"cullleaves.mixins.json",
"cullleaves-fabric.mixins.json"
]
}

View File

@@ -1,7 +1,7 @@
mod.mc_dep_fabric==1.21.5
mod.mc_dep_forgelike=[1.21.5]
mod.mc_dep_fabric=>=1.21.4 <=1.21.5
mod.mc_dep_forgelike=[1.21.4, 1.21.5]
mod.mc_title=1.21.5
mod.mc_targets=1.21.5
mod.mc_targets=1.21.4 1.21.5
deps.forge_loader=0
deps.neoforge_loader=21.5.54-beta

View File

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

View File

@@ -1,7 +1,7 @@
mod.mc_dep_fabric==1.21.8
mod.mc_dep_forgelike=[1.21.8]
mod.mc_dep_fabric=>=1.21.6 <=1.21.8
mod.mc_dep_forgelike=[1.21.6, 1.21.8]
mod.mc_title=1.21.8
mod.mc_targets=1.21.8
mod.mc_targets=1.21.6 1.21.7 1.21.8
deps.forge_loader=0
deps.neoforge_loader=21.8.50

View File

@@ -0,0 +1,40 @@
{
"schemaVersion": 1,
"id": "cullleaves",
"version": "${version}",
"name": "Cull Leaves",
"description": "Adds culling to leaf blocks, providing a huge performance boost over vanilla.",
"authors": [
"Motschen",
"TeamMidnightDust"
],
"contact": {
"homepage": "https://www.midnightdust.eu/",
"sources": "https://github.com/TeamMidnightDust/CullLeaves",
"issues": "https://github.com/TeamMidnightDust/CullLeaves/issues"
},
"license": "MIT",
"icon": "assets/cullleaves/icon.png",
"environment": "client",
"entrypoints": {
"main": [
"eu.midnightdust.cullleaves.CullLeavesClient"
]
},
"depends": {
"midnightlib": "*",
"minecraft": "${minecraft}"
},
"breaks": {
"sodium": "<0.6.0"
},
"mixins": [
"cullleaves.mixins.json",
"cullleaves-fabric.mixins.json"
]
}

View File

@@ -1,7 +1,7 @@
mod.mc_dep_fabric==1.21.5
mod.mc_dep_forgelike=[1.21.5]
mod.mc_title=1.21.5
mod.mc_targets=1.21.5
mod.mc_dep_fabric=>=1.21.6 <=1.21.8
mod.mc_dep_forgelike=[1.21.6, 1.21.8]
mod.mc_title=1.21.8
mod.mc_targets=1.21.6 1.21.7 1.21.8
deps.forge_loader=0
deps.neoforge_loader=21.8.50

View File

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