Skip to content

Commit

Permalink
feat(mc): port to 1.21.2
Browse files Browse the repository at this point in the history
* port to 1.21.2
* update some deps
* fix typos
* some code formatting
  • Loading branch information
UltimatChamp committed Oct 17, 2024
1 parent 7e67c9a commit 2c25282
Show file tree
Hide file tree
Showing 25 changed files with 188 additions and 52 deletions.
37 changes: 27 additions & 10 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
plugins {
id "dev.architectury.loom" version "1.7.+"
id "me.modmuss50.mod-publish-plugin" version "0.6.3"
id "me.modmuss50.mod-publish-plugin" version "0.7.4"
}

def loader = property("loom.platform")
if (property("loom.platform") == "neoforge")
if (property("loom.platform") == "neoforge") {
loader = "neo"
}

def isFabric = loader == "fabric"
def isNeo = loader == "neo"
def isForge = loader == "forge"
Expand Down Expand Up @@ -128,10 +130,25 @@ processResources {
}
exclude(["fabric.mod.json", "META-INF/neoforge.mods.toml"])
}

def packFormat
if (project.property("deps.minecraft_version") == "1.20.1") {
packFormat = 15
} else if (project.property("deps.minecraft_version") == "1.20.6") {
packFormat = 32
} else if (project.property("deps.minecraft_version") == "1.21.1") {
packFormat = 34
} else {
packFormat = 42
}

filesMatching("pack.mcmeta") {
expand("pack_format": packFormat)
}
}

def targetJavaVersion = 21
if ("${project.version}".contains("1.20.1")) {
if (project.property("deps.minecraft_version").contains("1.20.1")) {
targetJavaVersion = 17
}

Expand Down Expand Up @@ -170,8 +187,8 @@ publishMods {
modLoaders.add("forge")
}

if ("${project.version}".contains("1.20.1")) {
modrinth("m1.20.x") {
if (project.property("deps.minecraft_version") == "1.20.1") {
modrinth("m1.20.1") {
projectId = "m5T5xmUy"
accessToken = providers.environmentVariable("MODRINTH_TOKEN")
requires(deps[0], deps[1])
Expand All @@ -188,7 +205,7 @@ publishMods {
announcementTitle = "Download from Modrinth"
}

curseforge("c1.20.x") {
curseforge("c1.20.1") {
projectId = "1026394"
accessToken = providers.environmentVariable("CURSEFORGE_API_KEY")
requires(deps[0], deps[1])
Expand All @@ -207,7 +224,7 @@ publishMods {
}
}

if ("${project.version}".contains("1.20.6")) {
if (project.property("deps.minecraft_version") == "1.20.6") {
modrinth("m1.20.6") {
projectId = "m5T5xmUy"
accessToken = providers.environmentVariable("MODRINTH_TOKEN")
Expand Down Expand Up @@ -236,8 +253,8 @@ publishMods {
}
}

if ("${project.version}".contains("1.21")) {
modrinth("m1.21") {
if (project.property("deps.minecraft_version") == "1.21.1") {
modrinth("m1.21.1") {
projectId = "m5T5xmUy"
accessToken = providers.environmentVariable("MODRINTH_TOKEN")
requires(deps[0], deps[1])
Expand All @@ -250,7 +267,7 @@ publishMods {
announcementTitle = "Download from Modrinth"
}

curseforge("c1.21") {
curseforge("c1.21.1") {
projectId = "1026394"
accessToken = providers.environmentVariable("CURSEFORGE_API_KEY")
requires(deps[0], deps[1])
Expand Down
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
org.gradle.jvmargs=-Xmx1G
org.gradle.jvmargs=-Xmx2G

# Mod Properties
mod_id=bettergrass
Expand All @@ -22,7 +22,7 @@ deps.mc_range=[VERSIONED]
deps.mixins=[VERSIONED]

# Fabric Properties - https://fabricmc.net/develop
loader_version=0.15.11
loader_version=0.16.7

# (Neo)Forge Properties - https://projects.neoforged.net/neoforged/neoforge
deps.neoforge=[VERSIONED]
Expand Down
8 changes: 5 additions & 3 deletions settings.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,12 @@ stonecutter {

vers("1.20.6-fabric", "1.20.6")

vers("1.21-fabric", "1.21")
vers("1.21-neo", "1.21")
vers("1.21.1-fabric", "1.21.1")
vers("1.21.1-neo", "1.21.1")

vcsVersion = "1.21-fabric"
vers("1.21.2-fabric", "1.21.2")

vcsVersion = "1.21.1-fabric"
}

create rootProject
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//? if forge {
/*package dev.ultimatchamp.bettergrass;
/*package dev.ultimatchamp.bettergrass.loaders.forge;
import dev.ultimatchamp.bettergrass.config.BetterGrassifyConfig;
import net.fabricmc.loader.api.FabricLoader;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
//? if neo {
/*package dev.ultimatchamp.bettergrass;
/*package dev.ultimatchamp.bettergrass.loaders.neo;
import dev.ultimatchamp.bettergrass.config.BetterGrassifyConfig;
import net.fabricmc.loader.api.FabricLoader;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
//? if <1.21.2 {
package dev.ultimatchamp.bettergrass.mixin;

import dev.ultimatchamp.bettergrass.model.BetterGrassifyUnbakedModel;
Expand Down Expand Up @@ -42,19 +43,9 @@ private void onPutModel(Identifier id, UnbakedModel unbakedModel, CallbackInfo c
*///?}
if (id instanceof ModelIdentifier modelId) {
if (!modelId.getVariant().equals("inventory")) {
BetterGrassifyConfig.instance().moreBlocks.forEach(s -> {
if (modelId.toString().startsWith(s.split("\\[")[0]) && !modelId.toString().contains("snowy=true")) {
var newModel = new BetterGrassifyUnbakedModel(unbakedModel);
//? if >1.20.6 {
this.modelsToBake.put(id, newModel);
//?} else {
/*this.unbakedModels.put(id, newModel);
this.modelsToLoad.addAll(newModel.getModelDependencies());
*///?}
ci.cancel();
}
for (String path : BetterGrassifyConfig.instance().moreBlocks) {
if (BetterGrassifyConfig.instance().snowy) {
if (modelId.toString().startsWith(s.split("\\[")[0]) && modelId.toString().contains("snowy=true")) {
if (modelId.toString().startsWith(path) && modelId.toString().contains("snowy=true")) {
var newModel = new BetterGrassifyUnbakedModel(unbakedModel);
//? if >1.20.6 {
this.modelsToBake.put(id, newModel);
Expand All @@ -64,11 +55,20 @@ private void onPutModel(Identifier id, UnbakedModel unbakedModel, CallbackInfo c
*///?}
ci.cancel();
}
} else if (modelId.toString().startsWith(path) && !modelId.toString().contains("snowy=true")) {
var newModel = new BetterGrassifyUnbakedModel(unbakedModel);
//? if >1.20.6 {
this.modelsToBake.put(id, newModel);
//?} else {
/*this.unbakedModels.put(id, newModel);
this.modelsToLoad.addAll(newModel.getModelDependencies());
*///?}
ci.cancel();
}
});
}

if (BetterGrassifyConfig.instance().grassBlocks) {
if (modelId.toString().startsWith("minecraft:grass_block".split("\\[")[0]) && !modelId.toString().contains("snowy=true")) {
if (modelId.toString().startsWith("minecraft:grass_block") && !modelId.toString().contains("snowy=true")) {
var newModel = new BetterGrassifyUnbakedModel(unbakedModel);
//? if >1.20.6 {
this.modelsToBake.put(id, newModel);
Expand Down Expand Up @@ -188,3 +188,4 @@ private void onPutModel(Identifier id, UnbakedModel unbakedModel, CallbackInfo c
}
}
}
//?}
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
//? if >1.21.1 {
/*package dev.ultimatchamp.bettergrass.mixin;
import dev.ultimatchamp.bettergrass.config.BetterGrassifyConfig;
import dev.ultimatchamp.bettergrass.model.BetterGrassifyUnbakedModel;
import net.minecraft.client.render.model.ReferencedModelsCollector;
import net.minecraft.client.render.model.UnbakedModel;
import net.minecraft.client.util.ModelIdentifier;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
@Mixin(ReferencedModelsCollector.class)
public class ReferencedModelsCollectorMixin {
@ModifyVariable(method = "addTopLevelModel", at = @At("HEAD"), argsOnly = true)
private UnbakedModel onAddTopLevelModel(UnbakedModel model, ModelIdentifier modelId) {
if (!modelId.getVariant().equals("inventory")) {
for (String path : BetterGrassifyConfig.instance().moreBlocks) {
if (BetterGrassifyConfig.instance().snowy) {
if (modelId.toString().startsWith(path) && modelId.toString().contains("snowy=true")) {
return new BetterGrassifyUnbakedModel(model);
}
} else if (modelId.toString().startsWith(path) && !modelId.toString().contains("snowy=true")) {
return new BetterGrassifyUnbakedModel(model);
}
}
if (BetterGrassifyConfig.instance().grassBlocks) {
if (modelId.toString().startsWith("minecraft:grass_block") && !modelId.toString().contains("snowy=true")) {
return new BetterGrassifyUnbakedModel(model);
} else if (modelId.toString().startsWith("minecraft:grass_block") && modelId.toString().contains("snowy=true") && BetterGrassifyConfig.instance().snowy) {
return new BetterGrassifyUnbakedModel(model);
}
}
if (BetterGrassifyConfig.instance().dirtPaths) {
if (modelId.toString().startsWith("minecraft:dirt_path")) {
return new BetterGrassifyUnbakedModel(model);
}
}
if (BetterGrassifyConfig.instance().farmLands) {
if (modelId.toString().startsWith("minecraft:farmland")) {
return new BetterGrassifyUnbakedModel(model);
}
}
if (BetterGrassifyConfig.instance().podzol) {
if (modelId.toString().startsWith("minecraft:podzol") && !modelId.toString().contains("snowy=true")) {
return new BetterGrassifyUnbakedModel(model);
} else if (modelId.toString().startsWith("minecraft:podzol") && modelId.toString().contains("snowy=true") && BetterGrassifyConfig.instance().snowy) {
return new BetterGrassifyUnbakedModel(model);
}
}
if (BetterGrassifyConfig.instance().mycelium) {
if (modelId.toString().startsWith("minecraft:mycelium") && !modelId.toString().contains("snowy=true")) {
return new BetterGrassifyUnbakedModel(model);
} else if (modelId.toString().startsWith("minecraft:mycelium") && modelId.toString().contains("snowy=true") && BetterGrassifyConfig.instance().snowy) {
return new BetterGrassifyUnbakedModel(model);
}
}
if (BetterGrassifyConfig.instance().crimsonNylium) {
if (modelId.toString().startsWith("minecraft:crimson_nylium")) {
return new BetterGrassifyUnbakedModel(model);
}
}
if (BetterGrassifyConfig.instance().warpedNylium) {
if (modelId.toString().startsWith("minecraft:warped_nylium")) {
return new BetterGrassifyUnbakedModel(model);
}
}
}
return model;
}
}
*///?}
Original file line number Diff line number Diff line change
Expand Up @@ -75,19 +75,19 @@ private void execute(ChunkBuildContext buildContext, CancellationToken cancellat
var newState = ctx.state().with(Properties.SNOWY, true);
var newModel = cache.getBlockModels().getModel(newState);
//? if fabric {
ctx.update(ctx.pos(), modelOffset, newState, newModel, ctx.seed());
//?} else {
/^ctx.update(ctx.pos(), modelOffset, newState, newModel, ctx.seed(), ctx.modelData(), ctx.renderLayer());
^///?}
/^ctx.update(ctx.pos(), modelOffset, newState, newModel, ctx.seed());
^///?} else {
ctx.update(ctx.pos(), modelOffset, newState, newModel, ctx.seed(), ctx.modelData(), ctx.renderLayer());
//?}
var context = new BlockRenderContext(slice);
var snow = Blocks.SNOW.getDefaultState();
var model = cache.getBlockModels().getModel(snow);
//? if fabric {
context.update(ctx.pos().up(), modelOffset.up(), snow, model, ctx.seed());
//?} else {
/^context.update(ctx.pos().up(), modelOffset.up(), snow, model, ctx.seed(), ctx.modelData(), ctx.renderLayer());
^///?}
/^context.update(ctx.pos().up(), modelOffset.up(), snow, model, ctx.seed());
^///?} else {
context.update(ctx.pos().up(), modelOffset.up(), snow, model, ctx.seed(), ctx.modelData(), ctx.renderLayer());
//?}
cache.getBlockRenderer().renderModel(context, buffers);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,11 @@ public static boolean canHaveSnowLayer(BlockRenderView world, BlockPos selfPos)
for (String block : BetterGrassifyConfig.instance().excludedBlocks) {
Identifier identifier = Identifier.tryParse(block);

//? if >1.21.1 {
/*var blockCheck = Registries.BLOCK.getOptionalValue(identifier);
*///?} else {
var blockCheck = Registries.BLOCK.getOrEmpty(identifier);
//?}

if (blockCheck.isPresent()) {
if (self.getBlock().equals(blockCheck.get())) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,20 +6,28 @@
import net.minecraft.client.render.model.UnbakedModel;
import net.minecraft.client.texture.Sprite;
import net.minecraft.client.util.SpriteIdentifier;
import net.minecraft.util.Identifier;
import org.jetbrains.annotations.Nullable;

import java.util.Collection;
import java.util.function.Function;

//? if <1.21.2 {
import net.minecraft.util.Identifier;
import java.util.Collection;
//?}

public class BetterGrassifyUnbakedModel implements UnbakedModel {
private final UnbakedModel baseModel;

public BetterGrassifyUnbakedModel(UnbakedModel unbakedModel) {
this.baseModel = unbakedModel;
}


//? if >1.21.1 {
/*@Override
public void resolve(Resolver resolver) {
this.baseModel.resolve(resolver);
}
*///?} else {
@Override
public Collection<Identifier> getModelDependencies() {
return this.baseModel.getModelDependencies();
Expand All @@ -29,6 +37,7 @@ public Collection<Identifier> getModelDependencies() {
public void setParents(Function<Identifier, UnbakedModel> modelLoader) {
this.baseModel.setParents(modelLoader);
}
//?}

@Nullable
@Override
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/assets/bettergrass/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@
"bettergrass.betterSnowMode.lambda": "LambdaBetterGrass-like",
"bettergrass.excludedTags": "Excluded Tags",
"bettergrass.excludedBlocks": "Excluded Blocks",
"bettergrass.noconfig.warn": "§cBetterGrassify for (Neo)Forge 1.20.1 is unable to display a configuration screen due to a limitation in Forge. Please use the configuration file instead. Sorry for the inconvenience!§r\n\nIf you're using Embeddium, you can change most of the configurations in the \"Video Settings Menu.\""
"bettergrass.noconfig.warn": "§cBetterGrassify for (Neo)Forge 1.20.1 is unable to display a configuration screen due to a limitation in Forge. Please use the configuration file instead. Sorry for the inconvenience!§r\n\nIf you're using Embeddium, you can change most of the configurations in the \"Video Settings Menu\"."
}
2 changes: 1 addition & 1 deletion src/main/resources/assets/bettergrass/lang/et_ee.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@
"bettergrass.betterSnowMode.lambda": "LambdaBetterGrass-like",
"bettergrass.excludedTags": "Excluded Tags",
"bettergrass.excludedBlocks": "Excluded Blocks",
"bettergrass.noconfig.warn": "§cBetterGrassify for (Neo)Forge 1.20.1 is unable to display a configuration screen due to a limitation in Forge. Please use the configuration file instead. Sorry for the inconvenience!§r\n\nIf you're using Embeddium, you can change most of the configurations in the \"Video Settings Menu.\""
"bettergrass.noconfig.warn": "§cBetterGrassify for (Neo)Forge 1.20.1 is unable to display a configuration screen due to a limitation in Forge. Please use the configuration file instead. Sorry for the inconvenience!§r\n\nIf you're using Embeddium, you can change most of the configurations in the \"Video Settings Menu\"."
}
4 changes: 2 additions & 2 deletions src/main/resources/assets/bettergrass/lang/it_it.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"bettergrass.title": "Impostazioni di BetterGrassify",
"bettergrass.betterGrassMode": "Modalità Erba Migliorata",
"bettergrass.betterGrassMode.desc": "§4No §r- Blocchi di erba classici\n§3Semplice §r- La texture superiore verrà applicata a tutti il lati del blocco d'erba (veloce)\n§dSofisticata §r- La texture superiore verrà applicata dinamicamente ai lati del blocco d'erba richiesti (lento)",
"bettergrass.betterGrassMode.desc": "§4No §r- Blocchi di erba classici\n§3Semplice §r- La texture superiore verrà applicata a tutti il lati del blocco d'erba (veloce)\n§dSofisticata §r- La texture superiore verrà applicata dinamicamente ai lati del blocco d'erba richiesti (lento)",
"bettergrass.grassBlocks.desc": "Connetti anche i blocchi d'erba!",
"bettergrass.snowy.desc": "Connetti anche l'erba nevosa!",
"bettergrass.dirtPaths.desc": "Connetti anche i sentieri sterrati!\n\n§cPotrebbe causare dei bug visuali!",
Expand All @@ -18,5 +18,5 @@
"bettergrass.betterSnowMode.lambda": "Simile a LambdaBetterGrass",
"bettergrass.excludedTags": "Tag Esclusi",
"bettergrass.excludedBlocks": "Blocchi Esclusi",
"bettergrass.noconfig.warn": "§cBetterGrassify per (Neo)Forge 1.20.1 non è in grado di visualizzare una schermata di configurazione a causa di una limitazione in Forge. Utilizzare invece il file di configurazione. Ci scusiamo per l'inconveniente!§r\n\nSe utilizzi Embeddium, puoi modificare la maggior parte delle configurazioni nel \"Menu Impostazioni video.\""
"bettergrass.noconfig.warn": "§cBetterGrassify per (Neo)Forge 1.20.1 non è in grado di visualizzare una schermata di configurazione a causa di una limitazione in Forge. Utilizzare invece il file di configurazione. Ci scusiamo per l'inconveniente!§r\n\nSe utilizzi Embeddium, puoi modificare la maggior parte delle configurazioni nel \"Menu Impostazioni video\"."
}
2 changes: 1 addition & 1 deletion src/main/resources/assets/bettergrass/lang/pt_br.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@
"bettergrass.betterSnowMode.lambda": "Tipo-LambdaBetterGrass",
"bettergrass.excludedTags": "Excluded Tags",
"bettergrass.excludedBlocks": "Excluded Blocks",
"bettergrass.noconfig.warn": "§cBetterGrassify para (Neo)Forge 1.20.1 está indisponivel para mostrar a tela de configuração devido à uma limitação no Forge. Por favor, utilize os arquivos de configuração no lugar. Desculpe pela inconveniência!§r\n\nIf you're using Embeddium, you can change most of the configurations in the \"Video Settings Menu.\""
"bettergrass.noconfig.warn": "§cBetterGrassify para (Neo)Forge 1.20.1 está indisponivel para mostrar a tela de configuração devido à uma limitação no Forge. Por favor, utilize os arquivos de configuração no lugar. Desculpe pela inconveniência!§r\n\nIf you're using Embeddium, you can change most of the configurations in the \"Video Settings Menu\"."
}
2 changes: 1 addition & 1 deletion src/main/resources/assets/bettergrass/lang/ru_ru.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@
"bettergrass.betterSnowMode.lambda": "LambdaBetterGrass-like",
"bettergrass.excludedTags": "Excluded Tags",
"bettergrass.excludedBlocks": "Excluded Blocks",
"bettergrass.noconfig.warn": "§cBetterGrassify for (Neo)Forge 1.20.1 is unable to display a configuration screen due to a limitation in Forge. Please use the configuration file instead. Sorry for the inconvenience!§r\n\nIf you're using Embeddium, you can change most of the configurations in the \"Video Settings Menu.\""
"bettergrass.noconfig.warn": "§cBetterGrassify for (Neo)Forge 1.20.1 is unable to display a configuration screen due to a limitation in Forge. Please use the configuration file instead. Sorry for the inconvenience!§r\n\nIf you're using Embeddium, you can change most of the configurations in the \"Video Settings Menu\"."
}
Loading

0 comments on commit 2c25282

Please sign in to comment.