feat: multi version start

This commit is contained in:
TheClashFruit 2024-07-13 13:57:40 +02:00
parent c9e5b11be9
commit 9f850881b3
Signed by: TheClashFruit
GPG key ID: 09BB24C34C2F3204
18 changed files with 224 additions and 148 deletions

View file

@ -25,4 +25,4 @@ jobs:
- name: Upload Artifacts
uses: actions/upload-artifact@v3
with:
path: build/libs/*.jar
path: 'versions/**/build/libs/*.jar'

View file

@ -1,96 +0,0 @@
plugins {
id 'fabric-loom' version '1.2-SNAPSHOT'
id 'maven-publish'
}
version = project.mod_version
group = project.maven_group
repositories {
// Add repositories to retrieve artifacts from in here.
// You should only use this when depending on other mods because
// Loom adds the essential maven repositories to download Minecraft and libraries from automatically.
// See https://docs.gradle.org/current/userguide/declaring_repositories.html
// for more information about repositories.
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
dependencies {
// To change the versions see the gradle.properties file
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
// Fabric API. This is technically optional, but you probably want it anyway.
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
modLocalRuntime("maven.modrinth:modmenu:${project.modmenu_version}")
}
loom {
accessWidenerPath = file("src/main/resources/cc.accesswidener")
}
processResources {
inputs.property "version", project.version
inputs.property "minecraft_version", project.minecraft_version
inputs.property "loader_version", project.loader_version
filteringCharset "UTF-8"
filesMatching("fabric.mod.json") {
expand "version": project.version,
"minecraft_version": project.minecraft_version,
"loader_version": project.loader_version
}
}
def targetJavaVersion = 17
tasks.withType(JavaCompile).configureEach {
// ensure that the encoding is set to UTF-8, no matter what the system default is
// this fixes some edge cases with special characters not displaying correctly
// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
// If Javadoc is generated, this must be specified in that task too.
it.options.encoding = "UTF-8"
if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
it.options.release = targetJavaVersion
}
}
java {
def javaVersion = JavaVersion.toVersion(targetJavaVersion)
if (JavaVersion.current() < javaVersion) {
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
}
archivesBaseName = project.archives_base_name
// Loom will automatically attach sourcesJar to a RemapSourcesJar task and to the "build" task
// if it is present.
// If you remove this line, sources will not be generated.
withSourcesJar()
}
jar {
from("LICENSE") {
rename { "${it}_${project.archivesBaseName}"}
}
}
// configure the maven publication
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
repositories {
// Add repositories to publish to here.
// Notice: This block does NOT have the same function as the block in the top level.
// The repositories here will be used for publishing your artifact, not for
// retrieving dependencies.
}
}

70
build.gradle.kts Normal file
View file

@ -0,0 +1,70 @@
import dev.deftu.gradle.utils.ModLoader
import dev.deftu.gradle.tools.minecraft.CurseRelation
import dev.deftu.gradle.tools.minecraft.CurseRelationType
import com.modrinth.minotaur.dependencies.DependencyType
import com.modrinth.minotaur.dependencies.ModDependency
plugins {
java
id("dev.deftu.gradle.multiversion")
id("dev.deftu.gradle.tools")
id("dev.deftu.gradle.tools.resources")
id("dev.deftu.gradle.tools.minecraft.api")
id("dev.deftu.gradle.tools.minecraft.loom")
id("dev.deftu.gradle.tools.publishing.maven")
id("dev.deftu.gradle.tools.minecraft.releases")
}
repositories {
maven("https://api.modrinth.com/maven")
}
dependencies {
if (mcData.isFabric) {
modImplementation("net.fabricmc.fabric-api:fabric-api:${mcData.dependencies.fabric.fabricApiVersion}")
modImplementation(mcData.dependencies.fabric.modMenuDependency)
}
}
loom {
accessWidenerPath = file("../../src/main/resources/cc.accesswidener")
}
/*
minecraft {
accessTransformer = file("../../src/main/resources/META-INF/accesstransformer.cfg")
}
*/
toolkitReleases {
detectVersionType.set(true)
rootProject.file("changelogs/${modData.version}.md").let { file ->
if (file.exists())
changelogFile.set(file)
}
modrinth {
projectId.set("Fs6mB0ic")
if (mcData.loader == ModLoader.FABRIC) {
dependencies.addAll(listOf(
ModDependency("P7dR8mSH", DependencyType.REQUIRED), // Fabric API
ModDependency("mOgUt4GM", DependencyType.OPTIONAL) // Mod Menu
))
}
}
curseforge {
projectId.set("901062")
if (mcData.loader == ModLoader.FABRIC) {
relations.addAll(listOf(
CurseRelation("fabric-api", CurseRelationType.REQUIRED), // Fabric API
CurseRelation("modmenu", CurseRelationType.OPTIONAL) // Mod Menu
))
}
}
}

6
changelogs/2.0.0.md Normal file
View file

@ -0,0 +1,6 @@
The mod has been revived from the dead!
* Added Missing Items
* Pottery Sherds
* Smithing Templates
* Fixed The Brewing Tab Icon

View file

@ -1,20 +1,7 @@
# Done to increase the memory available to gradle.
org.gradle.jvmargs=-Xmx1G
org.gradle.jvmargs=-Xmx2G
# Fabric Properties
# check these on https://modmuss50.me/fabric.html
minecraft_version=1.20.3
yarn_mappings=1.20.3+build.1
loader_version=0.15.1
# Mod Properties
mod_version = 1.0.0+mc1.20.3
maven_group = me.theclashfruit
archives_base_name = cc
# Dependencies
# check this on https://modmuss50.me/fabric.html
fabric_version=0.91.1+1.20.3
# Local Dev Mods
modmenu_version=9.0.0-pre.1
mod.name=Cluttered Creative
mod.id=cc
mod.version=2.0.0
mod.group=me.theclashfruit

View file

@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

38
root.gradle.kts Normal file
View file

@ -0,0 +1,38 @@
plugins {
id("dev.deftu.gradle.multiversion-root")
}
preprocess {
//val neoforge_1_21 = createNode("1.21-neoforge", 1210, "srg")
//val fabric_1_21 = createNode("1.21-fabric", 1210, "yarn")
//val neoforge_1_20_5 = createNode("1.20.5-neoforge", 1205, "srg")
val fabric_1_20_5 = createNode("1.20.5-fabric", 1205, "yarn")
//val forge_1_20_3 = createNode("1.20.3-forge", 1203, "srg")
//val neoforge_1_20_3 = createNode("1.20.3-neoforge", 1203, "srg")
val fabric_1_20_3 = createNode("1.20.3-fabric", 1203, "yarn")
//val forge_1_20_2 = createNode("1.20.2-forge", 1202, "srg")
//val neoforge_1_20_2 = createNode("1.20.2-neoforge", 1202, "srg")
val fabric_1_20_2 = createNode("1.20.2-fabric", 1202, "yarn")
// val forge_1_20 = createNode("1.20-forge", 1200, "srg")
val fabric_1_20 = createNode("1.20-fabric", 1200, "yarn")
//fabric_1_21.link(neoforge_1_21)
//fabric_1_21.link(fabric_1_20_3)
//fabric_1_20_5.link(neoforge_1_20_5)
fabric_1_20_5.link(fabric_1_20_3)
//forge_1_20_3.link(fabric_1_20_3)
//neoforge_1_20_3.link(fabric_1_20_3)
fabric_1_20_3.link(fabric_1_20_2)
//forge_1_20_2.link(fabric_1_20_2) //file("versions/forge.txt")
//neoforge_1_20_2.link(fabric_1_20_2)
fabric_1_20_2.link(fabric_1_20)
// forge_1_20.link(fabric_1_20)
}

View file

@ -1,9 +0,0 @@
pluginManagement {
repositories {
maven {
name = 'Fabric'
url = 'https://maven.fabricmc.net/'
}
gradlePluginPortal()
}
}

52
settings.gradle.kts Normal file
View file

@ -0,0 +1,52 @@
pluginManagement {
repositories {
maven("https://maven.deftu.dev/releases")
maven("https://maven.fabricmc.net")
maven("https://maven.architectury.dev/")
maven("https://maven.minecraftforge.net")
maven("https://maven.neoforged.net/releases")
maven("https://repo.essential.gg/repository/maven-public")
maven("https://server.bbkr.space/artifactory/libs-release/")
maven("https://jitpack.io/")
maven("https://maven.deftu.dev/snapshots")
mavenLocal()
gradlePluginPortal()
mavenCentral()
}
plugins {
id("dev.deftu.gradle.multiversion-root") version("2.2.3")
}
}
val projectName: String = "Cluttered Creative"
rootProject.name = projectName
rootProject.buildFileName = "root.gradle.kts"
listOf(
// "1.20-forge",
"1.20-fabric",
//"1.20.2-forge",
//"1.20.2-neoforge",
"1.20.2-fabric",
//"1.20.3-forge",
//"1.20.3-neoforge",
"1.20.3-fabric",
//"1.20.5-neoforge",
//"1.20.5-fabric",
//"1.21-neoforge",
//"1.21-fabric"
).forEach { version ->
include(":$version")
project(":$version").apply {
projectDir = file("versions/$version")
buildFileName = "../../build.gradle.kts"
}
}

View file

@ -9,6 +9,6 @@ public class ClutteredCreative implements ModInitializer {
@Override
public void onInitialize() {
LOGGER.info("ClutteredCreative has been initialized!");
}
}

View file

@ -1,10 +0,0 @@
package me.theclashfruit.cc.client;
import net.fabricmc.api.ClientModInitializer;
public class ClutteredCreativeClient implements ClientModInitializer {
@Override
public void onInitializeClient() {
}
}

View file

@ -13,9 +13,7 @@ import net.minecraft.registry.RegistryKeys;
import net.minecraft.registry.tag.InstrumentTags;
import net.minecraft.text.Text;
import net.minecraft.village.raid.Raid;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.*;
import org.spongepowered.asm.mixin.gen.Invoker;
import java.util.EnumSet;
@ -967,7 +965,7 @@ public class ItemGroupsMixin {
Registry.register(
registry,
REDSTONE,
ItemGroupsMixin.REDSTONE,
ItemGroup
.create(ItemGroup.Row.TOP, 2)
.type(ItemGroup.Type.CATEGORY)
@ -1361,6 +1359,7 @@ public class ItemGroupsMixin {
content.add(Items.FROGSPAWN);
content.add(Items.ECHO_SHARD);
//#if MC >= 1.20
content.add(Items.ANGLER_POTTERY_SHERD);
content.add(Items.ARCHER_POTTERY_SHERD);
content.add(Items.ARMS_UP_POTTERY_SHERD);
@ -1381,6 +1380,7 @@ public class ItemGroupsMixin {
content.add(Items.SHELTER_POTTERY_SHERD);
content.add(Items.SKULL_POTTERY_SHERD);
content.add(Items.SNORT_POTTERY_SHERD);
//#endif
})
.build()
);
@ -1438,7 +1438,7 @@ public class ItemGroupsMixin {
Registry.register(
registry,
TOOLS,
ItemGroupsMixin.TOOLS,
ItemGroup
.create(ItemGroup.Row.BOTTOM, 2)
.type(ItemGroup.Type.CATEGORY)
@ -1566,6 +1566,7 @@ public class ItemGroupsMixin {
content.add(Items.TRIDENT);
content.add(Items.CROSSBOW);
//#if MC >= 1.20
content.add(Items.NETHERITE_UPGRADE_SMITHING_TEMPLATE);
content.add(Items.SENTRY_ARMOR_TRIM_SMITHING_TEMPLATE);
content.add(Items.VEX_ARMOR_TRIM_SMITHING_TEMPLATE);
@ -1583,6 +1584,7 @@ public class ItemGroupsMixin {
content.add(Items.RIB_ARMOR_TRIM_SMITHING_TEMPLATE);
content.add(Items.EYE_ARMOR_TRIM_SMITHING_TEMPLATE);
content.add(Items.SPIRE_ARMOR_TRIM_SMITHING_TEMPLATE);
//#endif
})
.build()
);

View file

@ -0,0 +1 @@
public net.minecraft.world.item.CreativeModeTab.Builder type(Lnet/minecraft/world/item/CreativeModeTab.Type;)Lnet/minecraft/world/item/CreativeModeTab/Builder;

View file

@ -0,0 +1,15 @@
modLoader="javafml"
loaderVersion="[31,)"
issueTrackerURL="https://git.theclashfruit.me/TheClashFruit/ClutteredCreative/issues"
license="MIT"
[[mods]]
modId="cc"
version="${mod_version}"
displayName="Cluttered Creative"
description="Bring back the old cluttered creative inventory."
authors="TheClashFruit"
logoFile="assets/cc/icon.png"
[[mixins]]
config = "cc.mixins.json"

View file

@ -0,0 +1,15 @@
modLoader="javafml"
loaderVersion="[1,)"
issueTrackerURL="https://git.theclashfruit.me/TheClashFruit/ClutteredCreative/issues"
license="MIT"
[[mods]]
modId="cc"
version="${mod_version}"
displayName="Cluttered Creative"
description="Bring back the old cluttered creative inventory."
authors="TheClashFruit"
logoFile="assets/cc/icon.png"
[[mixins]]
config = "cc.mixins.json"

View file

@ -1,3 +1,10 @@
accessWidener v1 named
accessible method net/minecraft/item/ItemGroup$Builder type (Lnet/minecraft/item/ItemGroup$Type;)Lnet/minecraft/item/ItemGroup$Builder;
accessible class net/minecraft/item/ItemGroup$StackVisibility
accessible method net/minecraft/item/ItemGroup$Builder type (Lnet/minecraft/item/ItemGroup$Type;)Lnet/minecraft/item/ItemGroup$Builder;
accessible field net/minecraft/item/ItemGroups INVENTORY Lnet/minecraft/registry/RegistryKey;
accessible field net/minecraft/item/ItemGroups HOTBAR Lnet/minecraft/registry/RegistryKey;
accessible field net/minecraft/item/ItemGroups SEARCH Lnet/minecraft/registry/RegistryKey;
accessible field net/minecraft/item/ItemGroups COMBAT Lnet/minecraft/registry/RegistryKey;

View file

@ -1,7 +1,7 @@
{
"schemaVersion": 1,
"id": "cc",
"version": "${version}",
"version": "${mod_version}",
"name": "Cluttered Creative",
"description": "Bring back the old cluttered creative inventory.",
"authors": [
@ -16,9 +16,6 @@
"icon": "assets/cc/icon.png",
"environment": "*",
"entrypoints": {
"client": [
"me.theclashfruit.cc.client.ClutteredCreativeClient"
],
"main": [
"me.theclashfruit.cc.ClutteredCreative"
]
@ -28,9 +25,9 @@
],
"accessWidener" : "cc.accesswidener",
"depends": {
"fabricloader": ">=${loader_version}",
"fabricloader": ">=0.15.1",
"fabric": "*",
"minecraft": ">=${minecraft_version}"
"minecraft": ">=${mc_version}"
},
"custom": {
"modmenu": {

1
versions/mainProject Normal file
View file

@ -0,0 +1 @@
1.20.3-fabric