Skip to content

Commit

Permalink
Merge pull request #97 from RakSrinaNa/snapshot
Browse files Browse the repository at this point in the history
1.18.2 Fabric
  • Loading branch information
Rakambda authored Feb 28, 2022
2 parents d0874ea + 377c83a commit 71e6b46
Show file tree
Hide file tree
Showing 41 changed files with 688 additions and 331 deletions.
1 change: 1 addition & 0 deletions .github/FUNDING.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
github: [RakSrinaNa]
12 changes: 0 additions & 12 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,6 @@ updates:
interval: "daily"
reviewers:
- RakSrinaNa
- package-ecosystem: gradle
directory: "/forge"
schedule:
interval: "daily"
reviewers:
- RakSrinaNa
- package-ecosystem: gradle
directory: "/fabric"
schedule:
interval: "daily"
reviewers:
- RakSrinaNa
- package-ecosystem: github-actions
directory: "/"
schedule:
Expand Down
6 changes: 6 additions & 0 deletions .github/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,18 @@ changelog:
labels:
- "type: 📚 dependencies"
categories:
- title: "⚠ Breaking"
labels:
- "⚠ Breaking"
- title: "🚀 Features"
labels:
- "type: 🧱 enhancement"
- title: "🐛 Fixes"
labels:
- "type: 🐛 bug"
- title: "🐛 Beta Fixes"
labels:
- "type: 🐛 beta bug"
- title: Other Changes
labels:
- "*"
11 changes: 10 additions & 1 deletion .github/workflows/gradle_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,4 +41,13 @@ jobs:
with:
arguments: |
clean
assemble
build
- name: Upload mod file
uses: actions/upload-artifact@v2
with:
name: mod-file
path: |
build/libs/*.jar
if-no-files-found: error
retention-days: 14
21 changes: 19 additions & 2 deletions .github/workflows/gradle_publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Release

on:
release:
types: [created]
types: [ published ]

env:
APP_JAVA_VERSION: 17
Expand Down Expand Up @@ -35,9 +35,26 @@ jobs:
- name: Set gradle permissions
run: chmod +x gradlew

- name: Build mod file
uses: gradle/gradle-build-action@v2.1.3
env:
ORG_GRADLE_PROJECT_version: "${{ steps.get_release.outputs.name }}"
ORG_GRADLE_PROJECT_changelog: "[Changelog at ${{ steps.get_release.outputs.html_url }}](${{ steps.get_release.outputs.html_url }})"
ORG_GRADLE_PROJECT_forgeKeyStore: keystoreForgeMods.jks
ORG_GRADLE_PROJECT_forgeKeyStoreAlias: ${{ secrets.KEYSTORE_FORGE_MODS_ALIAS }}
ORG_GRADLE_PROJECT_forgeKeyStorePass: ${{ secrets.KEYSTORE_FORGE_MODS_STORE_PASS }}
ORG_GRADLE_PROJECT_forgeKeyStoreKeyPass: ${{ secrets.KEYSTORE_FORGE_MODS_KEY_PASS }}
ORG_GRADLE_PROJECT_forgeSignSHA1: f927f4701bf4c0620c7bd0a501ce278f5e5ecc62
with:
cache-disabled: true
arguments: |
clean
build
- name: Push on stores
uses: gradle/gradle-build-action@v2.1.3
env:
ORG_GRADLE_PROJECT_version: "${{ steps.get_release.outputs.name }}"
ORG_GRADLE_PROJECT_changelog: "[Changelog at ${{ steps.get_release.outputs.html_url }}](${{ steps.get_release.outputs.html_url }})"
ORG_GRADLE_PROJECT_curseforgeApiKey: ${{ secrets.CURSEFORGE_API_KEY }}
ORG_GRADLE_PROJECT_modrinthToken: ${{ secrets.MODRINTH_TOKEN }}
Expand All @@ -47,7 +64,7 @@ jobs:
ORG_GRADLE_PROJECT_forgeKeyStoreKeyPass: ${{ secrets.KEYSTORE_FORGE_MODS_KEY_PASS }}
ORG_GRADLE_PROJECT_forgeSignSHA1: f927f4701bf4c0620c7bd0a501ce278f5e5ecc62
with:
cache-disabled: true
arguments: |
build
curseforge
publishModrinth
111 changes: 79 additions & 32 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ buildscript {


import com.modrinth.minotaur.TaskModrinthUpload
import com.modrinth.minotaur.request.VersionType
import groovy.json.JsonOutput
import groovy.json.JsonSlurper

Expand All @@ -31,6 +32,7 @@ allprojects {
}

dependencies {
compileOnly(libs.jetbrainsAnnotations)
compileOnly(libs.lombok)
annotationProcessor(libs.lombok)
}
Expand All @@ -56,19 +58,38 @@ allprojects {
}
}

var minecraftVersion = libs.versions.minecraftVersion.get()
group = "fr.raksrinana"
archivesBaseName = "${project.modName}-${project.minecraft_version}"
archivesBaseName = "${project.modName}-${minecraftVersion}"

task buildJar(type: Jar, group: "modding") {
dependsOn assemble, ":common:build",
":fabric:build",
":forge:build"
finalizedBy ":forge:signJar"
dependsOn(assemble)
dependsOn(":common:build")
if (project.includeFabric.toBoolean()) {
dependsOn(":fabric:build")
}
if (project.includeForge.toBoolean()) {
dependsOn(":forge:build")
}

if (project.includeForge.toBoolean()) {
finalizedBy(":forge:signJar")
}

duplicatesStrategy = DuplicatesStrategy.EXCLUDE
from zipTree("common/build/libs/common-${project.version}.jar"),
zipTree("fabric/build/libs/fabric-${project.version}.jar"),
from {
zipTree("common/build/libs/common-${project.version}.jar")
}
if (project.includeFabric.toBoolean()) {
from {
zipTree("fabric/build/libs/fabric-${project.version}.jar")
}
}
if (project.includeForge.toBoolean()) {
from {
zipTree("forge/build/libs/forge-${project.version}.jar")
}
}

manifest {
attributes([
Expand All @@ -85,27 +106,41 @@ task buildJar(type: Jar, group: "modding") {
assemble.finalizedBy("buildJar")

curseforge {
def relType = "release"
if (version.contains("b")) {
relType = "beta"
}
if (version.contains("a") || version.contains("dev")) {
relType = "alpha"
}

apiKey = "${project.findProperty("curseforgeApiKey")}"
project {
id = "${project.curseforge_project_id}"
changelogType = "markdown"
addGameVersion project.minecraft_version
addGameVersion "Java 17"
addGameVersion "Fabric"
addGameVersion "Forge"
addGameVersion(minecraftVersion)
addGameVersion("Java 17")
if (project.includeFabric.toBoolean()) {
addGameVersion("Fabric")
}
if (project.includeForge.toBoolean()) {
addGameVersion("Forge")
}
changelog = project.findProperty("changelog") ?: "No changelog provided"
releaseType = "${project.releaseType}"
releaseType = relType
mainArtifact(jar) {
displayName = "${project.minecraft_version}-${project.version}"
displayName = "${minecraftVersion}-${project.version}"
}
relations {
//Fabric
optionalDependency("fabric-api") //It's actually required
optionalDependency("modmenu")
embeddedLibrary("cloth-config")

//Forge
optionalDependency("cloth-config-forge")
if (project.includeFabric.toBoolean()) {
optionalDependency("fabric-api") //It's actually required
optionalDependency("modmenu")
optionalDependency("cloth-config")
}

if (project.includeForge.toBoolean()) {
optionalDependency("cloth-config-forge")
}
}
}
options {
Expand All @@ -117,36 +152,48 @@ curseforge {

task publishModrinth(type: TaskModrinthUpload, group: "upload") {
dependsOn build
def relType = VersionType.RELEASE
if (version.contains("b")) {
relType = VersionType.BETA
}
if (version.contains("a") || version.contains("dev")) {
relType = VersionType.ALPHA
}

token = project.findProperty("modrinthToken") as String
projectId = project.modrinth_project_id
versionNumber = "${project.minecraft_version}-${project.version}"
versionName = "${project.minecraft_version}-${project.version}"
versionNumber = "${minecraftVersion}-${project.version}"
versionName = "${minecraftVersion}-${project.version}"
uploadFile = jar
addGameVersion(project.minecraft_version as String)
addLoader("fabric")
addLoader("forge")
versionType = project.releaseType.toLowerCase()
addGameVersion(minecraftVersion)
if (project.includeFabric.toBoolean()) {
addLoader("fabric")
}
if (project.includeForge.toBoolean()) {
addLoader("forge")
}
versionType = relType
changelog = project.findProperty("changelog") ?: "No changelog provided"
}

def writeUpdateJson() {
def version = project.version
def mcVersion = project.minecraft_version
def writeUpdateJson(mcVersion) {
def version = project.version as String
def slurper = new JsonSlurper()
def file = project.file("update.json")
def json = slurper.parse(file)
def changelogUrl = "https://github.com/${project.repoUser}/${project.repoName}/releases"

if(!mcVersion.contains("w")) {
if (!mcVersion.contains("w") && !version.contains("dev")) {
json["changelog"] = changelogUrl

// TODO: Maybe add something to create an abbreviated changelog? May not be useful...
json.putIfAbsent(mcVersion, new HashMap<>())
json[mcVersion].putIfAbsent(version, changelogUrl + "/" + version)
json[mcVersion] = json[mcVersion].sort([compare: { a, b -> a.compareTo(b) }] as Comparator)
json["promos"]["${mcVersion}-latest"] = version
json["promos"]["${mcVersion}-recommended"] = version
if (!version.contains("b") && !version.contains("a")) {
json["promos"]["${mcVersion}-recommended"] = version
}

println(json)
file.write(JsonOutput.prettyPrint(JsonOutput.toJson(json)))
Expand All @@ -156,7 +203,7 @@ def writeUpdateJson() {
task createUpdateJson(group: "modding") {
doLast {
println("Updating update.json...")
writeUpdateJson()
writeUpdateJson(minecraftVersion)
}
}
build.finalizedBy createUpdateJson
4 changes: 4 additions & 0 deletions common/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
dependencies {
compileOnly(libs.gson)
compileOnly(libs.log4j2)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package fr.raksrinana.editsign.common;

import fr.raksrinana.editsign.common.config.Configuration;
import fr.raksrinana.editsign.common.wrapper.IComponent;
import fr.raksrinana.editsign.common.wrapper.IHand;
import fr.raksrinana.editsign.common.wrapper.IItem;
import fr.raksrinana.editsign.common.wrapper.IPlayer;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import org.jetbrains.annotations.NotNull;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Stream;
import static java.util.stream.Collectors.toSet;

@RequiredArgsConstructor
@Getter
public abstract class EditSignCommon{
private final Configuration configuration;

public EditSignCommon(){
configuration = Configuration.read();
}

@NotNull
public abstract IComponent translate(@NotNull String key, Object... objects);

public boolean canPlayerEdit(@NotNull IPlayer player, @NotNull IHand hand){
var requiredItem = configuration.getRequiredItem(this);
if(!requiredItem.isEmpty()){
var playerItem = player.getHandItem(hand).getItem();
if(requiredItem.stream().noneMatch(item -> item.equals(playerItem))){
return false;
}
}
return player.mayBuild();
}

public Set<IItem> getAsItems(String name){
return Optional.ofNullable(name).stream()
.filter(Objects::nonNull)
.filter(val -> !val.isEmpty())
.flatMap(this::getItem)
.filter(Objects::nonNull)
.filter(item -> !item.isAir())
.collect(toSet());
}

@NotNull
public abstract Stream<IItem> getItem(@NotNull String name);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package fr.raksrinana.editsign.common.config;

import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import org.jetbrains.annotations.NotNull;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;

public class ConfigLoader{
private static final Gson gson = new GsonBuilder()
.disableHtmlEscaping()
.setPrettyPrinting()
.excludeFieldsWithoutExposeAnnotation()
.create();

@NotNull
static <T> T loadConfig(@NotNull T config, @NotNull Class<T> clazz, @NotNull Path path) throws IOException{
if(Files.isRegularFile(path)){
try(var reader = Files.newBufferedReader(path)){
config = gson.fromJson(reader, clazz);
}
}
return saveConfig(config, path);
}

@NotNull
static <T> T saveConfig(@NotNull T config, @NotNull Path path) throws IOException{
if(!Files.exists(path)){
Files.createDirectories(path.getParent());
}
try(var writer = Files.newBufferedWriter(path, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING)){
gson.toJson(config, writer);
}
return config;
}
}
Loading

0 comments on commit 71e6b46

Please sign in to comment.