From fa95e7781efe702f57627b8aab22221ef658ba01 Mon Sep 17 00:00:00 2001 From: jkortis Date: Wed, 30 Sep 2026 23:11:02 -0400 Subject: [PATCH] Initial commit: Villager Roller v1.0.0 --- .gitattributes | 15 + .gitea/workflows/build.yaml | 48 ++ .github/workflows/build.yml | 48 ++ .gitignore | 24 + LICENSE | 21 + README.md | 126 +++ build.gradle | 45 ++ gradle.properties | 14 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 47623 bytes gradle/wrapper/gradle-wrapper.properties | 9 + gradlew | 248 ++++++ gradlew.bat | 112 +++ release/villager-roller-1.0.0.jar | Bin 0 -> 213673 bytes settings.gradle | 11 + .../com/villagerroller/VillagerRoller.java | 107 +++ .../automation/RerollStateMachine.java | 743 ++++++++++++++++++ .../com/villagerroller/config/ModConfig.java | 10 + .../com/villagerroller/mixin/GuiMixin.java | 23 + .../com/villagerroller/mixin/HudMixin.java | 18 + .../com/villagerroller/mixin/WindowMixin.java | 18 + .../villagerroller/trade/TradeCategory.java | 41 + .../com/villagerroller/trade/TradeOption.java | 140 ++++ .../villagerroller/trade/TradeRegistry.java | 142 ++++ .../villagerroller/ui/ModMenuIntegration.java | 11 + .../villagerroller/ui/RerollHudOverlay.java | 138 ++++ .../ui/RerollKeybindsScreen.java | 178 +++++ .../com/villagerroller/ui/RerollScreen.java | 179 +++++ .../com/villagerroller/util/TradeMatcher.java | 21 + .../assets/villager-roller/lang/en_us.json | 6 + .../assets/villagerroller/lang/en_us.json | 6 + src/main/resources/fabric.mod.json | 29 + .../resources/villager-roller.mixins.json | 14 + 32 files changed, 2545 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitea/workflows/build.yaml create mode 100644 .github/workflows/build.yml create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat create mode 100644 release/villager-roller-1.0.0.jar create mode 100644 settings.gradle create mode 100644 src/main/java/com/villagerroller/VillagerRoller.java create mode 100644 src/main/java/com/villagerroller/automation/RerollStateMachine.java create mode 100644 src/main/java/com/villagerroller/config/ModConfig.java create mode 100644 src/main/java/com/villagerroller/mixin/GuiMixin.java create mode 100644 src/main/java/com/villagerroller/mixin/HudMixin.java create mode 100644 src/main/java/com/villagerroller/mixin/WindowMixin.java create mode 100644 src/main/java/com/villagerroller/trade/TradeCategory.java create mode 100644 src/main/java/com/villagerroller/trade/TradeOption.java create mode 100644 src/main/java/com/villagerroller/trade/TradeRegistry.java create mode 100644 src/main/java/com/villagerroller/ui/ModMenuIntegration.java create mode 100644 src/main/java/com/villagerroller/ui/RerollHudOverlay.java create mode 100644 src/main/java/com/villagerroller/ui/RerollKeybindsScreen.java create mode 100644 src/main/java/com/villagerroller/ui/RerollScreen.java create mode 100644 src/main/java/com/villagerroller/util/TradeMatcher.java create mode 100644 src/main/resources/assets/villager-roller/lang/en_us.json create mode 100644 src/main/resources/assets/villagerroller/lang/en_us.json create mode 100644 src/main/resources/fabric.mod.json create mode 100644 src/main/resources/villager-roller.mixins.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..ff951ac --- /dev/null +++ b/.gitattributes @@ -0,0 +1,15 @@ +# Auto-detect text files and normalize line endings +* text=auto + +# Ensure shell scripts and gradlew wrapper always keep LF line endings for Linux/macOS & CI +gradlew text eol=lf +*.sh text eol=lf + +# Windows batch scripts +*.bat text eol=crlf +*.cmd text eol=crlf + +# Binary files +*.jar binary +*.png binary +*.ico binary diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml new file mode 100644 index 0000000..d461de4 --- /dev/null +++ b/.gitea/workflows/build.yaml @@ -0,0 +1,48 @@ +name: Build Mod + +on: + push: + branches: [ "main", "master" ] + tags: + - 'v*' + pull_request: + branches: [ "main", "master" ] + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up JDK 25 + uses: actions/setup-java@v4 + with: + java-version: '25' + distribution: 'temurin' + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build with Gradle + run: ./gradlew build + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: villager-roller-mod + path: build/libs/*.jar + + - name: Create Gitea Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: | + build/libs/*.jar + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..2f1ebf3 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,48 @@ +name: Build Mod + +on: + push: + branches: [ "main", "master" ] + tags: + - 'v*' + pull_request: + branches: [ "main", "master" ] + workflow_dispatch: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Set up JDK 25 + uses: actions/setup-java@v4 + with: + java-version: '25' + distribution: 'temurin' + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build with Gradle + run: ./gradlew build + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: villager-roller-mod + path: build/libs/*.jar + + - name: Create Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + files: | + build/libs/*.jar + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a8e6d9e --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Gradle build & cache +.gradle/ +build/ +bin/ +out/ + +# Minecraft client logs and runs +run/ +logs/ +crash-reports/ +*.log +*.log.gz + +# IDE & Editor Files +.idea/ +*.iml +.vscode/ +.classpath +.project +.settings/ + +# OS specific files +.DS_Store +Thumbs.db diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..25c145c --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2026 Villager Roller Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..9bb342d --- /dev/null +++ b/README.md @@ -0,0 +1,126 @@ +# Villager Roller + +[![Minecraft](https://img.shields.io/badge/Minecraft-26.3-brightgreen.svg)](https://minecraft.net/) +[![Fabric](https://img.shields.io/badge/Fabric-0.19.5+-blue.svg)](https://fabricmc.net/) +[![Java](https://img.shields.io/badge/Java-25-orange.svg)](https://adoptium.net/) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) + +**Villager Roller** is a high-performance, client-side Fabric mod for Minecraft 26.3 that automates the tedious process of rerolling villager trades. By breaking and placing workstations, opening trade interfaces, and analyzing offers automatically, it lets you secure your desired enchanted books and commodity trades with ease. + +--- + +## ✨ Features + +- **🤖 Fully Automated Rerolling**: Automates breaking the workstation block, placing it back down, awaiting job claiming, and reading offers. +- **📚 All 13 Workstations Supported**: Includes Lectern, Blast Furnace, Smoker, Fletching Table, Composter, Smithing Table, Grindstone, Brewing Stand, Barrel, Cartography Table, Cauldron, Stonecutter, and Loom. +- **💎 Emerald Price Filtering**: Cycle max price thresholds (`≤10`, `≤15`, `≤20`, `≤32`, `Any ≤64`) so you never overpay for high-tier enchantments like Mending or Unbreaking III. +- **🖥️ In-Game HUD Overlay**: Displays current state, target trade, price limit, attempt counter, and background focus status in real time. +- **🪟 Background Focus Mode**: Toggle focus mode (U) to keep the game active and rolling even when alt-tabbed to another monitor or application. +- **🛑 One-Touch Emergency Stop**: Hit X anytime to instantly halt automation and restore normal controls. +- **🌐 Multiplayer & Latency Resilient**: Built-in state machine waits for server block confirmation and handles packet latency without desyncing. +- **⚙️ ModMenu & Keybinds Integration**: Access configuration and rebinding screens directly from ModMenu or in-game menus. + +--- + +## 🎮 Default Keybindings + +| Key | Default | Description | +|---|:---:|---| +| **Open Trade Selector** | V | Opens the trade selection and configuration menu | +| **Emergency Stop** | X | Instantly halts automation at any point | +| **Toggle Background Focus** | U | Toggles whether Minecraft continues running when unfocused | + +> *All keybinds can be reconfigured in Options → Controls → Key Binds or via the in-game Keybinds screen.* + +--- + +## 🚀 How to Use + +### 1. Select Your Target Trade +1. Press V to open the **Trade Selector**. +2. Select your workstation on the left (e.g. *Lectern (Librarian)*). +3. Choose your desired trade on the right (e.g. *Mending*, *Unbreaking III*, *Efficiency V*, *32 Sticks -> 1 Emerald*). +4. *(Optional)* Click **Max Emeralds** to set a price ceiling (e.g. `≤ 15 Emeralds`). +5. Click **Confirm & Start Setup**. + +### 2. Interactive 3-Step Calibration +The mod guides you through an initial setup sequence to ensure accurate positions: +- **Step 1/3**: Right-click your unlinked / novice villager. +- **Step 2/3**: Break and replace the villager's workstation block. +- **Step 3/3**: Right-click the villager to verify trade opening. + +### 3. Automatic Takeover +- The state machine takes over automatically, cycling the workstation and inspecting trades. +- When your matching trade and price conditions are met: + - Automation stops immediately. + - An audible chime alerts you that the roll succeeded! + +--- + +## 🏛️ Supported Workstations & Professions + +| Workstation | Profession | Common Targets | +|---|---|---| +| **Lectern** | Librarian | Mending, Unbreaking III, Protection IV, Efficiency V, Fortune III, Silk Touch, Paper -> Emerald | +| **Fletching Table** | Fletcher | 32 Sticks -> 1 Emerald, Arrows, Flint | +| **Composter** | Farmer | Wheat, Potatoes, Carrots, Beetroots, Bread | +| **Blast Furnace** | Armorer | Coal -> Emerald, Iron Armor (Helmet, Chestplate, Leggings, Boots) | +| **Smithing Table** | Toolsmith | Coal -> Emerald, Iron Tools (Pickaxe, Axe, Shovel, Hoe) | +| **Grindstone** | Weaponsmith | Coal -> Emerald, Iron Sword, Iron Axe | +| **Smoker** | Butcher | Raw Chicken, Porkchop, Rabbit -> Emerald, Cooked Food | +| **Brewing Stand** | Cleric | 32 Rotten Flesh -> 1 Emerald, Redstone Dust | +| **Barrel** | Fisherman | Raw Cod, Raw Salmon, Campfire | +| **Cartography Table** | Cartographer | 24 Paper -> 1 Emerald, Blank Map | +| **Cauldron** | Leatherworker | Leather -> Emerald, Leather Armor | +| **Stonecutter** | Mason | 10 Clay Balls -> 1 Emerald, Bricks | +| **Loom** | Shepherd | 18 Wool -> 1 Emerald, Shears | + +--- + +## 📥 Installation + +1. Install **[Fabric Loader](https://fabricmc.net/use/)** (`0.19.5` or newer) for Minecraft `26.3`. +2. Download **[Fabric API](https://modrinth.com/mod/fabric-api)** (`0.161.0+26.3` or compatible). +3. Download the latest `villager-roller-1.0.0.jar` from the [Releases](../../releases) tab (or find it in the `release/` folder). +4. Place both `.jar` files into your `.minecraft/mods` folder. +5. Launch Minecraft using your Fabric profile. + +--- + +## 🛠️ Building from Source + +### Requirements +- **JDK 25** or newer +- Internet connection (for Gradle dependency resolution) + +### Build Commands +Clone or download the repository, open a terminal in the project directory, and execute: + +```bash +# Windows +.\gradlew clean build + +# macOS / Linux +chmod +x gradlew +./gradlew clean build +``` + +The compiled mod JAR will be output to: +``` +build/libs/villager-roller-1.0.0.jar +``` + +--- + +## 📂 Project Organization + +This repository is maintained with a clean release workspace layout: +- **`src/`**: Mod source code, Mixins, UI components, and localization files. +- **`release/`**: Ready-to-use compiled release `.jar` binaries for easy distribution. +- **`.gitea/workflows/` & `.github/workflows/`**: Automated CI pipelines that build, test, and package release artifacts on every push or tag. + +--- + +## 📄 License + +This project is open source and available under the [MIT License](LICENSE). diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000..17dbed3 --- /dev/null +++ b/build.gradle @@ -0,0 +1,45 @@ +plugins { + id 'net.fabricmc.fabric-loom' version "${loom_version}" +} + +version = project.version +group = project.group + +repositories { + mavenCentral() + maven { + name = "Terraformers" + url = "https://maven.terraformersmc.com/releases/" + } +} + +dependencies { + minecraft "com.mojang:minecraft:${project.minecraft_version}" + implementation "net.fabricmc:fabric-loader:${project.loader_version}" + implementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}" + + include "net.fabricmc.fabric-api:fabric-key-mapping-api-v1:2.0.8+3434d6d95d" + include "net.fabricmc.fabric-api:fabric-lifecycle-events-v1:4.1.9+ffef5f675d" + include "net.fabricmc.fabric-api:fabric-events-interaction-v0:5.3.6+3434d6d95d" + include "net.fabricmc.fabric-api:fabric-api-base:2.0.6+fcdff87f5d" + + compileOnly "com.terraformersmc:modmenu:21.0.0" +} + +processResources { + def version = project.version + inputs.property "version", version + + filesMatching("fabric.mod.json") { + expand "version": version + } +} + +tasks.withType(JavaCompile).configureEach { + it.options.release = 25 +} + +java { + sourceCompatibility = JavaVersion.VERSION_25 + targetCompatibility = JavaVersion.VERSION_25 +} diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..e648ebf --- /dev/null +++ b/gradle.properties @@ -0,0 +1,14 @@ +org.gradle.jvmargs=-Xmx2G +org.gradle.parallel=true + +# Fabric Properties +minecraft_version=26.3 +loader_version=0.19.5 +loom_version=1.17.21 + +# Mod Properties +version=1.0.0 +group=com.villagerroller + +# Dependencies +fabric_api_version=0.161.0+26.3 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..5097068a8d375f5bf0d15693fb5b3615c972a801 GIT binary patch literal 47623 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 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..eb84db6 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,9 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-9.6.0-bin.zip +networkTimeout=10000 +retries=0 +retryBackOffMs=500 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000..249efbb --- /dev/null +++ b/gradlew @@ -0,0 +1,248 @@ +#!/bin/sh + +# +# Copyright © 2015 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# gradlew start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh gradlew +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/3d91ce3b8caaf77ad09f381f43615b715b53f72c/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..3185a43 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,112 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem gradlew startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables, and ensure extensions are enabled +setlocal EnableExtensions + +@rem Catch executions from older scripts and ensure they exit cleanly. +@rem This can be removed once we can be reasonably confident that few people +@rem will be migrating directly to this new wrapper. +goto afterSafetyNet +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +goto exitWithErrorLevel +:afterSafetyNet + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +1>&2 echo. +1>&2 echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +1>&2 echo. +1>&2 echo Please set the JAVA_HOME variable in your environment to match the +1>&2 echo location of your Java installation. + +"%COMSPEC%" /c exit 1 +goto exitWithErrorLevel + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +1>&2 echo. +1>&2 echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +1>&2 echo. +1>&2 echo Please set the JAVA_HOME variable in your environment to match the +1>&2 echo location of your Java installation. + +"%COMSPEC%" /c exit 1 +goto exitWithErrorLevel + +:execute +@rem Setup the command line + + + +@rem Execute gradlew +@rem endlocal doesn't take effect until after the line is parsed and variables are expanded +@rem which allows us to clear the local environment before executing the java command +endlocal & "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* & call :exitWithErrorLevel & goto exitWithErrorLevel + +@rem This label must not be changed. We rely on old scripts being able to jump to this point. +:exitWithErrorLevel +@rem Use "%COMSPEC%" /c exit to allow operators to work properly in scripts +"%COMSPEC%" /c exit %ERRORLEVEL% diff --git a/release/villager-roller-1.0.0.jar b/release/villager-roller-1.0.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..bf39283a7d915fc62d4bea4ab73fb98c262560d4 GIT binary patch literal 213673 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%0D2XKjP2}9G=$iE#}&@_ST4FXPTOc# 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 literal 0 HcmV?d00001 diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 0000000..9fe2a62 --- /dev/null +++ b/settings.gradle @@ -0,0 +1,11 @@ +pluginManagement { + repositories { + maven { + name = 'Fabric' + url = 'https://maven.fabricmc.net/' + } + gradlePluginPortal() + } +} + +rootProject.name = 'villager-roller' diff --git a/src/main/java/com/villagerroller/VillagerRoller.java b/src/main/java/com/villagerroller/VillagerRoller.java new file mode 100644 index 0000000..1713634 --- /dev/null +++ b/src/main/java/com/villagerroller/VillagerRoller.java @@ -0,0 +1,107 @@ +package com.villagerroller; + +import com.mojang.blaze3d.platform.InputConstants; +import com.villagerroller.automation.RerollStateMachine; +import com.villagerroller.ui.RerollScreen; +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; +import net.fabricmc.fabric.api.client.keymapping.v1.KeyMappingHelper; +import net.fabricmc.fabric.api.event.player.AttackBlockCallback; +import net.fabricmc.fabric.api.event.player.UseEntityCallback; +import net.minecraft.client.KeyMapping; +import net.minecraft.client.resources.sounds.SimpleSoundInstance; +import net.minecraft.network.chat.Component; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.npc.villager.Villager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class VillagerRoller implements ClientModInitializer { + public static final Logger LOGGER = LoggerFactory.getLogger("villager-roller"); + public static final KeyMapping.Category CATEGORY = KeyMapping.Category.register( + net.minecraft.resources.Identifier.fromNamespaceAndPath("villagerroller", "general") + ); + + public static KeyMapping openGuiKey; + public static KeyMapping stopKey; + public static KeyMapping toggleFocusKey; + + private static RerollStateMachine stateMachine; + + @Override + public void onInitializeClient() { + LOGGER.info("Villager Roller initializing..."); + + openGuiKey = KeyMappingHelper.registerKeyMapping(new KeyMapping( + "key.villagerroller.open", + InputConstants.KEY_V, + CATEGORY + )); + + stopKey = KeyMappingHelper.registerKeyMapping(new KeyMapping( + "key.villagerroller.stop", + InputConstants.KEY_X, + CATEGORY + )); + + toggleFocusKey = KeyMappingHelper.registerKeyMapping(new KeyMapping( + "key.villagerroller.toggle_focus", + InputConstants.KEY_U, + CATEGORY + )); + + stateMachine = new RerollStateMachine(); + + // 1. Capture villager click during setup + UseEntityCallback.EVENT.register((player, world, hand, entity, hitResult) -> { + if (world.isClientSide() && entity instanceof Villager villager) { + stateMachine.onVillagerSelected(villager); + } + return InteractionResult.PASS; + }); + + // 2. Capture targeted workstation block during setup + AttackBlockCallback.EVENT.register((player, world, hand, pos, direction) -> { + if (world.isClientSide()) { + stateMachine.onBlockAttacked(pos); + } + return InteractionResult.PASS; + }); + + // 3. Client tick handler for keybinds and state machine + ClientTickEvents.END_CLIENT_TICK.register(client -> { + if (client.player == null) return; + + if (com.villagerroller.config.ModConfig.keepFocusedOnUnfocus && client.options != null && client.options.pauseOnLostFocus) { + client.options.pauseOnLostFocus = false; + } + + while (openGuiKey.consumeClick()) { + client.execute(() -> client.setScreenAndShow(new RerollScreen(stateMachine))); + } + + while (stopKey.consumeClick()) { + stateMachine.emergencyStop(); + } + + while (toggleFocusKey.consumeClick()) { + com.villagerroller.config.ModConfig.keepFocusedOnUnfocus = !com.villagerroller.config.ModConfig.keepFocusedOnUnfocus; + if (client.player != null) { + String status = com.villagerroller.config.ModConfig.keepFocusedOnUnfocus ? "§aENABLED" : "§cDISABLED"; + client.player.sendSystemMessage(Component.literal("§6[Villager Roller] §eBackground Focus Mode: " + status)); + client.getSoundManager().play(SimpleSoundInstance.forUI( + SoundEvents.UI_BUTTON_CLICK, + com.villagerroller.config.ModConfig.keepFocusedOnUnfocus ? 1.2F : 0.8F + )); + } + } + + stateMachine.tick(client); + }); + } + + public static RerollStateMachine getStateMachine() { + return stateMachine; + } +} diff --git a/src/main/java/com/villagerroller/automation/RerollStateMachine.java b/src/main/java/com/villagerroller/automation/RerollStateMachine.java new file mode 100644 index 0000000..6d6a761 --- /dev/null +++ b/src/main/java/com/villagerroller/automation/RerollStateMachine.java @@ -0,0 +1,743 @@ +package com.villagerroller.automation; + +import com.villagerroller.trade.TradeCategory; +import com.villagerroller.trade.TradeOption; +import com.villagerroller.util.TradeMatcher; +import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; +import net.minecraft.client.resources.sounds.SimpleSoundInstance; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.core.component.DataComponents; +import net.minecraft.network.chat.Component; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.entity.npc.villager.Villager; +import net.minecraft.world.inventory.MerchantMenu; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.enchantment.ItemEnchantments; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraft.world.phys.EntityHitResult; +import net.minecraft.world.phys.Vec3; + +import com.mojang.blaze3d.platform.InputConstants; +import com.mojang.blaze3d.platform.Window; +import net.minecraft.client.MouseHandler; +import net.minecraft.client.gui.screens.inventory.MerchantScreen; +import net.minecraft.network.protocol.game.ServerboundSelectTradePacket; +import net.minecraft.world.entity.item.ItemEntity; +import net.minecraft.world.inventory.ContainerInput; +import net.minecraft.world.phys.AABB; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.List; + +public class RerollStateMachine { + public enum AutomationState { + IDLE, + SETUP_WAITING_FOR_VILLAGER, + SETUP_WAITING_FOR_WORKSTATION_BREAK, + SETUP_WAITING_FOR_WORKSTATION_PLACE, + SETUP_WAITING_FOR_INITIAL_CHECK, + AUTO_BREAKING, + AUTO_WAITING_BREAK, + AUTO_RETRIEVING_WORKSTATION, + AUTO_RETURNING_TO_STATION, + AUTO_WAITING_UNEMPLOY, + AUTO_PLACING, + AUTO_WAITING_PLACE, + AUTO_WAITING_CLAIM, + AUTO_INTERACTING, + AUTO_WAITING_OFFERS, + SUCCESS, + ERROR + } + + private AutomationState currentState = AutomationState.IDLE; + private TradeCategory targetCategory; + private TradeOption targetOption; + private int maxEmeraldPrice = 64; + + private Villager targetVillager; + private BlockPos workstationPos; + private Item workstationItem; + private Vec3 originalPlayerPos = null; + private boolean hasOnlyOneWorkstation = false; + + private int tickCounter = 0; + private int attemptCount = 0; + private int stepCooldown = 0; + private String lastError = ""; + private int matchedTradeIndex = -1; + private boolean mousePositioned = false; + + public void startInteractiveSetup(TradeCategory category, TradeOption option, int maxPrice) { + this.targetCategory = category; + this.targetOption = option; + this.maxEmeraldPrice = maxPrice; + this.targetVillager = null; + this.workstationPos = null; + this.workstationItem = (category != null) ? category.getWorkstationItem() : null; + this.originalPlayerPos = null; + this.hasOnlyOneWorkstation = false; + this.attemptCount = 0; + this.tickCounter = 0; + this.stepCooldown = 15; + this.lastError = ""; + this.matchedTradeIndex = -1; + this.mousePositioned = false; + this.currentState = AutomationState.SETUP_WAITING_FOR_VILLAGER; + + playSound(SoundEvents.EXPERIENCE_ORB_PICKUP); + + LocalPlayer player = Minecraft.getInstance().player; + if (player != null) { + player.sendSystemMessage(Component.literal("§6[Villager Roller] §eTarget trade: §6" + option.getDisplayName() + " §7(Max: " + maxPrice + " Emeralds)")); + player.sendSystemMessage(Component.literal("§6[Villager Roller] §eStep 1/3: Right-click your villager to select them.")); + } + } + + public void onVillagerSelected(Villager villager) { + if (currentState != AutomationState.SETUP_WAITING_FOR_VILLAGER) return; + if (stepCooldown > 0) return; + + this.targetVillager = villager; + this.currentState = AutomationState.SETUP_WAITING_FOR_WORKSTATION_BREAK; + this.workstationPos = null; + this.stepCooldown = 20; + this.tickCounter = 0; + + playSound(SoundEvents.EXPERIENCE_ORB_PICKUP); + LocalPlayer player = Minecraft.getInstance().player; + if (player != null) { + player.sendSystemMessage(Component.literal("§6[Villager Roller] §aVillager selected! §eStep 2/3: Destroy the trade station block.")); + } + } + + public void onBlockAttacked(BlockPos pos) { + if (currentState == AutomationState.SETUP_WAITING_FOR_WORKSTATION_BREAK) { + this.workstationPos = pos.immutable(); + LocalPlayer player = Minecraft.getInstance().player; + if (player != null && Minecraft.getInstance().level != null) { + BlockState state = Minecraft.getInstance().level.getBlockState(pos); + int bestSlot = findBestToolSlot(player, state); + if (bestSlot != -1 && bestSlot != player.getInventory().getSelectedSlot()) { + player.getInventory().setSelectedSlot(bestSlot); + } + } + } + } + + public void emergencyStop() { + releaseMovementKeys(Minecraft.getInstance()); + if (Minecraft.getInstance().gameMode != null) { + Minecraft.getInstance().gameMode.stopDestroyBlock(); + } + if (currentState != AutomationState.IDLE) { + this.currentState = AutomationState.IDLE; + this.targetVillager = null; + this.workstationPos = null; + this.originalPlayerPos = null; + this.hasOnlyOneWorkstation = false; + this.matchedTradeIndex = -1; + this.mousePositioned = false; + playSound(SoundEvents.EXPERIENCE_ORB_PICKUP); + LocalPlayer player = Minecraft.getInstance().player; + if (player != null) { + player.sendSystemMessage(Component.literal("§c[Villager Roller] Automation stopped.")); + } + } + } + + public void tick(Minecraft client) { + if (currentState == AutomationState.IDLE || currentState == AutomationState.ERROR) { + return; + } + + if (currentState == AutomationState.SUCCESS) { + // Once the matching trade screen has opened and the player closes it, release everything to IDLE + if (mousePositioned && client.gui.screen() == null) { + this.currentState = AutomationState.IDLE; + this.targetVillager = null; + this.workstationPos = null; + this.originalPlayerPos = null; + this.matchedTradeIndex = -1; + this.mousePositioned = false; + if (client.gameMode != null) { + client.gameMode.stopDestroyBlock(); + } + releaseMovementKeys(client); + if (client.mouseHandler != null && !client.mouseHandler.isMouseGrabbed()) { + client.mouseHandler.grabMouse(); + } + return; + } + + if (!mousePositioned && matchedTradeIndex != -1 && client.gui.screen() instanceof MerchantScreen) { + selectTradeAndPositionMouse(client, matchedTradeIndex); + mousePositioned = true; + if (client.gameMode != null) { + client.gameMode.stopDestroyBlock(); + } + releaseMovementKeys(client); + } + return; + } + + LocalPlayer player = client.player; + if (player == null) return; + + // Step 1: Wait for player to click on villager + if (currentState == AutomationState.SETUP_WAITING_FOR_VILLAGER) { + if (stepCooldown > 0) stepCooldown--; + player.sendOverlayMessage(Component.literal("§e[Villager Roller] Step 1/3: Right-click your villager")); + return; + } + + // Step 2a: Wait for player to break the workstation + if (currentState == AutomationState.SETUP_WAITING_FOR_WORKSTATION_BREAK) { + if (stepCooldown > 0) stepCooldown--; + if (workstationPos == null) { + player.sendOverlayMessage(Component.literal("§e[Villager Roller] Step 2/3: Destroy the trade station block")); + } else { + player.sendOverlayMessage(Component.literal("§e[Villager Roller] Destroying workstation at " + workstationPos.getX() + ", " + workstationPos.getY() + ", " + workstationPos.getZ())); + if (client.level != null && client.level.getBlockState(workstationPos).isAir()) { + this.currentState = AutomationState.SETUP_WAITING_FOR_WORKSTATION_PLACE; + this.stepCooldown = 20; + this.tickCounter = 0; + playSound(SoundEvents.EXPERIENCE_ORB_PICKUP); + player.sendSystemMessage(Component.literal("§6[Villager Roller] §aWorkstation destroyed! §eNow place it back in the same spot.")); + } + } + return; + } + + // Step 2b: Wait for player to place the workstation back + if (currentState == AutomationState.SETUP_WAITING_FOR_WORKSTATION_PLACE) { + player.sendOverlayMessage(Component.literal("§e[Villager Roller] Step 2/3: Place the trade station back")); + if (stepCooldown > 0) { + stepCooldown--; + return; + } + if (workstationPos != null && client.level != null && !client.level.getBlockState(workstationPos).isAir()) { + BlockState placedState = client.level.getBlockState(workstationPos); + this.workstationItem = placedState.getBlock().asItem(); + this.currentState = AutomationState.SETUP_WAITING_FOR_INITIAL_CHECK; + this.stepCooldown = 25; + this.tickCounter = 0; + + int invCount = countWorkstationsInInventory(player); + this.hasOnlyOneWorkstation = (invCount == 0); + + playSound(SoundEvents.EXPERIENCE_ORB_PICKUP); + if (hasOnlyOneWorkstation) { + player.sendSystemMessage(Component.literal("§6[Villager Roller] §aWorkstation placed! §e(Single workstation detected - auto-retrieval enabled)")); + } else { + player.sendSystemMessage(Component.literal("§6[Villager Roller] §aWorkstation placed! §e(" + (invCount + 1) + " workstations detected)")); + } + player.sendSystemMessage(Component.literal("§6[Villager Roller] §eStep 3/3: Right-click the villager to check trades and start automation.")); + } + return; + } + + // Step 3: Wait for player to check trades + if (currentState == AutomationState.SETUP_WAITING_FOR_INITIAL_CHECK) { + player.sendOverlayMessage(Component.literal("§e[Villager Roller] Step 3/3: Right-click the villager to check trades")); + if (stepCooldown > 0) { + stepCooldown--; + return; + } + if (player.containerMenu instanceof MerchantMenu menu && !menu.getOffers().isEmpty()) { + int matchIndex = TradeMatcher.findMatchingIndex(menu.getOffers(), targetOption, maxEmeraldPrice); + if (matchIndex != -1) { + currentState = AutomationState.SUCCESS; + matchedTradeIndex = matchIndex; + mousePositioned = false; + if (client.gameMode != null) { + client.gameMode.stopDestroyBlock(); + } + releaseMovementKeys(client); + selectTradeAndPositionMouse(client, matchIndex); + mousePositioned = true; + playSound(SoundEvents.PLAYER_LEVELUP); + player.sendSystemMessage(Component.literal("§a§l[Villager Roller] SUCCESS! Desired trade already found!")); + } else { + attemptCount = 1; + playSound(SoundEvents.EXPERIENCE_ORB_PICKUP); + player.sendSystemMessage(Component.literal("§6[Villager Roller] §aInitial trade checked! Mod taking over automatically. Press X to stop.")); + player.closeContainer(); + this.originalPlayerPos = player.position(); + currentState = AutomationState.AUTO_BREAKING; + tickCounter = 0; + } + } + return; + } + + // Automatic Reroll Loop + if (targetVillager == null || workstationPos == null || client.level == null) { + handleError(player, "Villager or workstation lost!"); + return; + } + + if (player.distanceToSqr(Vec3.atCenterOf(workstationPos)) > 36 || player.distanceToSqr(targetVillager) > 49) { + handleError(player, "Moved too far away from workstation or villager!"); + return; + } + + tickCounter++; + + switch (currentState) { + case AUTO_BREAKING -> { + player.sendOverlayMessage(Component.literal("§7[Villager Roller] Breaking workstation... (Attempt #" + attemptCount + ")")); + if (originalPlayerPos == null) { + this.originalPlayerPos = player.position(); + } + + // If player currently has 0 workstations in inventory, they only have the 1 placed + if (countWorkstationsInInventory(player) == 0) { + this.hasOnlyOneWorkstation = true; + } + + // Switch to best tool in hotbar if available + BlockState state = client.level.getBlockState(workstationPos); + int bestSlot = findBestToolSlot(player, state); + if (bestSlot != -1 && bestSlot != player.getInventory().getSelectedSlot()) { + player.getInventory().setSelectedSlot(bestSlot); + } + + if (client.gameMode != null) { + client.gameMode.startDestroyBlock(workstationPos, Direction.UP); + } + currentState = AutomationState.AUTO_WAITING_BREAK; + tickCounter = 0; + } + + case AUTO_WAITING_BREAK -> { + if (client.level.getBlockState(workstationPos).isAir()) { + int currentInvCount = countWorkstationsInInventory(player); + if (hasOnlyOneWorkstation || currentInvCount == 0) { + this.hasOnlyOneWorkstation = true; + currentState = AutomationState.AUTO_RETRIEVING_WORKSTATION; + tickCounter = 0; + } else { + currentState = AutomationState.AUTO_WAITING_UNEMPLOY; + tickCounter = 0; + } + } else { + BlockState state = client.level.getBlockState(workstationPos); + int bestSlot = findBestToolSlot(player, state); + if (bestSlot != -1 && bestSlot != player.getInventory().getSelectedSlot()) { + player.getInventory().setSelectedSlot(bestSlot); + } + + if (client.gameMode != null) { + client.gameMode.continueDestroyBlock(workstationPos, Direction.UP); + } + if (tickCounter > 120) { + if (client.gameMode != null) { + client.gameMode.stopDestroyBlock(); + client.gameMode.startDestroyBlock(workstationPos, Direction.UP); + } + tickCounter = 0; + } + } + } + + case AUTO_RETRIEVING_WORKSTATION -> { + player.sendOverlayMessage(Component.literal("§7[Villager Roller] Retrieving workstation drop... (Attempt #" + attemptCount + ")")); + + if (countWorkstationsInInventory(player) > 0) { + releaseMovementKeys(client); + ensureWorkstationInHotbar(client, player); + + if (originalPlayerPos != null && player.distanceToSqr(originalPlayerPos) > 0.04) { + currentState = AutomationState.AUTO_RETURNING_TO_STATION; + tickCounter = 0; + } else { + currentState = AutomationState.AUTO_WAITING_UNEMPLOY; + tickCounter = 0; + } + return; + } + + Vec3 target = getWorkstationDropPos(client); + if (target != null) { + moveTowards(client, player, target); + } + + if (tickCounter > 80) { + releaseMovementKeys(client); + if (countWorkstationsInInventory(player) == 0) { + handleError(player, "Failed to retrieve dropped workstation!"); + return; + } + currentState = AutomationState.AUTO_RETURNING_TO_STATION; + tickCounter = 0; + } + } + + case AUTO_RETURNING_TO_STATION -> { + player.sendOverlayMessage(Component.literal("§7[Villager Roller] Returning to station... (Attempt #" + attemptCount + ")")); + + if (originalPlayerPos == null || player.distanceToSqr(originalPlayerPos) < 0.04 || tickCounter > 80) { + releaseMovementKeys(client); + ensureWorkstationInHotbar(client, player); + currentState = AutomationState.AUTO_WAITING_UNEMPLOY; + tickCounter = 0; + return; + } + + moveTowards(client, player, originalPlayerPos); + } + + case AUTO_WAITING_UNEMPLOY -> { + player.sendOverlayMessage(Component.literal("§7[Villager Roller] Waiting for unemployment... (Attempt #" + attemptCount + ")")); + if (tickCounter >= 12) { + currentState = AutomationState.AUTO_PLACING; + tickCounter = 0; + } + } + + case AUTO_PLACING -> { + player.sendOverlayMessage(Component.literal("§7[Villager Roller] Placing workstation... (Attempt #" + attemptCount + ")")); + int slot = ensureWorkstationInHotbar(client, player); + if (slot != -1) { + player.getInventory().setSelectedSlot(slot); + } else { + handleError(player, "Workstation item missing from inventory!"); + return; + } + + if (client.gameMode != null) { + BlockPos supportPos = workstationPos.below(); + BlockHitResult hit = (!client.level.getBlockState(supportPos).isAir()) + ? new BlockHitResult(Vec3.atCenterOf(supportPos), Direction.UP, supportPos, false) + : new BlockHitResult(Vec3.atCenterOf(workstationPos), Direction.UP, workstationPos, false); + client.gameMode.useItemOn(player, InteractionHand.MAIN_HAND, hit); + } + currentState = AutomationState.AUTO_WAITING_PLACE; + tickCounter = 0; + } + + case AUTO_WAITING_PLACE -> { + if (!client.level.getBlockState(workstationPos).isAir()) { + currentState = AutomationState.AUTO_WAITING_CLAIM; + tickCounter = 0; + } else if (tickCounter > 30) { + int slot = ensureWorkstationInHotbar(client, player); + if (slot != -1) player.getInventory().setSelectedSlot(slot); + if (client.gameMode != null) { + BlockPos supportPos = workstationPos.below(); + BlockHitResult hit = (!client.level.getBlockState(supportPos).isAir()) + ? new BlockHitResult(Vec3.atCenterOf(supportPos), Direction.UP, supportPos, false) + : new BlockHitResult(Vec3.atCenterOf(workstationPos), Direction.UP, workstationPos, false); + client.gameMode.useItemOn(player, InteractionHand.MAIN_HAND, hit); + } + tickCounter = 0; + } + } + + case AUTO_WAITING_CLAIM -> { + player.sendOverlayMessage(Component.literal("§7[Villager Roller] Waiting for profession claim... (Attempt #" + attemptCount + ")")); + if (tickCounter >= 25) { + currentState = AutomationState.AUTO_INTERACTING; + tickCounter = 0; + } + } + + case AUTO_INTERACTING -> { + player.sendOverlayMessage(Component.literal("§7[Villager Roller] Checking trade offers... (Attempt #" + attemptCount + ")")); + if (client.gameMode != null) { + client.gameMode.interact(player, targetVillager, new EntityHitResult(targetVillager), InteractionHand.MAIN_HAND); + } + currentState = AutomationState.AUTO_WAITING_OFFERS; + tickCounter = 0; + } + + case AUTO_WAITING_OFFERS -> { + if (player.containerMenu instanceof MerchantMenu menu && !menu.getOffers().isEmpty()) { + int matchIndex = TradeMatcher.findMatchingIndex(menu.getOffers(), targetOption, maxEmeraldPrice); + if (matchIndex != -1) { + currentState = AutomationState.SUCCESS; + matchedTradeIndex = matchIndex; + mousePositioned = false; + + if (client.gameMode != null) { + client.gameMode.stopDestroyBlock(); + } + releaseMovementKeys(client); + + // Open the trade screen now that the desired trade was found + client.gui.setScreen(new MerchantScreen(menu, player.getInventory(), Component.translatable("entity.minecraft.villager"))); + + selectTradeAndPositionMouse(client, matchIndex); + mousePositioned = true; + playSound(SoundEvents.PLAYER_LEVELUP); + player.sendSystemMessage(Component.literal("§a§l[Villager Roller] SUCCESS! Matching trade found after " + attemptCount + " rerolls!")); + } else { + attemptCount++; + player.sendOverlayMessage(Component.literal("§e[Villager Roller] Reroll #" + attemptCount + " - No match, continuing...")); + player.closeContainer(); + currentState = AutomationState.AUTO_BREAKING; + tickCounter = 0; + } + } else if (tickCounter > 50) { + currentState = AutomationState.AUTO_INTERACTING; + tickCounter = 0; + } + } + + default -> {} + } + } + + private void selectTradeAndPositionMouse(Minecraft client, int tradeIndex) { + if (client.player == null) return; + + // 1. Notify menu and send packet to server so trade is active + if (client.player.containerMenu instanceof MerchantMenu menu) { + menu.setSelectionHint(tradeIndex); + menu.tryMoveItems(tradeIndex); + if (client.getConnection() != null) { + client.getConnection().send(new ServerboundSelectTradePacket(tradeIndex)); + } + } + + // 2. If MerchantScreen is open, select trade in screen and position mouse over trade item + if (client.gui.screen() instanceof MerchantScreen screen) { + try { + Field shopItemField = MerchantScreen.class.getDeclaredField("shopItem"); + shopItemField.setAccessible(true); + shopItemField.setInt(screen, tradeIndex); + + int scrollOff = 0; + if (tradeIndex >= 7) { + scrollOff = tradeIndex - 6; + Field scrollOffField = MerchantScreen.class.getDeclaredField("scrollOff"); + scrollOffField.setAccessible(true); + scrollOffField.setInt(screen, scrollOff); + } + + Method postBtnMethod = MerchantScreen.class.getDeclaredMethod("postButtonClick"); + postBtnMethod.setAccessible(true); + postBtnMethod.invoke(screen); + } catch (Throwable ignored) {} + + int buttonIndex = tradeIndex; + if (buttonIndex >= 7) { + buttonIndex = 6; + } + + int leftPos = (screen.width - 276) / 2; + int topPos = (screen.height - 166) / 2; + + // In the trade offer entry on the left: + // Result item is drawn at leftPos + 73, button Y is topPos + 18 + buttonIndex * 20 + 2 + int guiX = leftPos + 73 + 8; + int guiY = topPos + 18 + (buttonIndex * 20) + 2 + 8; + + Window window = client.getWindow(); + double screenX = (double) guiX * (double) window.getScreenWidth() / (double) window.getGuiScaledWidth(); + double screenY = (double) guiY * (double) window.getScreenHeight() / (double) window.getGuiScaledHeight(); + + InputConstants.releaseMouse(window, screenX, screenY); + + try { + Field xposField = MouseHandler.class.getDeclaredField("xpos"); + xposField.setAccessible(true); + xposField.setDouble(client.mouseHandler, screenX); + + Field yposField = MouseHandler.class.getDeclaredField("ypos"); + yposField.setAccessible(true); + yposField.setDouble(client.mouseHandler, screenY); + } catch (Throwable ignored) {} + + screen.mouseMoved(guiX, guiY); + } + } + + private int findBestToolSlot(LocalPlayer player, BlockState state) { + if (state == null || state.isAir()) return -1; + + int currentSlot = player.getInventory().getSelectedSlot(); + int bestSlot = currentSlot; + float bestSpeed = calculateToolSpeed(player.getInventory().getSelectedItem(), state); + boolean bestDrops = player.getInventory().getSelectedItem().isCorrectToolForDrops(state); + + for (int i = 0; i < 9; i++) { + ItemStack stack = player.getInventory().getItem(i); + if (!stack.isEmpty()) { + float speed = calculateToolSpeed(stack, state); + boolean drops = stack.isCorrectToolForDrops(state); + + if (drops && !bestDrops) { + bestSpeed = speed; + bestDrops = true; + bestSlot = i; + } else if (drops == bestDrops && speed > bestSpeed) { + bestSpeed = speed; + bestSlot = i; + } + } + } + return bestSlot; + } + + private float calculateToolSpeed(ItemStack stack, BlockState state) { + if (stack == null || stack.isEmpty()) return 1.0F; + float speed = stack.getDestroySpeed(state); + if (speed > 1.0F) { + ItemEnchantments enchants = stack.get(DataComponents.ENCHANTMENTS); + if (enchants != null) { + for (var entry : enchants.entrySet()) { + String regName = entry.getKey().getRegisteredName(); + if (regName != null && regName.contains("efficiency")) { + int lvl = entry.getIntValue(); + if (lvl > 0) { + speed += (lvl * lvl + 1); + } + break; + } + } + } + } + return speed; + } + + private int findHotbarSlot(LocalPlayer player, Item item) { + if (item == null) return player.getInventory().getSelectedSlot(); + if (player.getInventory().getSelectedItem().is(item)) { + return player.getInventory().getSelectedSlot(); + } + for (int i = 0; i < 9; i++) { + if (player.getInventory().getItem(i).is(item)) { + return i; + } + } + return -1; + } + + private void handleError(LocalPlayer player, String message) { + releaseMovementKeys(Minecraft.getInstance()); + this.lastError = message; + this.currentState = AutomationState.ERROR; + player.sendSystemMessage(Component.literal("§c[Villager Roller] " + message)); + } + + private int countWorkstationsInInventory(LocalPlayer player) { + if (workstationItem == null || player == null) return 0; + int count = 0; + for (int i = 0; i < 36; i++) { + ItemStack stack = player.getInventory().getItem(i); + if (!stack.isEmpty() && stack.is(workstationItem)) { + count += stack.getCount(); + } + } + if (player.getOffhandItem().is(workstationItem)) { + count += player.getOffhandItem().getCount(); + } + return count; + } + + private int ensureWorkstationInHotbar(Minecraft client, LocalPlayer player) { + if (workstationItem == null || player == null) return -1; + + int hotbarSlot = findHotbarSlot(player, workstationItem); + if (hotbarSlot != -1) { + return hotbarSlot; + } + + for (int i = 9; i < 36; i++) { + ItemStack stack = player.getInventory().getItem(i); + if (!stack.isEmpty() && stack.is(workstationItem)) { + int targetHotbar = player.getInventory().getSelectedSlot(); + if (client.gameMode != null) { + client.gameMode.handleContainerInput( + player.inventoryMenu.containerId, + i, + targetHotbar, + ContainerInput.SWAP, + player + ); + } + return targetHotbar; + } + } + return -1; + } + + private Vec3 getWorkstationDropPos(Minecraft client) { + if (client.level != null && workstationPos != null && workstationItem != null) { + AABB searchBox = new AABB(workstationPos).inflate(3.5); + List items = client.level.getEntitiesOfClass(ItemEntity.class, searchBox, + e -> e.isAlive() && e.getItem().is(workstationItem)); + if (!items.isEmpty()) { + return items.get(0).position(); + } + } + return (workstationPos != null) ? Vec3.atCenterOf(workstationPos) : null; + } + + private void moveTowards(Minecraft client, LocalPlayer player, Vec3 target) { + if (client.options == null || player == null || target == null) return; + + double deltaX = target.x - player.getX(); + double deltaZ = target.z - player.getZ(); + double distSq = deltaX * deltaX + deltaZ * deltaZ; + + if (distSq < 0.04) { + releaseMovementKeys(client); + return; + } + + float yawRad = (float) Math.toRadians(player.getYRot()); + double fx = -Math.sin(yawRad); + double fz = Math.cos(yawRad); + double rx = -Math.cos(yawRad); + double rz = -Math.sin(yawRad); + + double forwardDot = deltaX * fx + deltaZ * fz; + double rightDot = deltaX * rx + deltaZ * rz; + + client.options.keyUp.setDown(forwardDot > 0.15); + client.options.keyDown.setDown(forwardDot < -0.15); + client.options.keyRight.setDown(rightDot > 0.15); + client.options.keyLeft.setDown(rightDot < -0.15); + + if (player.horizontalCollision) { + client.options.keyJump.setDown(true); + } else { + client.options.keyJump.setDown(false); + } + } + + private void releaseMovementKeys(Minecraft client) { + if (client != null && client.options != null) { + client.options.keyUp.setDown(false); + client.options.keyDown.setDown(false); + client.options.keyLeft.setDown(false); + client.options.keyRight.setDown(false); + client.options.keyJump.setDown(false); + client.options.keyAttack.setDown(false); + client.options.keyUse.setDown(false); + } + } + + private void playSound(net.minecraft.sounds.SoundEvent sound) { + Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(sound, 1.0F)); + } + + public boolean isSilentScreenSuppressed() { + return (currentState == AutomationState.AUTO_INTERACTING + || currentState == AutomationState.AUTO_WAITING_OFFERS); + } + + public AutomationState getState() { return currentState; } + public int getAttemptCount() { return attemptCount; } + public String getLastError() { return lastError; } + public TradeOption getTargetOption() { return targetOption; } + public int getMaxEmeraldPrice() { return maxEmeraldPrice; } +} diff --git a/src/main/java/com/villagerroller/config/ModConfig.java b/src/main/java/com/villagerroller/config/ModConfig.java new file mode 100644 index 0000000..81ee616 --- /dev/null +++ b/src/main/java/com/villagerroller/config/ModConfig.java @@ -0,0 +1,10 @@ +package com.villagerroller.config; + +public class ModConfig { + public static int breakDelay = 20; + public static int placeDelay = 20; + public static int inspectDelay = 40; + public static boolean soundEnabled = true; + public static boolean silentTradeCheck = true; + public static boolean keepFocusedOnUnfocus = true; +} diff --git a/src/main/java/com/villagerroller/mixin/GuiMixin.java b/src/main/java/com/villagerroller/mixin/GuiMixin.java new file mode 100644 index 0000000..a3ec8f8 --- /dev/null +++ b/src/main/java/com/villagerroller/mixin/GuiMixin.java @@ -0,0 +1,23 @@ +package com.villagerroller.mixin; + +import com.villagerroller.VillagerRoller; +import com.villagerroller.config.ModConfig; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.inventory.MerchantScreen; +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; + +@Mixin(Gui.class) +public class GuiMixin { + @Inject(method = "setScreen", at = @At("HEAD"), cancellable = true) + private void villagerroller$onSetScreen(Screen screen, CallbackInfo ci) { + if (ModConfig.silentTradeCheck && screen instanceof MerchantScreen) { + if (VillagerRoller.getStateMachine() != null && VillagerRoller.getStateMachine().isSilentScreenSuppressed()) { + ci.cancel(); + } + } + } +} diff --git a/src/main/java/com/villagerroller/mixin/HudMixin.java b/src/main/java/com/villagerroller/mixin/HudMixin.java new file mode 100644 index 0000000..cfc3cbb --- /dev/null +++ b/src/main/java/com/villagerroller/mixin/HudMixin.java @@ -0,0 +1,18 @@ +package com.villagerroller.mixin; + +import com.villagerroller.ui.RerollHudOverlay; +import net.minecraft.client.DeltaTracker; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.Hud; +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; + +@Mixin(Hud.class) +public class HudMixin { + @Inject(method = "extractRenderState", at = @At("TAIL")) + private void villagerroller$onExtractRenderState(GuiGraphicsExtractor extractor, DeltaTracker deltaTracker, CallbackInfo ci) { + RerollHudOverlay.render(extractor); + } +} diff --git a/src/main/java/com/villagerroller/mixin/WindowMixin.java b/src/main/java/com/villagerroller/mixin/WindowMixin.java new file mode 100644 index 0000000..6fcfaf5 --- /dev/null +++ b/src/main/java/com/villagerroller/mixin/WindowMixin.java @@ -0,0 +1,18 @@ +package com.villagerroller.mixin; + +import com.mojang.blaze3d.platform.Window; +import com.villagerroller.config.ModConfig; +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.CallbackInfoReturnable; + +@Mixin(Window.class) +public class WindowMixin { + @Inject(method = "isFocused", at = @At("HEAD"), cancellable = true) + private void villagerroller$keepFocused(CallbackInfoReturnable cir) { + if (ModConfig.keepFocusedOnUnfocus) { + cir.setReturnValue(true); + } + } +} diff --git a/src/main/java/com/villagerroller/trade/TradeCategory.java b/src/main/java/com/villagerroller/trade/TradeCategory.java new file mode 100644 index 0000000..c45c622 --- /dev/null +++ b/src/main/java/com/villagerroller/trade/TradeCategory.java @@ -0,0 +1,41 @@ +package com.villagerroller.trade; + +import net.minecraft.world.item.Item; +import net.minecraft.world.level.block.Block; + +import java.util.ArrayList; +import java.util.List; + +public class TradeCategory { + private final String name; + private final Item workstationItem; + private final Block workstationBlock; + private final List options; + + public TradeCategory(String name, Item workstationItem, Block workstationBlock) { + this.name = name; + this.workstationItem = workstationItem; + this.workstationBlock = workstationBlock; + this.options = new ArrayList<>(); + } + + public void addOption(TradeOption option) { + this.options.add(option); + } + + public String getName() { + return name; + } + + public Item getWorkstationItem() { + return workstationItem; + } + + public Block getWorkstationBlock() { + return workstationBlock; + } + + public List getOptions() { + return options; + } +} diff --git a/src/main/java/com/villagerroller/trade/TradeOption.java b/src/main/java/com/villagerroller/trade/TradeOption.java new file mode 100644 index 0000000..e6a02ee --- /dev/null +++ b/src/main/java/com/villagerroller/trade/TradeOption.java @@ -0,0 +1,140 @@ +package com.villagerroller.trade; + +import net.minecraft.core.component.DataComponents; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.item.enchantment.ItemEnchantments; +import net.minecraft.world.item.trading.MerchantOffer; + +public class TradeOption { + private final String displayName; + private final Item resultItem; + private final Item costItem; + private final int targetCostCount; + private final String enchantmentKey; + private final int minLevel; + + // For Enchantment options + public TradeOption(String displayName, String enchantmentKey, int minLevel) { + this.displayName = displayName; + this.resultItem = Items.ENCHANTED_BOOK; + this.costItem = null; + this.targetCostCount = 64; + this.enchantmentKey = enchantmentKey; + this.minLevel = minLevel; + } + + // For Item buying/selling options + public TradeOption(String displayName, Item resultItem, Item costItem, int targetCostCount) { + this.displayName = displayName; + this.resultItem = resultItem; + this.costItem = costItem; + this.targetCostCount = targetCostCount; + this.enchantmentKey = null; + this.minLevel = 0; + } + + public String getDisplayName() { + return displayName; + } + + public Item getResultItem() { + return resultItem; + } + + public Item getCostItem() { + return costItem; + } + + public int getTargetCostCount() { + return targetCostCount; + } + + public String getEnchantmentKey() { + return enchantmentKey; + } + + public int getMinLevel() { + return minLevel; + } + + public ItemStack getDisplayStack() { + if (enchantmentKey != null) { + return new ItemStack(Items.ENCHANTED_BOOK); + } + if (costItem != null && resultItem == Items.EMERALD) { + return new ItemStack(costItem); + } + if (resultItem != null) { + return new ItemStack(resultItem); + } + return new ItemStack(Items.EMERALD); + } + + public boolean matches(MerchantOffer offer, int maxEmeraldPrice) { + if (offer == null) return false; + + // 1. Enchantment Matching + if (enchantmentKey != null) { + ItemStack result = offer.getResult(); + if (!result.is(Items.ENCHANTED_BOOK)) return false; + + if (!enchantmentKey.equalsIgnoreCase("any")) { + ItemEnchantments stored = result.get(DataComponents.STORED_ENCHANTMENTS); + if (stored == null) stored = result.get(DataComponents.ENCHANTMENTS); + if (stored == null || stored.isEmpty()) return false; + + boolean found = false; + for (var entry : stored.entrySet()) { + String regName = entry.getKey().getRegisteredName(); + int level = entry.getIntValue(); + if (regName != null && regName.toLowerCase().contains(enchantmentKey.toLowerCase())) { + if (level >= minLevel) { + found = true; + break; + } + } + } + if (!found) return false; + } + + // Check emerald cost + int emeraldCost = getEmeraldCost(offer); + return emeraldCost <= maxEmeraldPrice; + } + + // 2. Selling resources for emeralds (e.g. 32 Sticks -> 1 Emerald) + if (costItem != null && resultItem == Items.EMERALD) { + ItemStack cost = offer.getCostA(); + if (cost.is(costItem)) { + if (targetCostCount > 0 && cost.getCount() > targetCostCount) { + return false; + } + return offer.getResult().is(Items.EMERALD); + } + return false; + } + + // 3. Buying items with emeralds (e.g. Emerald -> Arrows, Bread, Armor) + if (resultItem != null) { + if (offer.getResult().is(resultItem)) { + int emeraldCost = getEmeraldCost(offer); + return emeraldCost <= maxEmeraldPrice; + } + } + + return false; + } + + private int getEmeraldCost(MerchantOffer offer) { + int cost = 0; + if (offer.getCostA().is(Items.EMERALD)) { + cost += offer.getCostA().getCount(); + } + if (offer.getCostB().is(Items.EMERALD)) { + cost += offer.getCostB().getCount(); + } + return cost; + } +} diff --git a/src/main/java/com/villagerroller/trade/TradeRegistry.java b/src/main/java/com/villagerroller/trade/TradeRegistry.java new file mode 100644 index 0000000..c962e9a --- /dev/null +++ b/src/main/java/com/villagerroller/trade/TradeRegistry.java @@ -0,0 +1,142 @@ +package com.villagerroller.trade; + +import net.minecraft.world.item.Items; +import net.minecraft.world.level.block.Blocks; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +public class TradeRegistry { + private static final List CATEGORIES = new ArrayList<>(); + + static { + // 1. Lectern (Librarian) + TradeCategory librarian = new TradeCategory("Lectern (Librarian)", Items.LECTERN, Blocks.LECTERN); + librarian.addOption(new TradeOption("Mending", "mending", 1)); + librarian.addOption(new TradeOption("Unbreaking III", "unbreaking", 3)); + librarian.addOption(new TradeOption("Efficiency V", "efficiency", 5)); + librarian.addOption(new TradeOption("Sharpness V", "sharpness", 5)); + librarian.addOption(new TradeOption("Fortune III", "fortune", 3)); + librarian.addOption(new TradeOption("Silk Touch", "silk_touch", 1)); + librarian.addOption(new TradeOption("Protection IV", "protection", 4)); + librarian.addOption(new TradeOption("Feather Falling IV", "feather_falling", 4)); + librarian.addOption(new TradeOption("Looting III", "looting", 3)); + librarian.addOption(new TradeOption("Infinity", "infinity", 1)); + librarian.addOption(new TradeOption("Power V", "power", 5)); + librarian.addOption(new TradeOption("Flame", "flame", 1)); + librarian.addOption(new TradeOption("Fire Aspect II", "fire_aspect", 2)); + librarian.addOption(new TradeOption("Sweeping Edge III", "sweeping", 3)); + librarian.addOption(new TradeOption("Thorns III", "thorns", 3)); + librarian.addOption(new TradeOption("Depth Strider III", "depth_strider", 3)); + librarian.addOption(new TradeOption("Frost Walker II", "frost_walker", 2)); + librarian.addOption(new TradeOption("Respiration III", "respiration", 3)); + librarian.addOption(new TradeOption("Aqua Affinity", "aqua_affinity", 1)); + librarian.addOption(new TradeOption("Soul Speed III", "soul_speed", 3)); + librarian.addOption(new TradeOption("Swift Sneak III", "swift_sneak", 3)); + librarian.addOption(new TradeOption("Quick Charge III", "quick_charge", 3)); + librarian.addOption(new TradeOption("Multishot", "multishot", 1)); + librarian.addOption(new TradeOption("Piercing IV", "piercing", 4)); + librarian.addOption(new TradeOption("Riptide III", "riptide", 3)); + librarian.addOption(new TradeOption("Loyalty III", "loyalty", 3)); + librarian.addOption(new TradeOption("Channeling", "channeling", 1)); + librarian.addOption(new TradeOption("Breach IV", "breach", 4)); + librarian.addOption(new TradeOption("Density V", "density", 5)); + librarian.addOption(new TradeOption("Wind Burst III", "wind_burst", 3)); + librarian.addOption(new TradeOption("Any Enchanted Book", "any", 1)); + librarian.addOption(new TradeOption("24 Paper -> 1 Emerald", Items.EMERALD, Items.PAPER, 24)); + librarian.addOption(new TradeOption("1 Emerald -> 1 Bookshelf", Items.BOOKSHELF, Items.EMERALD, 9)); + CATEGORIES.add(librarian); + + // 2. Fletching Table (Fletcher) + TradeCategory fletcher = new TradeCategory("Fletching Table (Fletcher)", Items.FLETCHING_TABLE, Blocks.FLETCHING_TABLE); + fletcher.addOption(new TradeOption("32 Sticks -> 1 Emerald", Items.EMERALD, Items.STICK, 32)); + fletcher.addOption(new TradeOption("1 Emerald -> 16 Arrows", Items.ARROW, Items.EMERALD, 1)); + fletcher.addOption(new TradeOption("26 Flint -> 1 Emerald", Items.EMERALD, Items.FLINT, 26)); + CATEGORIES.add(fletcher); + + // 3. Composter (Farmer) + TradeCategory farmer = new TradeCategory("Composter (Farmer)", Items.COMPOSTER, Blocks.COMPOSTER); + farmer.addOption(new TradeOption("20 Wheat -> 1 Emerald", Items.EMERALD, Items.WHEAT, 20)); + farmer.addOption(new TradeOption("26 Potatoes -> 1 Emerald", Items.EMERALD, Items.POTATO, 26)); + farmer.addOption(new TradeOption("22 Carrots -> 1 Emerald", Items.EMERALD, Items.CARROT, 22)); + farmer.addOption(new TradeOption("15 Beetroots -> 1 Emerald", Items.EMERALD, Items.BEETROOT, 15)); + farmer.addOption(new TradeOption("1 Emerald -> 6 Bread", Items.BREAD, Items.EMERALD, 1)); + CATEGORIES.add(farmer); + + // 4. Blast Furnace (Armorer) + TradeCategory armorer = new TradeCategory("Blast Furnace (Armorer)", Items.BLAST_FURNACE, Blocks.BLAST_FURNACE); + armorer.addOption(new TradeOption("15 Coal -> 1 Emerald", Items.EMERALD, Items.COAL, 15)); + armorer.addOption(new TradeOption("5 Emeralds -> Iron Helmet", Items.IRON_HELMET, Items.EMERALD, 5)); + armorer.addOption(new TradeOption("9 Emeralds -> Iron Chestplate", Items.IRON_CHESTPLATE, Items.EMERALD, 9)); + armorer.addOption(new TradeOption("7 Emeralds -> Iron Leggings", Items.IRON_LEGGINGS, Items.EMERALD, 7)); + armorer.addOption(new TradeOption("4 Emeralds -> Iron Boots", Items.IRON_BOOTS, Items.EMERALD, 4)); + CATEGORIES.add(armorer); + + // 5. Smithing Table (Toolsmith) + TradeCategory toolsmith = new TradeCategory("Smithing Table (Toolsmith)", Items.SMITHING_TABLE, Blocks.SMITHING_TABLE); + toolsmith.addOption(new TradeOption("15 Coal -> 1 Emerald", Items.EMERALD, Items.COAL, 15)); + toolsmith.addOption(new TradeOption("1 Emerald -> Iron Axe", Items.IRON_AXE, Items.EMERALD, 1)); + toolsmith.addOption(new TradeOption("1 Emerald -> Iron Shovel", Items.IRON_SHOVEL, Items.EMERALD, 1)); + toolsmith.addOption(new TradeOption("1 Emerald -> Iron Pickaxe", Items.IRON_PICKAXE, Items.EMERALD, 1)); + toolsmith.addOption(new TradeOption("1 Emerald -> Iron Hoe", Items.IRON_HOE, Items.EMERALD, 1)); + CATEGORIES.add(toolsmith); + + // 6. Grindstone (Weaponsmith) + TradeCategory weaponsmith = new TradeCategory("Grindstone (Weaponsmith)", Items.GRINDSTONE, Blocks.GRINDSTONE); + weaponsmith.addOption(new TradeOption("15 Coal -> 1 Emerald", Items.EMERALD, Items.COAL, 15)); + weaponsmith.addOption(new TradeOption("3 Emeralds -> Iron Sword", Items.IRON_SWORD, Items.EMERALD, 3)); + weaponsmith.addOption(new TradeOption("2 Emeralds -> Iron Axe", Items.IRON_AXE, Items.EMERALD, 2)); + CATEGORIES.add(weaponsmith); + + // 7. Smoker (Butcher) + TradeCategory butcher = new TradeCategory("Smoker (Butcher)", Items.SMOKER, Blocks.SMOKER); + butcher.addOption(new TradeOption("14 Raw Chicken -> 1 Emerald", Items.EMERALD, Items.CHICKEN, 14)); + butcher.addOption(new TradeOption("7 Raw Porkchop -> 1 Emerald", Items.EMERALD, Items.PORKCHOP, 7)); + butcher.addOption(new TradeOption("4 Raw Rabbit -> 1 Emerald", Items.EMERALD, Items.RABBIT, 4)); + butcher.addOption(new TradeOption("1 Emerald -> 5 Cooked Chicken", Items.COOKED_CHICKEN, Items.EMERALD, 1)); + CATEGORIES.add(butcher); + + // 8. Brewing Stand (Cleric) + TradeCategory cleric = new TradeCategory("Brewing Stand (Cleric)", Items.BREWING_STAND, Blocks.BREWING_STAND); + cleric.addOption(new TradeOption("32 Rotten Flesh -> 1 Emerald", Items.EMERALD, Items.ROTTEN_FLESH, 32)); + cleric.addOption(new TradeOption("1 Emerald -> 2 Redstone Dust", Items.REDSTONE, Items.EMERALD, 1)); + CATEGORIES.add(cleric); + + // 9. Barrel (Fisherman) + TradeCategory fisherman = new TradeCategory("Barrel (Fisherman)", Items.BARREL, Blocks.BARREL); + fisherman.addOption(new TradeOption("20 Raw Cod -> 1 Emerald", Items.EMERALD, Items.COD, 20)); + fisherman.addOption(new TradeOption("15 Raw Salmon -> 1 Emerald", Items.EMERALD, Items.SALMON, 15)); + fisherman.addOption(new TradeOption("6 Emeralds -> 1 Campfire", Items.CAMPFIRE, Items.EMERALD, 6)); + CATEGORIES.add(fisherman); + + // 10. Cartography Table (Cartographer) + TradeCategory cartographer = new TradeCategory("Cartography Table (Cartographer)", Items.CARTOGRAPHY_TABLE, Blocks.CARTOGRAPHY_TABLE); + cartographer.addOption(new TradeOption("24 Paper -> 1 Emerald", Items.EMERALD, Items.PAPER, 24)); + cartographer.addOption(new TradeOption("7 Emeralds -> 1 Blank Map", Items.MAP, Items.EMERALD, 7)); + CATEGORIES.add(cartographer); + + // 11. Cauldron (Leatherworker) + TradeCategory leatherworker = new TradeCategory("Cauldron (Leatherworker)", Items.CAULDRON, Blocks.CAULDRON); + leatherworker.addOption(new TradeOption("6 Leather -> 1 Emerald", Items.EMERALD, Items.LEATHER, 6)); + leatherworker.addOption(new TradeOption("7 Emeralds -> Leather Pants", Items.LEATHER_LEGGINGS, Items.EMERALD, 7)); + leatherworker.addOption(new TradeOption("5 Emeralds -> Leather Tunic", Items.LEATHER_CHESTPLATE, Items.EMERALD, 5)); + CATEGORIES.add(leatherworker); + + // 12. Stonecutter (Mason) + TradeCategory mason = new TradeCategory("Stonecutter (Mason)", Items.STONECUTTER, Blocks.STONECUTTER); + mason.addOption(new TradeOption("10 Clay Balls -> 1 Emerald", Items.EMERALD, Items.CLAY_BALL, 10)); + mason.addOption(new TradeOption("1 Emerald -> 10 Bricks", Items.BRICK, Items.EMERALD, 1)); + CATEGORIES.add(mason); + + // 13. Loom (Shepherd) + TradeCategory shepherd = new TradeCategory("Loom (Shepherd)", Items.LOOM, Blocks.LOOM); + shepherd.addOption(new TradeOption("18 White Wool -> 1 Emerald", Items.EMERALD, Items.WOOL.white(), 18)); + shepherd.addOption(new TradeOption("2 Emeralds -> 1 Shears", Items.SHEARS, Items.EMERALD, 2)); + CATEGORIES.add(shepherd); + } + + public static List getCategories() { + return Collections.unmodifiableList(CATEGORIES); + } +} diff --git a/src/main/java/com/villagerroller/ui/ModMenuIntegration.java b/src/main/java/com/villagerroller/ui/ModMenuIntegration.java new file mode 100644 index 0000000..7296e1a --- /dev/null +++ b/src/main/java/com/villagerroller/ui/ModMenuIntegration.java @@ -0,0 +1,11 @@ +package com.villagerroller.ui; + +import com.terraformersmc.modmenu.api.ConfigScreenFactory; +import com.terraformersmc.modmenu.api.ModMenuApi; + +public class ModMenuIntegration implements ModMenuApi { + @Override + public ConfigScreenFactory getModConfigScreenFactory() { + return RerollKeybindsScreen::new; + } +} diff --git a/src/main/java/com/villagerroller/ui/RerollHudOverlay.java b/src/main/java/com/villagerroller/ui/RerollHudOverlay.java new file mode 100644 index 0000000..424f053 --- /dev/null +++ b/src/main/java/com/villagerroller/ui/RerollHudOverlay.java @@ -0,0 +1,138 @@ +package com.villagerroller.ui; + +import com.villagerroller.VillagerRoller; +import com.villagerroller.automation.RerollStateMachine; +import com.villagerroller.automation.RerollStateMachine.AutomationState; +import com.villagerroller.config.ModConfig; +import com.villagerroller.trade.TradeOption; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.Font; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; + +public class RerollHudOverlay { + + public static void render(GuiGraphicsExtractor extractor) { + Minecraft client = Minecraft.getInstance(); + if (client == null || client.player == null) return; + + // Respect F1 hide GUI + if (client.gui != null && client.gui.hud != null && client.gui.hud.isHidden()) { + return; + } + + RerollStateMachine stateMachine = VillagerRoller.getStateMachine(); + if (stateMachine == null) return; + + AutomationState state = stateMachine.getState(); + if (state == AutomationState.IDLE) return; + + TradeOption target = stateMachine.getTargetOption(); + if (target == null) return; + + Font font = client.font; + if (font == null) return; + + // 1. Determine status string and accent color + String statusText = getStatusText(state, stateMachine.getLastError()); + int accentColor = getAccentColor(state); + int borderColor = (state == AutomationState.SUCCESS || state == AutomationState.ERROR) ? accentColor : 0x55FFFFFF; + + // 2. Format details + String stopKeyName = VillagerRoller.stopKey != null ? VillagerRoller.stopKey.getTranslatedKeyMessage().getString() : "X"; + String stopHint = "§8[" + stopKeyName + "] Stop"; + + String tradeTitle = "§eTarget: §f" + target.getDisplayName(); + + String costString; + if (target.getEnchantmentKey() != null) { + costString = "§7Max Cost: §a" + stateMachine.getMaxEmeraldPrice() + " §7Emeralds"; + } else if (target.getCostItem() != null && target.getResultItem() == Items.EMERALD) { + costString = "§7Sell: §a" + target.getTargetCostCount() + "x §7for §a1 Emerald"; + } else { + costString = "§7Max Cost: §a" + stateMachine.getMaxEmeraldPrice() + " §7Emeralds"; + } + + String statusLine = "§7Status: " + statusText; + String attemptsString = "§7Attempts: §f" + stateMachine.getAttemptCount(); + + String focusKeyName = VillagerRoller.toggleFocusKey != null ? VillagerRoller.toggleFocusKey.getTranslatedKeyMessage().getString() : "U"; + String focusString = "§7Focus Mode: " + (ModConfig.keepFocusedOnUnfocus ? "§aON" : "§cOFF") + " §8[" + focusKeyName + "]"; + + // 3. Dynamic width calculation + int titleWidth = font.width("Villager Roller") + 16 + font.width(stopHint); + int tradeWidth = 26 + font.width(tradeTitle); + int costWidth = 26 + font.width(costString); + int statusWidth = font.width(statusLine); + int attemptsWidth = font.width(attemptsString); + int focusWidth = font.width(focusString); + + int maxContentWidth = Math.max(160, Math.max(titleWidth, Math.max(tradeWidth, Math.max(costWidth, Math.max(statusWidth, Math.max(attemptsWidth, focusWidth)))))); + int boxWidth = maxContentWidth + 16; + int boxHeight = 84; + + int x = 8; + int y = 8; + + // 4. Render Box Background & Borders + extractor.fill(x, y, x + boxWidth, y + boxHeight, 0xDD111116); + extractor.outline(x, y, boxWidth, boxHeight, borderColor); + extractor.fill(x, y, x + boxWidth, y + 2, accentColor); + + // 5. Header row + extractor.text(font, "§6§lVillager Roller", x + 8, y + 6, 0xFFFFFFFF, true); + extractor.text(font, stopHint, x + boxWidth - 8 - font.width(stopHint), y + 6, 0xFFAAAAAA, true); + extractor.fill(x + 6, y + 17, x + boxWidth - 6, y + 18, 0x22FFFFFF); + + // 6. Item slot & target trade details + int slotX = x + 7; + int slotY = y + 21; + extractor.fill(slotX, slotY, slotX + 20, slotY + 20, 0x60000000); + extractor.outline(slotX, slotY, 20, 20, 0x44FFFFFF); + + ItemStack displayStack = target.getDisplayStack(); + extractor.fakeItem(displayStack, slotX + 2, slotY + 2); + extractor.itemDecorations(font, displayStack, slotX + 2, slotY + 2); + + extractor.text(font, tradeTitle, x + 32, y + 23, 0xFFFFFFFF, true); + extractor.text(font, costString, x + 32, y + 33, 0xFFDDDDDD, true); + + // 7. Status, attempts, and focus mode lines + extractor.text(font, statusLine, x + 8, y + 46, 0xFFFFFFFF, true); + extractor.text(font, attemptsString, x + 8, y + 58, 0xFFDDDDDD, true); + extractor.text(font, focusString, x + 8, y + 70, 0xFFDDDDDD, true); + } + + private static String getStatusText(AutomationState state, String lastError) { + return switch (state) { + case SETUP_WAITING_FOR_VILLAGER -> "§e[1/3] Right-click Villager"; + case SETUP_WAITING_FOR_WORKSTATION_BREAK -> "§e[2/3] Hit Workstation"; + case SETUP_WAITING_FOR_WORKSTATION_PLACE -> "§e[3/3] Place Workstation"; + case SETUP_WAITING_FOR_INITIAL_CHECK -> "§eChecking Initial Trades..."; + case AUTO_BREAKING, AUTO_WAITING_BREAK -> "§6Breaking Workstation..."; + case AUTO_RETRIEVING_WORKSTATION -> "§bRetrieving Station Item..."; + case AUTO_RETURNING_TO_STATION -> "§bReturning to Station..."; + case AUTO_WAITING_UNEMPLOY -> "§eWaiting for Unemployment..."; + case AUTO_PLACING, AUTO_WAITING_PLACE -> "§6Placing Workstation..."; + case AUTO_WAITING_CLAIM -> "§eWaiting for Profession..."; + case AUTO_INTERACTING -> "§6Opening Trades..."; + case AUTO_WAITING_OFFERS -> "§6Evaluating Offers..."; + case SUCCESS -> "§a§lTRADE FOUND!"; + case ERROR -> "§c§lError: " + (lastError.isEmpty() ? "Unknown" : lastError); + default -> "§7Idle"; + }; + } + + private static int getAccentColor(AutomationState state) { + if (state == AutomationState.SUCCESS) { + return 0xFF22C55E; // Emerald Green + } else if (state == AutomationState.ERROR) { + return 0xFFEF4444; // Bright Red + } else if (state.name().startsWith("SETUP")) { + return 0xFF3B82F6; // Blue + } else { + return 0xFFF59E0B; // Amber / Gold + } + } +} diff --git a/src/main/java/com/villagerroller/ui/RerollKeybindsScreen.java b/src/main/java/com/villagerroller/ui/RerollKeybindsScreen.java new file mode 100644 index 0000000..7cd9fbe --- /dev/null +++ b/src/main/java/com/villagerroller/ui/RerollKeybindsScreen.java @@ -0,0 +1,178 @@ +package com.villagerroller.ui; + +import com.mojang.blaze3d.platform.InputConstants; +import com.villagerroller.VillagerRoller; +import net.minecraft.client.KeyMapping; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.gui.screens.options.controls.KeyBindsScreen; +import net.minecraft.client.input.KeyEvent; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.network.chat.Component; + +public class RerollKeybindsScreen extends Screen { + private final Screen parent; + private KeyMapping selectedKey = null; + + private static final String[] LABELS = { + "Open Mod Menu:", + "Emergency Stop:", + "Toggle Background Focus:" + }; + + public RerollKeybindsScreen(Screen parent) { + super(Component.literal("Villager Roller - Keybinds")); + this.parent = parent; + } + + @Override + protected void init() { + this.clearWidgets(); + + int centerX = this.width / 2; + int startY = 60; + int rowHeight = 28; + + KeyMapping[] keys = new KeyMapping[] { + VillagerRoller.openGuiKey, + VillagerRoller.stopKey, + VillagerRoller.toggleFocusKey + }; + + for (int i = 0; i < keys.length; i++) { + final KeyMapping key = keys[i]; + int y = startY + i * rowHeight; + + Component keyText; + if (selectedKey == key) { + keyText = Component.literal("§e> ??? <"); + } else { + boolean hasConflict = false; + if (this.minecraft != null && this.minecraft.options != null && this.minecraft.options.keyMappings != null) { + for (KeyMapping other : this.minecraft.options.keyMappings) { + if (other != key && key.same(other)) { + hasConflict = true; + break; + } + } + } + if (hasConflict) { + keyText = Component.literal("§c" + key.getTranslatedKeyMessage().getString()); + } else { + keyText = key.getTranslatedKeyMessage(); + } + } + + // Keybind rebind button + this.addRenderableWidget(Button.builder(keyText, btn -> { + selectedKey = key; + init(); + }).bounds(centerX - 10, y, 130, 20).build()); + + // Reset button + Button resetBtn = Button.builder(Component.literal("Reset"), btn -> { + key.setKey(key.getDefaultKey()); + KeyMapping.resetMapping(); + if (this.minecraft != null && this.minecraft.options != null) { + this.minecraft.options.save(); + } + init(); + }).bounds(centerX + 125, y, 55, 20).build(); + resetBtn.active = !key.isDefault(); + this.addRenderableWidget(resetBtn); + } + + // Button to open Minecraft's native Controls -> Key Binds screen + int bottomY = startY + keys.length * rowHeight + 20; + this.addRenderableWidget(Button.builder(Component.literal("Open Game Controls / Key Binds"), btn -> { + if (this.minecraft != null && this.minecraft.options != null) { + this.minecraft.setScreenAndShow(new KeyBindsScreen(this, this.minecraft.options)); + } + }).bounds(centerX - 120, bottomY, 240, 20).build()); + + // Done button + this.addRenderableWidget(Button.builder(Component.literal("Done"), btn -> { + this.onClose(); + }).bounds(centerX - 60, bottomY + 26, 120, 20).build()); + } + + @Override + public boolean keyPressed(KeyEvent event) { + if (selectedKey != null) { + if (event.isEscape()) { + selectedKey.setKey(InputConstants.UNKNOWN); + } else { + selectedKey.setKey(InputConstants.getKey(event)); + } + selectedKey = null; + KeyMapping.resetMapping(); + if (this.minecraft != null && this.minecraft.options != null) { + this.minecraft.options.save(); + } + init(); + return true; + } + + if (event.isEscape()) { + this.onClose(); + return true; + } + + return super.keyPressed(event); + } + + @Override + public boolean mouseClicked(MouseButtonEvent event, boolean doubleClick) { + if (selectedKey != null) { + selectedKey.setKey(InputConstants.Type.MOUSE.getOrCreate(event.button())); + selectedKey = null; + KeyMapping.resetMapping(); + if (this.minecraft != null && this.minecraft.options != null) { + this.minecraft.options.save(); + } + init(); + return true; + } + + return super.mouseClicked(event, doubleClick); + } + + @Override + public void onClose() { + if (this.minecraft != null) { + this.minecraft.setScreenAndShow(this.parent); + } + } + + @Override + public void extractRenderState(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float delta) { + super.extractRenderState(graphics, mouseX, mouseY, delta); + + int centerX = this.width / 2; + int startY = 60; + int rowHeight = 28; + + // Title and Subtitle + graphics.centeredText(this.font, Component.literal("§l§nVillager Roller - Keybinds"), centerX, 18, 0xFFFFFFFF); + + String hint = (selectedKey != null) + ? "§ePress any key or mouse button to bind (ESC to unbind)" + : "§7Click a keybind to change it, or reset to default."; + graphics.centeredText(this.font, Component.literal(hint), centerX, 36, 0xFFDDDDDD); + + // Panel background + int panelWidth = 380; + int panelHeight = LABELS.length * rowHeight + 14; + int panelX = centerX - panelWidth / 2; + int panelY = startY - 8; + graphics.fill(panelX, panelY, panelX + panelWidth, panelY + panelHeight, 0x55000000); + graphics.outline(panelX, panelY, panelWidth, panelHeight, 0x44FFFFFF); + + // Row labels + for (int i = 0; i < LABELS.length; i++) { + int y = startY + i * rowHeight + 5; + graphics.text(this.font, LABELS[i], centerX - 180, y, 0xFFFFFFFF, true); + } + } +} diff --git a/src/main/java/com/villagerroller/ui/RerollScreen.java b/src/main/java/com/villagerroller/ui/RerollScreen.java new file mode 100644 index 0000000..8ec6581 --- /dev/null +++ b/src/main/java/com/villagerroller/ui/RerollScreen.java @@ -0,0 +1,179 @@ +package com.villagerroller.ui; + +import com.villagerroller.automation.RerollStateMachine; +import com.villagerroller.trade.TradeCategory; +import com.villagerroller.trade.TradeOption; +import com.villagerroller.trade.TradeRegistry; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.network.chat.Component; + +import java.util.List; + +public class RerollScreen extends Screen { + private final RerollStateMachine stateMachine; + private int selectedCategoryIndex = 0; + private int selectedOptionIndex = 0; + private int categoryPage = 0; + private int optionPage = 0; + private int maxEmeraldPrice = 64; + + private static final int ITEMS_PER_PAGE = 6; + private static final int[] PRICE_STEPS = {64, 32, 20, 15, 10}; + + public RerollScreen(RerollStateMachine stateMachine) { + super(Component.literal("Villager Roller - Trade Selector")); + this.stateMachine = stateMachine; + } + + @Override + protected void init() { + this.clearWidgets(); + + List categories = TradeRegistry.getCategories(); + if (selectedCategoryIndex >= categories.size()) selectedCategoryIndex = 0; + TradeCategory activeCategory = categories.get(selectedCategoryIndex); + + int leftColX = this.width / 2 - 205; + int rightColX = this.width / 2 + 5; + int startY = 48; + int rowHeight = 22; + + // Keybinds button in top right + this.addRenderableWidget(Button.builder(Component.literal("⚙ Keybinds"), btn -> { + if (this.minecraft != null) { + this.minecraft.setScreenAndShow(new RerollKeybindsScreen(this)); + } + }).bounds(this.width - 92, 8, 84, 20).build()); + + // 1. Workstation Category buttons (Left Column) + int totalCatPages = (categories.size() + ITEMS_PER_PAGE - 1) / ITEMS_PER_PAGE; + if (categoryPage >= totalCatPages) categoryPage = 0; + + int catStart = categoryPage * ITEMS_PER_PAGE; + int catEnd = Math.min(catStart + ITEMS_PER_PAGE, categories.size()); + + for (int i = catStart; i < catEnd; i++) { + final int catIdx = i; + TradeCategory cat = categories.get(i); + boolean isSelected = (catIdx == selectedCategoryIndex); + String label = (isSelected ? "§a§l▶ " : "§f") + cat.getName(); + + this.addRenderableWidget(Button.builder(Component.literal(label), btn -> { + selectedCategoryIndex = catIdx; + selectedOptionIndex = 0; + optionPage = 0; + init(); + }).bounds(leftColX, startY + (i - catStart) * rowHeight, 195, 20).build()); + } + + // Category Pagination + int catPageY = startY + ITEMS_PER_PAGE * rowHeight + 2; + this.addRenderableWidget(Button.builder(Component.literal("◀ Prev"), btn -> { + if (categoryPage > 0) { + categoryPage--; + init(); + } + }).bounds(leftColX, catPageY, 95, 20).build()); + + this.addRenderableWidget(Button.builder(Component.literal("Next ▶"), btn -> { + if (categoryPage < totalCatPages - 1) { + categoryPage++; + init(); + } + }).bounds(leftColX + 100, catPageY, 95, 20).build()); + + // 2. Trade Option buttons (Right Column) + List options = activeCategory.getOptions(); + int totalOptPages = Math.max(1, (options.size() + ITEMS_PER_PAGE - 1) / ITEMS_PER_PAGE); + if (optionPage >= totalOptPages) optionPage = 0; + + int optStart = optionPage * ITEMS_PER_PAGE; + int optEnd = Math.min(optStart + ITEMS_PER_PAGE, options.size()); + + for (int i = optStart; i < optEnd; i++) { + final int optIdx = i; + TradeOption opt = options.get(i); + boolean isSelected = (optIdx == selectedOptionIndex); + String label = (isSelected ? "§6§l★ " : "§7") + opt.getDisplayName(); + + this.addRenderableWidget(Button.builder(Component.literal(label), btn -> { + selectedOptionIndex = optIdx; + init(); + }).bounds(rightColX, startY + (i - optStart) * rowHeight, 195, 20).build()); + } + + // Option Pagination + int optPageY = startY + ITEMS_PER_PAGE * rowHeight + 2; + this.addRenderableWidget(Button.builder(Component.literal("◀ Prev"), btn -> { + if (optionPage > 0) { + optionPage--; + init(); + } + }).bounds(rightColX, optPageY, 95, 20).build()); + + this.addRenderableWidget(Button.builder(Component.literal("Next ▶"), btn -> { + if (optionPage < totalOptPages - 1) { + optionPage++; + init(); + } + }).bounds(rightColX + 100, optPageY, 95, 20).build()); + + // 3. Max Price cycle button + int controlsY = catPageY + 26; + String priceLabel = "Max Price: §a" + (maxEmeraldPrice >= 64 ? "Any (≤64)" : "≤" + maxEmeraldPrice) + " Emeralds §7⟳"; + this.addRenderableWidget(Button.builder(Component.literal(priceLabel), btn -> { + cyclePrice(); + init(); + }).bounds(this.width / 2 - 100, controlsY, 200, 20).build()); + + // 4. Confirm and Cancel Buttons + int actionY = controlsY + 24; + this.addRenderableWidget(Button.builder(Component.literal("§a§lConfirm & Start Setup"), btn -> { + TradeOption selectedOption = (!options.isEmpty() && selectedOptionIndex < options.size()) + ? options.get(selectedOptionIndex) + : null; + if (selectedOption != null) { + stateMachine.startInteractiveSetup(activeCategory, selectedOption, maxEmeraldPrice); + this.onClose(); + } + }).bounds(this.width / 2 - 145, actionY, 140, 20).build()); + + this.addRenderableWidget(Button.builder(Component.literal("Cancel"), btn -> { + this.onClose(); + }).bounds(this.width / 2 + 5, actionY, 140, 20).build()); + } + + private void cyclePrice() { + for (int i = 0; i < PRICE_STEPS.length; i++) { + if (PRICE_STEPS[i] == maxEmeraldPrice) { + maxEmeraldPrice = PRICE_STEPS[(i + 1) % PRICE_STEPS.length]; + return; + } + } + maxEmeraldPrice = 64; + } + + @Override + public void extractRenderState(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float delta) { + super.extractRenderState(graphics, mouseX, mouseY, delta); + + graphics.centeredText(this.font, Component.literal("§l§nVillager Roller - Trade Selector"), this.width / 2, 12, 0xFFFFFFFF); + + int leftColX = this.width / 2 - 205; + int rightColX = this.width / 2 + 5; + graphics.centeredText(this.font, Component.literal("§e1. Workstation"), leftColX + 97, 34, 0xFFFFFF55); + graphics.centeredText(this.font, Component.literal("§e2. Desired Trade"), rightColX + 97, 34, 0xFFFFFF55); + + List categories = TradeRegistry.getCategories(); + if (selectedCategoryIndex < categories.size()) { + TradeCategory cat = categories.get(selectedCategoryIndex); + List options = cat.getOptions(); + if (selectedOptionIndex < options.size()) { + String summary = "§7Target: §f" + cat.getName() + " §7» §6" + options.get(selectedOptionIndex).getDisplayName(); + graphics.centeredText(this.font, Component.literal(summary), this.width / 2, this.height - 18, 0xFFDDDDDD); + } + } + } +} diff --git a/src/main/java/com/villagerroller/util/TradeMatcher.java b/src/main/java/com/villagerroller/util/TradeMatcher.java new file mode 100644 index 0000000..7b3ff0c --- /dev/null +++ b/src/main/java/com/villagerroller/util/TradeMatcher.java @@ -0,0 +1,21 @@ +package com.villagerroller.util; + +import com.villagerroller.trade.TradeOption; +import net.minecraft.world.item.trading.MerchantOffer; +import net.minecraft.world.item.trading.MerchantOffers; + +public class TradeMatcher { + public static int findMatchingIndex(MerchantOffers offers, TradeOption target, int maxEmeraldPrice) { + if (offers == null || target == null) return -1; + for (int i = 0; i < offers.size(); i++) { + if (target.matches(offers.get(i), maxEmeraldPrice)) { + return i; + } + } + return -1; + } + + public static boolean matches(MerchantOffers offers, TradeOption target, int maxEmeraldPrice) { + return findMatchingIndex(offers, target, maxEmeraldPrice) != -1; + } +} diff --git a/src/main/resources/assets/villager-roller/lang/en_us.json b/src/main/resources/assets/villager-roller/lang/en_us.json new file mode 100644 index 0000000..198e1f9 --- /dev/null +++ b/src/main/resources/assets/villager-roller/lang/en_us.json @@ -0,0 +1,6 @@ +{ + "key.category.villagerroller.general": "Villager Roller", + "key.villagerroller.open": "Open Villager Roller Menu", + "key.villagerroller.stop": "Emergency Stop Rerolling", + "key.villagerroller.toggle_focus": "Toggle Background Focus Mode" +} diff --git a/src/main/resources/assets/villagerroller/lang/en_us.json b/src/main/resources/assets/villagerroller/lang/en_us.json new file mode 100644 index 0000000..198e1f9 --- /dev/null +++ b/src/main/resources/assets/villagerroller/lang/en_us.json @@ -0,0 +1,6 @@ +{ + "key.category.villagerroller.general": "Villager Roller", + "key.villagerroller.open": "Open Villager Roller Menu", + "key.villagerroller.stop": "Emergency Stop Rerolling", + "key.villagerroller.toggle_focus": "Toggle Background Focus Mode" +} diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json new file mode 100644 index 0000000..8090c04 --- /dev/null +++ b/src/main/resources/fabric.mod.json @@ -0,0 +1,29 @@ +{ + "schemaVersion": 1, + "id": "villager-roller", + "version": "${version}", + "name": "Villager Roller", + "description": "Automatically rerolls villager trades client-side.", + "authors": [ + "jadonkortislolz-wq" + ], + "contact": {}, + "license": "MIT", + "environment": "client", + "entrypoints": { + "client": [ + "com.villagerroller.VillagerRoller" + ], + "modmenu": [ + "com.villagerroller.ui.ModMenuIntegration" + ] + }, + "mixins": [ + "villager-roller.mixins.json" + ], + "depends": { + "fabricloader": ">=0.19.5", + "minecraft": "~26.3", + "java": ">=25" + } +} diff --git a/src/main/resources/villager-roller.mixins.json b/src/main/resources/villager-roller.mixins.json new file mode 100644 index 0000000..194f781 --- /dev/null +++ b/src/main/resources/villager-roller.mixins.json @@ -0,0 +1,14 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "com.villagerroller.mixin", + "compatibilityLevel": "JAVA_21", + "client": [ + "GuiMixin", + "WindowMixin", + "HudMixin" + ], + "injectors": { + "defaultRequire": 1 + } +}