Showing with 971 additions and 805 deletions.
  1. +7 −2 .editorconfig
  2. +24 −0 .github/workflows/build.yml
  3. +44 −0 .github/workflows/release.yml
  4. +4 −3 README.md
  5. +67 −37 build.gradle
  6. +19 −5 gradle.properties
  7. 0 gradlew
  8. 0 gradlew.bat
  9. +8 −2 libs.versions.toml
  10. +9 −9 settings.gradle
  11. +59 −59 src/main/java/net/modfest/ballotbox/BallotBox.java
  12. +62 −62 src/main/java/net/modfest/ballotbox/BallotBoxCommands.java
  13. +12 −12 src/main/java/net/modfest/ballotbox/BallotBoxConfig.java
  14. +28 −27 src/main/java/net/modfest/ballotbox/BallotBoxNetworking.java
  15. +32 −32 src/main/java/net/modfest/ballotbox/BallotBoxPlatformClient.java
  16. +21 −21 src/main/java/net/modfest/ballotbox/BallotState.java
  17. +19 −19 src/main/java/net/modfest/ballotbox/client/BallotBoxClient.java
  18. +17 −17 src/main/java/net/modfest/ballotbox/client/BallotBoxClientNetworking.java
  19. +15 −15 src/main/java/net/modfest/ballotbox/client/BallotBoxKeybinds.java
  20. +295 −295 src/main/java/net/modfest/ballotbox/client/VotingScreen.java
  21. +8 −8 src/main/java/net/modfest/ballotbox/data/VotingCategory.java
  22. +13 −13 src/main/java/net/modfest/ballotbox/data/VotingOption.java
  23. +3 −3 src/main/java/net/modfest/ballotbox/data/VotingSelections.java
  24. +29 −29 src/main/java/net/modfest/ballotbox/mixin/client/GameMenuScreenMixin.java
  25. +4 −4 src/main/java/net/modfest/ballotbox/mixin/client/OptionEntryAccessor.java
  26. +8 −8 src/main/java/net/modfest/ballotbox/packet/C2SUpdateVote.java
  27. +6 −6 src/main/java/net/modfest/ballotbox/packet/OpenVoteScreen.java
  28. +10 −10 src/main/java/net/modfest/ballotbox/packet/S2CGameJoin.java
  29. +11 −11 src/main/java/net/modfest/ballotbox/packet/S2CVoteScreenData.java
  30. +8 −8 src/main/java/net/modfest/ballotbox/util/MapUtil.java
  31. +44 −0 src/main/resources/META-INF/neoforge.mods.toml
  32. +2 −2 src/main/resources/assets/ballotbox/lang/en_us.json
  33. +8 −8 src/main/resources/assets/ballotbox/textures/gui/sprites/button_voted.png.mcmeta
  34. +13 −13 src/main/resources/ballotbox.mixins.json
  35. +28 −28 src/main/resources/data/ballotbox/ballot/categories.json
  36. +34 −37 src/main/resources/fabric.mod.json
9 changes: 7 additions & 2 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
[*]
indent_size = 4
indent_style = space
indent_style = tab
tab_width = 4
insert_final_newline = true

[*.yml]
indent_size = 2
indent_style = space

[*.java]
ij_java_block_brace_style = end_of_line
ij_java_lambda_brace_style = end_of_line
ij_java_method_brace_style = end_of_line
ij_java_names_count_to_use_import_on_demand = 999

[{*.gant,*.groovy,*.gy,*.gradle}]
ij_groovy_block_brace_style = end_of_line
Expand All @@ -15,5 +21,4 @@ ij_groovy_lambda_brace_style = end_of_line
ij_groovy_method_brace_style = end_of_line

[{*.har,*.json,*.png.mcmeta,mcmod.info,pack.mcmeta}]
indent_size = 2
ij_json_array_wrapping = split_into_lines
24 changes: 24 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Build

on: [ push, pull_request ]

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup jdk
uses: actions/setup-java@v4
with:
java-version: 21
distribution: 'temurin'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
with:
validate-wrappers: true

- name: Build with Gradle
run: ./gradlew build
44 changes: 44 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Release

on:
release:
types:
- published

jobs:
upload:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4

- name: Setup jdk
uses: actions/setup-java@v4
with:
java-version: 21
distribution: 'temurin'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v3
with:
validate-wrappers: true

- name: Build with Gradle
run: ./gradlew build

- name: Upload GitHub release
uses: AButler/upload-release-assets@v2.0
with:
files: 'build/libs/*.jar;!build/libs/*-sources.jar;!build/libs/*-dev.jar'
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Publish to Modrinth
run: ./gradlew modrinth
env:
MODRINTH_TOKEN: ${{ secrets.MODRINTH_MASCOT_TOKEN }}
CHANGELOG: ${{ github.event.release.body }}

- name: Sync README
run: ./gradlew modrinthSyncBody
env:
MODRINTH_TOKEN: ${{ secrets.MODRINTH_MASCOT_TOKEN }}
7 changes: 4 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

<center>
In-game category voting for mods!<br/>
Intended for use in <a href="https://modfest.net">ModFest</a> events.
Maintained for use at <a href="https://modfest.net">ModFest</a> events.
</center>

---
Expand All @@ -13,6 +13,7 @@ Intended for use in <a href="https://modfest.net">ModFest</a> events.
Players can vote for options (usually mods) across multiple award categories using a hotkey (`'`), from the pause menu, or by running `/vote`.

**Features:**

- Server-driven voting UI - the server sends voting options, categories, and any previous vote selections.
- Data-driven vote categories.
- API-driven vote options intended for the ModFest platform API.
Expand All @@ -22,5 +23,5 @@ Players can vote for options (usually mods) across multiple award categories usi

---

This mod was first revealed at ModFest: Carnival!<br/>
Nifty, right?
This mod was originally created by Prospector, acikek, and Sisby folk as a base mod for [ModFest: Carnival](https://modfest.net/carnival)!<br/>
Feel free to contribute bugfixes and improvements!
104 changes: 67 additions & 37 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,64 +1,94 @@
//file:noinspection GroovyAssignabilityCheck
//file:noinspection GroovyAccessibility
plugins {
id "maven-publish"
alias libs.plugins.loom
id "maven-publish"
alias libs.plugins.loom
alias libs.plugins.minotaur
}

version = "$project.baseVersion+$project.branch"
archivesBaseName = "ballotbox"
group = "net.modfest"
version = "$baseVersion+$branch"
archivesBaseName = project.slug

repositories {
maven { url "https://maven.terraformersmc.com/releases" }
maven { url "https://maven.gegy.dev" }
maven { url "https://maven.quiltmc.org/repository/release" }
maven { url "https://repo.sleeping.town/" }
mavenLocal()
maven { url "https://maven.terraformersmc.com/releases" }
maven { url "https://maven.gegy.dev" }
maven { url "https://maven.quiltmc.org/repository/release" }
maven { url "https://repo.sleeping.town/" }
}

dependencies {
minecraft libs.mc
mappings variantOf(libs.yarn) { classifier "v2" }
modImplementation libs.fl
modImplementation libs.fapi
modImplementation libs.spruceui
implementation libs.kaleidoConfig
implementation libs.kaleidoConfig
include libs.kaleidoConfig

include libs.spruceui
include libs.kaleidoConfig
minecraft libs.mc
mappings variantOf(libs.yarn) { classifier "v2" }
modImplementation libs.fl

modImplementation libs.fapi

modImplementation libs.spruceui
include libs.spruceui
}

processResources {
final Map<String, String> map = [
"version" : version.toString(),
"mc" : libs.versions.mc.get(),
"fl" : libs.versions.fl.get(),
"fapi" : libs.versions.fapi.get(),
"spruceui": libs.versions.spruceui.get()
]

inputs.properties(map)
filesMatching("*.mod.json") { expand(map) }
final Map<String, String> meta = [
version : version,
modId : modId,
modName : modName,
modDescription: modDescription,
homepage : "https://modrinth.com/mod/${slug}",
issues : "https://github.com/${user}/${slug}/issues",
sources : "https://github.com/${user}/${slug}",
license : license,
authors : authors.split(", ").join("\",\n \""),
contributors : contributors.split(", ").join("\",\n \""),
members : "${authors}. Contributions by ${contributors}",
mc : compatibleVersions.split(", ")[0],
fl : libs.versions.fl.get(),
fapi : libs.versions.fapi.get(),
spruceui : libs.versions.spruceui.get()
]
inputs.properties(meta)
filesMatching("*.mod.json") { expand(meta) }
filesMatching("META-INF/*mods.toml") { expand(meta) }
}

tasks.withType(JavaCompile).configureEach {
it.options.encoding = "UTF-8"
it.options.release = 21
it.options.encoding = "UTF-8"
it.options.release = 21
}

java {
withSourcesJar()
withSourcesJar()
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}

jar {
from "LICENSE"
from("LICENSE") {
rename { "${it}_${archivesBaseName}" }
}
}

publishing {
publications {
mavenJava(MavenPublication) {
from components.java
}
}
publications {
mavenJava(MavenPublication) {
from components.java
}
}
}

modrinth {
token = "$System.env.MODRINTH_TOKEN"
projectId = slug
versionNumber = project.version
uploadFile = remapJar
gameVersions = compatibleVersions.split(", ").toList()
loaders = compatibleLoaders.split(", ").toList()
changelog = "$System.env.CHANGELOG"
syncBodyFrom = "<!--DO NOT EDIT MANUALLY: synced from gh readme-->\n" + rootProject.file("README.md").text
dependencies {
required.version "fabric-api", libs.versions.fapi.get()
}
}

24 changes: 19 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,11 +1,25 @@
# Gradle Properties
# Gradle
org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
org.gradle.caching=true
org.gradle.parallel=true
org.gradle.caching.debug=false
org.gradle.configureondemand=true
# Enable advanced multi-module optimizations (share tiny-remaper instance between projects)
# Loom
fabric.loom.multiProjectOptimisation=true
# Mod Properties
baseVersion = 0.4.2
branch = 1.21
# Mod Metadata
group=net.modfest
user=ModFest
slug=ballotbox
modId=ballotbox
modName=Ballotbox
modDescription=In-game category voting!
authors=ModFest
contributors=Prospector, Sisby folk, acikek
license=MIT
# Mod Version
baseVersion=0.4.3
# Branch Metadata
branch=1.21
tagBranch=1.21
compatibleVersions=1.21, 1.21.1
compatibleLoaders=fabric, quilt, neoforge
Empty file modified gradlew
100644 → 100755
Empty file.
Empty file modified gradlew.bat
100644 → 100755
Empty file.
10 changes: 8 additions & 2 deletions libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,20 +1,26 @@
[versions]
loom = "1.7.+"
minotaur = "2.+"

kaleidoConfig = "0.3.1+1.3.1"

mc = "1.21"
fl = "0.15.11"
yarn = "1.21+build.9"
fapi = "0.100.7+1.21"

spruceui = "5.1.0+1.21"
kaleidoConfig = "0.3.1+1.3.1"

[plugins]
loom = { id = "fabric-loom", version.ref = "loom" }
minotaur = { id = "com.modrinth.minotaur", version.ref = "minotaur" }

[libraries]
kaleidoConfig = { group = "folk.sisby", name = "kaleido-config", version.ref = "kaleidoConfig" }

mc = { group = "mojang", name = "minecraft", version.ref = "mc" }
fl = { group = "net.fabricmc", name = "fabric-loader", version.ref = "fl" }
yarn = { group = "net.fabricmc", name = "yarn", version.ref = "yarn" }
fapi = { group = "net.fabricmc.fabric-api", name = "fabric-api", version.ref = "fapi" }

spruceui = { group = "dev.lambdaurora", name = "spruceui", version.ref = "spruceui" }
kaleidoConfig = { group = "folk.sisby", name = "kaleido-config", version.ref = "kaleidoConfig" }
18 changes: 9 additions & 9 deletions settings.gradle
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
pluginManagement {
repositories {
maven { url 'https://maven.fabricmc.net/' }
gradlePluginPortal()
}
repositories {
maven { url "https://maven.fabricmc.net/" }
gradlePluginPortal()
}
}

dependencyResolutionManagement {
versionCatalogs {
create("libs") {
from(files("libs.versions.toml"))
}
}
versionCatalogs {
create("libs") {
from(files("libs.versions.toml"))
}
}
}
Loading