Compare commits

...

118 commits

Author SHA1 Message Date
75a4b232ed
ci: 3.13.0.0! 2024-02-06 18:17:30 +01:00
dad4c9e637
feat: updated dependencies for vault hunters 3.13 2024-02-06 18:07:04 +01:00
3b396dfec3
sponsor time! 2024-02-06 18:06:18 +01:00
895ac522d4
CHANGELOG: typo 2024-02-06 18:06:18 +01:00
alterNERDtive
f2051de488
Merge pull request #15 from alterNERDtive/dependabot/github_actions/develop/gradle/gradle-build-action-3 2024-01-29 14:06:00 +01:00
dependabot[bot]
56c50c21f3
Bump gradle/gradle-build-action from 2 to 3
Bumps [gradle/gradle-build-action](https://github.com/gradle/gradle-build-action) from 2 to 3.
- [Release notes](https://github.com/gradle/gradle-build-action/releases)
- [Commits](https://github.com/gradle/gradle-build-action/compare/v2...v3)

---
updated-dependencies:
- dependency-name: gradle/gradle-build-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-01-29 09:15:58 +00:00
alterNERDtive
3403f7060c
Merge pull request #14 from alterNERDtive/dependabot/github_actions/develop/vsoch/pull-request-action-1.1.0 2023-12-08 18:16:00 +01:00
dependabot[bot]
c249cdf432
Bump vsoch/pull-request-action from 1.0.24 to 1.1.0
Bumps [vsoch/pull-request-action](https://github.com/vsoch/pull-request-action) from 1.0.24 to 1.1.0.
- [Release notes](https://github.com/vsoch/pull-request-action/releases)
- [Changelog](https://github.com/vsoch/pull-request-action/blob/master/CHANGELOG.md)
- [Commits](https://github.com/vsoch/pull-request-action/compare/1.0.24...1.1.0)

---
updated-dependencies:
- dependency-name: vsoch/pull-request-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-08 09:58:29 +00:00
e2f88e025f
version bump 2023-11-19 15:52:57 +01:00
78e9cfa1af
3.12.4.0! 2023-11-19 15:52:16 +01:00
1c1dfdf311
updated dependencies for vh 3.12.4 2023-11-19 15:48:46 +01:00
279f5d9075
fixed version number <.< 2023-11-14 22:48:21 +01:00
978d6532f3
version bump 2023-11-14 22:41:06 +01:00
e47ac6c54b
3.12.2.0! 2023-11-14 22:40:25 +01:00
5ff77edd71
updated dependencies for vh 3.12.2 2023-11-14 22:38:56 +01:00
178230a9b6
version bump 2023-11-09 19:07:47 +01:00
8eb9b8b509
3.12.1.1! 2023-11-09 19:03:19 +01:00
9da664ac78
added support for overridingnew Jeweler expertise 2023-11-09 19:01:05 +01:00
7dacc559a8
typo :-/ 2023-11-09 03:18:37 +01:00
409eed99c4
version bump 2023-11-09 03:11:47 +01:00
4c49d3ed2a
3.12.1.0! 2023-11-09 03:09:12 +01:00
bc0d5110cb
updated missing CHANGELOG entries
I’m sick, that’s my excuse.
2023-11-09 03:08:14 +01:00
8611b209e2
fixed build.gradle version number 2023-11-09 02:58:16 +01:00
6e6d53560a
updated gitignore for vscode being dumb 2023-11-09 02:57:36 +01:00
597d6397b3
fixed transmog mixin 2023-11-09 02:57:23 +01:00
2e70ead3a1
updated vault altar tags 2023-11-09 02:57:10 +01:00
5b4e2bb40f
updated dependencies for Vault Hunters 3.12.1 2023-11-09 02:14:05 +01:00
d2b64f7eb5
version bump 2023-09-10 20:35:37 +02:00
7f3f5bb2b2
3.11.4.0! 2023-09-10 20:34:28 +02:00
85e3021af1
added god axe trasmog 2023-09-10 20:31:40 +02:00
1d3a425c3f
updated dependencies for vault hunters 3.11.4 2023-09-10 20:31:14 +02:00
alterNERDtive
8ddab808a4
Merge pull request #11 from alterNERDtive:dependabot/github_actions/develop/actions/checkout-4
Bump actions/checkout from 3 to 4
2023-09-05 14:09:13 +00:00
dependabot[bot]
318848c220
Bump actions/checkout from 3 to 4
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-05 09:28:48 +00:00
2f560e802b
version bump 2023-09-03 16:22:55 +02:00
e29be7bad5
3.11.3.0! 2023-09-03 16:21:51 +02:00
870f870653
added sword support to super secret feature™ 2023-09-03 16:20:22 +02:00
0a60a0bdfb
added livingrock bricks to the trash tag 2023-09-03 16:19:44 +02:00
fd8f5b399b
updated dependencies for vh 3.11.3 2023-09-03 16:18:24 +02:00
76b794b14d
version bump 2023-08-20 20:51:59 +02:00
319c3e5cdf
3.11.2.2! 2023-08-20 20:49:31 +02:00
4116287f00
fixed config loading race condition
fixes #9
2023-08-20 20:46:51 +02:00
8c074239af
extra mods for debugging purposes 2023-08-20 19:47:55 +02:00
ff6cd430f2
fixed jewel cutting config option 2023-08-20 19:10:33 +02:00
9f8da672b1
updated dependencies for vh 3.11.2.2 2023-08-20 18:45:42 +02:00
6512902bb1
README: trash tags 2023-08-07 20:09:02 +02:00
66caf42f2d
version bump 2023-08-07 20:00:55 +02:00
69621dae83
3.11.2.1! 2023-08-07 20:00:05 +02:00
1b01e365f4
updated dependencies for 3.11.2.1 2023-08-07 19:52:00 +02:00
d318cba9d1
README restructuring 2023-08-07 19:51:47 +02:00
fe7ceb5134
added tag for new vault trash
`the_vault:trash`
2023-08-06 18:41:57 +02:00
efdc4e4ab7
updated forge version 2023-08-06 15:26:10 +02:00
d8b1a63be6
version bumb 2023-08-06 15:15:06 +02:00
f963ac2802
3.11.2.0! 2023-08-06 15:14:06 +02:00
d4c8da78a1
vault mod now has a hard dependency on backpacks …
if only it declared those deps, wouldn’t that be great?
2023-08-06 15:13:38 +02:00
e47c36c36b
CHANGELOG fixing 2023-08-06 15:01:56 +02:00
1b28b75e62
updated tags for 3.11.2 2023-08-06 15:00:57 +02:00
d5ba90f210
updated dependencies for VH 3.11.2 2023-08-06 15:00:46 +02:00
e280efdaf9
fixed README error for config file location 2023-07-30 19:46:07 +02:00
c71da805e5
removed fake player research fix logging
… it was very spammy
2023-07-30 19:45:44 +02:00
fec2a3460e
version bumb 2023-07-26 16:14:26 +02:00
b8570b5b36
3.11.1.1! 2023-07-26 16:13:31 +02:00
2ce1c63111
added vaultar requiremnts tagging 2023-07-26 16:10:25 +02:00
d70cd09b42
refactoring: renamed mixin methods 2023-07-26 12:15:03 +02:00
da06973b36
modularized portal block configuration 2023-07-26 12:10:56 +02:00
30ae345c6a
balance changes now disabled by default 2023-07-26 10:57:31 +02:00
98a587518e
configuration pretty coding 2023-07-26 10:55:14 +02:00
cafd733018
oopsie whoopsie 2023-07-26 10:50:30 +02:00
84c7529379
updated docs to reflect ALL cost removed from Enchanter 2023-07-26 10:49:59 +02:00
066d3080ba
fixed fake player research fix logging 2023-07-26 10:48:45 +02:00
21da807b89
fixed fortune injection logging 2023-07-26 10:42:51 +02:00
f201b2d37f
version bump 2023-07-25 01:23:19 +02:00
1a73a83bb2
3.11.1.0! 2023-07-25 01:14:29 +02:00
87d7cfb0ca
super secret new feature 2023-07-25 01:06:36 +02:00
464a941ad0
updated for vh 3.11.1 2023-07-25 00:04:03 +02:00
b937cfb113
remap :) 2023-07-13 18:24:09 +02:00
273cf31b49
version bump 2023-07-13 18:20:31 +02:00
c8fc378ecf
3.11.0.3! 2023-07-13 18:19:45 +02:00
9ad686d667
removed leftover altar conduit option 2023-07-13 18:15:07 +02:00
55650370f1
I HATE ACTIONS 2023-07-13 18:10:42 +02:00
32a0e424e5
version bump 2023-07-13 18:04:21 +02:00
ce9b636688
3.11.0.2! 2023-07-13 18:03:04 +02:00
eb4664d952
removed altar conduit power draw fix
(and the dependency on that mod)
2023-07-13 18:00:51 +02:00
b03801e186
version bump 2023-07-13 17:39:39 +02:00
570028c972
i STILL hate actions :) 2023-07-13 17:39:17 +02:00
07f3d9b4e3
3.11.0.1! 2023-07-13 17:32:43 +02:00
af2022d00c
updaterino for vh 3.11 2023-07-13 17:30:45 +02:00
8aa9578425
README: addded configuration instructions 2023-07-13 13:16:02 +02:00
9c30bdc09e
disabled overwrite checker 2023-07-08 10:27:38 +02:00
5d49c055d1
added support for reaping jewels 2023-07-08 10:26:46 +02:00
0b3b86b911
cleanup 2023-07-02 16:56:29 +02:00
7e1668ab4c
i. hate. actions. 2023-06-27 20:49:45 +02:00
233095c389
version bump 2023-06-27 20:41:06 +02:00
d3c636a990
3.10.1.5 2023-06-27 20:39:22 +02:00
7a542baaa5
… fixed CHANGELOG mistakes 2023-06-27 20:23:40 +02:00
0a5c6bdefa
amended CHANGELOG 2023-06-27 19:41:35 +02:00
fbf3961220
move injection for removing enchantment costs
Makes the thing spam the log more, but works on servers.
fixes #2
2023-06-27 19:23:32 +02:00
b9d0db5936
Added en_US strings for Clean/Dirty Chromatic Iron Slurry 2023-06-26 23:44:27 +02:00
46ca11afad
typo fixed 2023-06-26 17:39:12 +02:00
eff1c086a9
upped version number 2023-06-23 22:55:53 +02:00
f367b73b0d
… fixed cf workflow … 2023-06-23 22:55:03 +02:00
0f3255ffa2
3.10.1.4 2023-06-23 22:53:36 +02:00
d3f54cf121
added vaultintegrations dependency to mods.toml 2023-06-23 22:52:58 +02:00
fdc1b5e61d
added action for cf publishing :) 2023-06-23 22:49:15 +02:00
6a32456f52
fixed altar conduit energy usage with ae2 2023-06-23 22:47:22 +02:00
38518d0103
removed mixin that would crash the game with invalid configs
(there isn’t really a real world scenario for that anyway)
2023-06-22 12:57:23 +02:00
b3f32d75b2
bump version 2023-06-21 00:23:19 +02:00
f264ace3e8
3.10.1.3 2023-06-21 00:22:09 +02:00
143e3ce862
fixed emerald removal for existing valid configs 2023-06-21 00:18:24 +02:00
9682721291
typo 2023-06-21 00:02:53 +02:00
0a04435b15
updated README 2023-06-20 23:49:45 +02:00
6b0a20a562
version bump 2023-06-20 23:40:56 +02:00
c5c3a916f4
3.10.1.2 2023-06-20 23:34:52 +02:00
69c64a69fe
remove emerald cost from vault enchanter 2023-06-20 23:32:11 +02:00
ced6923a12
refactoring ’n’ javadoc ’n’ i18n ’n’ shit 2023-06-20 22:56:21 +02:00
fc6a8ae80e
@shadow remap warnings dealt with 2023-06-20 18:03:38 +02:00
976880f42e
auto versioning! 2023-06-20 10:54:37 +02:00
2d9e0ad926
version increment 2023-06-20 09:18:03 +02:00
cbaca70a91
fix release workflow (again (i wish there was a way to debug this shit)) 2023-06-20 09:17:25 +02:00
66 changed files with 1973 additions and 152 deletions

View file

@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: pull-request-action - name: pull-request-action
uses: vsoch/pull-request-action@1.0.24 uses: vsoch/pull-request-action@1.1.0
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PULL_REQUEST_BRANCH: "develop" PULL_REQUEST_BRANCH: "develop"

View file

@ -1,4 +1,4 @@
name: Create release on tag push name: Create release on tag push
on: on:
push: push:
@ -14,17 +14,18 @@ jobs:
steps: steps:
- name: Checkout source code - name: Checkout source code
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Setup Gradle - name: Setup Gradle
uses: gradle/gradle-build-action@v2 uses: gradle/gradle-build-action@v3
- name: Run build with Gradle Wrapper - name: Run build with Gradle Wrapper
run: ./gradlew build run: chmod +x ./gradlew && ./gradlew build
- name: Draft release - name: Draft release
uses: ncipollo/release-action@v1 uses: ncipollo/release-action@v1
with: with:
token: ${{ secrets.RELEASE_TOKEN }}
artifacts: "build/libs/the_vault-tweaks-1.18.2-*.jar" artifacts: "build/libs/the_vault-tweaks-1.18.2-*.jar"
bodyFile: "CHANGELOG.md" bodyFile: "CHANGELOG.md"
draft: true draft: true

View file

@ -0,0 +1,51 @@
name: Publish to Curseforge on release
on:
release:
types: [published]
jobs:
build:
name: Publish to Curseforge
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Set env
run: echo "RELEASE_VERSION=${GITHUB_REF_NAME#release/}" >> $GITHUB_ENV
- name: Checkout source code
uses: actions/checkout@v4
- name: Download release artifacts
env:
GH_TOKEN: ${{ github.token }}
run: gh release download ${{ github.ref_name }}
- name: Publish to Curseforge
uses: Kir-Antipov/mc-publish@v3.3
with:
curseforge-id: 877136
curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }}
files: |
the_vault-tweaks-1.18.2-${{ env.RELEASE_VERSION }}.jar
the_vault-tweaks-1.18.2-${{ env.RELEASE_VERSION }}-javadoc.jar
the_vault-tweaks-1.18.2-${{ env.RELEASE_VERSION }}-sources.jar
name: ""
version: 1.18.2-${{ env.RELEASE_VERSION }}
version-type: release
changelog-file: CHANGELOG.md
loaders: |
forge
game-versions: |
1.18.2
java: |
17
retry-attempts: 2
retry-delay: 10000
fail-mode: fail

4
.gitignore vendored
View file

@ -13,6 +13,9 @@ out
*.iml *.iml
.idea .idea
# jdk
jdk-17.0.2
# gradle # gradle
build build
.gradle .gradle
@ -27,3 +30,4 @@ forge*changelog.txt
.vscode .vscode
libs libs
version.properties

View file

@ -1,8 +1,102 @@
# 3.13.0.0
Many thanks to @xyzminecraftserver for sponsoring the project!
This release is only rudimentarily tested since I am not currently playing the pack. Please report any issues you run into.
* Updated dependencies for Vault Hunters 3.13.
# 3.12.4.0 (2023-11-19)
* Updated dependencies for Vault Hunters 3.12.4.
# 3.12.2.0 (2023-11-14)
* Updated dependencies for Vault Hunters 3.12.2.
# 3.12.1.1 (2023-11-09)
* Added support for overriding the new Jeweler Expertise; disabling it now grants 3 free cuts by default.
# 3.12.1.0 (2023-11-09)
* Updated dependencies for Vault Hunters 3.12.1.
* Fixed Transmog Table mixin for 3.12.1.
* Updated Vault Altar tags to reflect the Lvl 40 → Lvl 50 pool change.
# 3.11.4.0 (2023-09-10)
* Updated dependencies for Vault Hunters 3.11.4.
* Added God Axe transmog to the super secret feature™.
# 3.11.3.0 (2023-09-03)
* Updated dependencies for Vault Hunters 3.11.3.
* Added Livingrock Bricks to the `the_vault:trash` tag, now that it has soul value.
# 3.11.2.2 (2023-08-20)
* Updated dependencies for Vault Hunters 3.11.2.2.
* Fixed jewel cutting tweaks being en-/disabled via the Jeweller expertise switch, the dedicated option now takes effect.
* Fixed race condition between Vault Mod config loading and Tweaks Mod config loading; the Vault Mod config is now reloaded whenever the Tweaks Mod config is (re-)loaded. (fixes #9)
# 3.11.2.1 (2023-08-07)
* Updated dependencies for Vault Hunters 3.11.2.1.
* Added tag for the new trash loot in Vaults (`the_vault:trash`).
# 3.11.2.0 (2023-08-06)
* Updated dependencies for Vault Hunters 3.11.2.
* Updated tags for Vault Hunters 3.11.2.
* Removed spammy logging for the fake player research fix.
# 3.11.1.1 (2023-07-26)
* Balance changes are now disabled by default, bug fixes enabled. Will not affect exsting worlds/configs.
* Modularized Portal block configuration; you can now define your own blocks to build Vault Portals out of.
* Altar requirement tags! Generated from the actual config file.
# 3.11.1.0 (2023-07-25)
* Updated dependencies for Vault Hunters 3.11.1.
# 3.11.0.3 (2023-07-13)
* Re-release because Curse sucks.
* Removed the Altar Conduit fix toggle from the configuration file.
# 3.11.0.2 (2023-07-13)
* Removed Altar Conduit power draw fix for AE2, fixed in the mod itself.
* Fixed (= removed) Vault Integrations dependency.
# 3.11.0.1 (2023-07-13)
* Updated dependencies for Vault Hunters 3.11.
* Added support for Reaping Jewels (you still cannot obtain those without commands or config changes!).
# 3.10.1.5 (2023-06-27)
* Fixed `removeEmeraldCost` option not being applied correctly on servers (#2).
* Added en_US strings for Clean/Dirty Chromatic Iron Slurry.
# 3.10.1.4 (2023-06-23)
* Fixed Vault Altar Conduit energy usage when used in an AE2 grid.
# 3.10.1.3 (2023-06-21)
* Removed Emerald cost from Vault Enchanter.
* Lots of refactoring work behind the scenes.
* Added i18n support and lots of logging.
* Fixed AE2 fake player in existing worlds not getting new research when it is added to the pack.
# 3.10.1.1 (2023-06-20) # 3.10.1.1 (2023-06-20)
* fixed AE2 auto crafting needing NBT editing * Fixed AE2 auto crafting needing NBT editing.
* removed colour handler fix; install <https://github.com/radimous/FastVaultGear> instead * Removed colour handler fix; install <https://github.com/radimous/FastVaultGear> instead.
# 3.10.1.0 (2023-06-19) # 3.10.1.0 (2023-06-19)
initial release for The Vault 3.10.1 Initial release for The Vault 3.10.1.

View file

@ -1,31 +1,44 @@
# Vault Mod Tweaks # Vault Mod Tweaks
This little companion mod for the Vault mod of the Vault Hunters mod pack fixes This little companion mod for the Vault mod of the Vault Hunters mod pack fixes a few bugs and brings a couple QoL and balance changes.
a few bugs and brings a couple QoL and balance changes.
All of these can be individually disabled in client & server config files. If you enable the changes that affect expertises, I recommend a full expertise reset after installing this mod.
If you do not disable the changes that affect expertises, I recommend a full ## Configuration
expertise reset after installing this mod.
## Fixes The mod is configured via a server configuration file. To change settings, do the following:
* Removed the “Andersite” “joke”. 1. Create a new world and load into it / start your server.
* ~~Removed call to a colour handling event that is called several thousand times 2. Close the world again / stop your server.
per second; gives a noticeable performance boost, but turns jewels and 3. Find the configuration file in `saves/<world name>/serverconfig/the_vault-tweaks-server.toml` (singleplayer) or `<world name>/serverconfig/the_vault-tweaks-server.toml` (server).
unidentified items white~~ use <https://github.com/radimous/FastVaultGear> 4. Change accordingly. The file is heavily commented.
* Fake players work with research again (e.g. Routers + Botany Pots, AE2 auto
crafting)
* Fake players can put Vault Rocks on the Altar again
* Relic fragments \#5 are now equally as likely to drop as the others
* AE2 auto crafting no longer requires manually giving its fake player all research
## Changes Bug fixes are enabled, balance changes disabled by default.
* Vault Enchanters offer Fortune 5, Fortunate expertise removed ## Bug Fixes
* Jewel cutting has a base 25% chance of failure, Jeweler expertise removed
* Budding Crystal (Sky Vaults only) growth time reduced * Fake players work with research again (e.g. Routers + Botany Pots, AE2 auto crafting).
* Altar infusion time (time between redstone signal and the crystal popping off) * Fake players can put Vault Rocks on the Altar again.
reduced * Relic fragments \#5 are now equally as likely to drop as the others.
* Vault Charm upgrades (Junk Management) tier 1 and 2 buffed * AE2 auto crafting no longer requires manually giving its fake player all research.
* Jewel cutting buffed from 110 size reduction to 310
## Miscellaneous
* Added tags for the new Vault trash items found in loot chests (`the_vault:trash`).
* Added support for making Vault Portals out of arbitrary blocks.
* Added tags to all Vault Altar requirements:
* `the_vault:altar_requirements`
* `the_vault:altar_requirements/<level>`
* `the_vault:altar_requirements/<pool>`
* `the_vault:altar_requirements/<pool>/<level>`
## Balance Changes
* Removed enchanting cost from Vault Enchanter.
* Vault Enchanters offer Fortune 5, Fortunate expertise removed.
* Jewel cutting has a base 25% chance of failure, Jeweler expertise removed.
* Budding Crystal (Sky Vaults only) growth time reduced.
* Altar infusion time (time between redstone signal and the crystal popping off) reduced.
* Vault Junk Upgrades (Junk Management) tier 1 and 2 buffed
* Jewel cutting buffed from 110 size reduction to 310.
* Added support for Reaping jewels (you still cannot obtain those without commands or config changes!).

View file

@ -3,11 +3,13 @@ buildscript {
// These repositories are only for Gradle plugins, put any other repositories in the repository block further below // These repositories are only for Gradle plugins, put any other repositories in the repository block further below
maven { url = 'https://maven.minecraftforge.net' } maven { url = 'https://maven.minecraftforge.net' }
maven { url = 'https://repo.spongepowered.org/maven' } maven { url = 'https://repo.spongepowered.org/maven' }
maven { url = "https://plugins.gradle.org/m2/" }
mavenCentral() mavenCentral()
} }
dependencies { dependencies {
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true
classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT' classpath 'org.spongepowered:mixingradle:0.7-SNAPSHOT'
classpath "eu.davidea:grabver:2.0.2"
} }
} }
// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup. // Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
@ -17,8 +19,23 @@ plugins {
} }
apply plugin: 'net.minecraftforge.gradle' apply plugin: 'net.minecraftforge.gradle'
apply plugin: 'org.spongepowered.mixin' apply plugin: 'org.spongepowered.mixin'
apply plugin: 'eu.davidea.grabver'
version = '1.18.2-3.10.1.1' versioning {
// Required (number)
major 3
minor 13
// Optional, force custom patch (number)
patch 0
// Optional (any string)
//preRelease "RC1"
// Optional, custom task name to trigger the increase of the version
//incrementOn "<task-name>"
// Optional, custom task name for which you want to save the versioning file
//saveOn "<task-name>"
}
version = "1.18.2-${versioning.name}.${versioning.build}"
group = 'tv.alternerd.vault_tweaks' // http://maven.apache.org/guides/mini/guide-naming-conventions.html group = 'tv.alternerd.vault_tweaks' // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = 'the_vault-tweaks' archivesBaseName = 'the_vault-tweaks'
@ -144,12 +161,21 @@ repositories {
// ForgeGradle automatically adds the Forge maven and Maven Central for you // ForgeGradle automatically adds the Forge maven and Maven Central for you
maven { maven {
name "Cursemaven"
url "https://cursemaven.com" url "https://cursemaven.com"
content { content {
includeGroup "curse.maven" includeGroup "curse.maven"
} }
} }
maven {
name = "Modmaven"
url = uri("https://modmaven.dev/")
content {
includeGroup "appeng"
}
}
// If you have mod jar dependencies in ./libs, you can declare them as a repository like so: // If you have mod jar dependencies in ./libs, you can declare them as a repository like so:
//flatDir { //flatDir {
// dir 'libs' // dir 'libs'
@ -160,19 +186,30 @@ dependencies {
// Specify the version of Minecraft to use. If this is any group other than 'net.minecraft', it is assumed // Specify the version of Minecraft to use. If this is any group other than 'net.minecraft', it is assumed
// that the dep is a ForgeGradle 'patcher' dependency, and its patches will be applied. // that the dep is a ForgeGradle 'patcher' dependency, and its patches will be applied.
// The userdev artifact is a special name and will get all sorts of transformations applied to it. // The userdev artifact is a special name and will get all sorts of transformations applied to it.
minecraft 'net.minecraftforge:forge:1.18.2-40.2.9' minecraft 'net.minecraftforge:forge:1.18.2-40.2.17'
annotationProcessor 'org.spongepowered:mixin:0.8.5:processor' annotationProcessor 'org.spongepowered:mixin:0.8.5:processor'
implementation fg.deobf('curse.maven:vault-hunters-official-mod-458203:4570130') implementation fg.deobf('curse.maven:vault-hunters-official-mod-458203:5076087')
// implementation fg.deobf('curse.maven:vault-integrations-867003:4570137')
// implementation fg.deobf("curse.maven:refined-storage-243076:3712882")
implementation fg.deobf('appeng:appliedenergistics2-forge:11.7.0')
// Vault dependency // Vault dependency
implementation fg.deobf("curse.maven:curios-309927:4418032") implementation fg.deobf("curse.maven:curios-309927:4418032")
implementation fg.deobf("curse.maven:quark-243121:3840125")
implementation fg.deobf("curse.maven:autoreglib-250363:3642382")
implementation fg.deobf("curse.maven:ecologics-570463:4171283")
implementation fg.deobf("curse.maven:geckolib-388172:4181370")
implementation fg.deobf("curse.maven:sophisticated-core-618298:4668692")
implementation fg.deobf("curse.maven:sophisticated-backpacks-422301:4637292")
// util // util
implementation fg.deobf("curse.maven:lazydfu-433518:3209972") implementation fg.deobf("curse.maven:lazydfu-433518:3209972")
implementation fg.deobf("curse.maven:modernfix-790626:4593891") implementation fg.deobf("curse.maven:modernfix-790626:4593891")
implementation fg.deobf("curse.maven:configured-457570:4462832") implementation fg.deobf("curse.maven:configured-457570:4462832")
implementation fg.deobf("curse.maven:better-mods-button-541584:4608772")
implementation fg.deobf("curse.maven:fore-config-screens-544048:3671318")
// Real mod deobf dependency examples - these get remapped to your current mappings // Real mod deobf dependency examples - these get remapped to your current mappings
// compileOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}:api") // Adds JEI API as a compile dependency // compileOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}:api") // Adds JEI API as a compile dependency
@ -225,7 +262,28 @@ tasks.withType(JavaCompile).configureEach {
options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation options.encoding = 'UTF-8' // Use the UTF-8 charset for Java compilation
} }
javadoc {
options.encoding = 'UTF-8'
}
mixin { mixin {
add sourceSets.main, 'mixins.the_vault_tweaks.refmap.json' add sourceSets.main, 'mixins.the_vault_tweaks.refmap.json'
config 'mixins.the_vault_tweaks.json' config 'mixins.the_vault_tweaks.json'
// AP settings
disableOverwriteChecker = true
}
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
artifacts {
archives sourcesJar
archives javadocJar
} }

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"#the_vault:altar_requirements/mob",
"#the_vault:altar_requirements/resource",
"#the_vault:altar_requirements/farmable",
"#the_vault:altar_requirements/misc"
]
}

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"#the_vault:altar_requirements/mob/0",
"#the_vault:altar_requirements/resource/0",
"#the_vault:altar_requirements/farmable/0",
"#the_vault:altar_requirements/misc/0"
]
}

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"#the_vault:altar_requirements/mob/10",
"#the_vault:altar_requirements/resource/10",
"#the_vault:altar_requirements/farmable/10",
"#the_vault:altar_requirements/misc/10"
]
}

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"#the_vault:altar_requirements/mob/20",
"#the_vault:altar_requirements/resource/20",
"#the_vault:altar_requirements/farmable/20",
"#the_vault:altar_requirements/misc/20"
]
}

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"#the_vault:altar_requirements/mob/50",
"#the_vault:altar_requirements/resource/50",
"#the_vault:altar_requirements/farmable/50",
"#the_vault:altar_requirements/misc/50"
]
}

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"#the_vault:altar_requirements/mob/75",
"#the_vault:altar_requirements/resource/75",
"#the_vault:altar_requirements/farmable/75",
"#the_vault:altar_requirements/misc/75"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"#the_vault:altar_requirements/misc/90"
]
}

View file

@ -0,0 +1,10 @@
{
"replace": false,
"values": [
"#the_vault:altar_requirements/farmable/0",
"#the_vault:altar_requirements/farmable/10",
"#the_vault:altar_requirements/farmable/20",
"#the_vault:altar_requirements/farmable/50",
"#the_vault:altar_requirements/farmable/75"
]
}

View file

@ -0,0 +1,16 @@
{
"replace": false,
"values": [
"minecraft:wheat_seeds",
"minecraft:oak_leaves",
"minecraft:spruce_leaves",
"minecraft:birch_leaves",
"minecraft:jungle_leaves",
"minecraft:acacia_leaves",
"minecraft:dark_oak_leaves",
"minecraft:azalea_leaves",
"minecraft:flowering_azalea_leaves",
"ecologics:coconut_leaves",
"ecologics:walnut_leaves"
]
}

View file

@ -0,0 +1,32 @@
{
"replace": false,
"values": [
"minecraft:sugar_cane",
"minecraft:carrot",
"minecraft:potato",
"minecraft:wheat",
"minecraft:kelp",
"minecraft:cactus",
"minecraft:bamboo",
"minecraft:vine",
"minecraft:beetroot",
"minecraft:snowball",
"minecraft:pumpkin",
"minecraft:melon",
"minecraft:azalea",
"minecraft:flowering_azalea",
"minecraft:sea_pickle",
"minecraft:dandelion",
"minecraft:poppy",
"minecraft:blue_orchid",
"minecraft:allium",
"minecraft:azure_bluet",
"minecraft:oxeye_daisy",
"minecraft:cornflower",
"minecraft:lily_of_the_valley",
"minecraft:beetroot_seeds",
"minecraft:sweet_berries",
"minecraft:apple",
"minecraft:seagrass"
]
}

View file

@ -0,0 +1,20 @@
{
"replace": false,
"values": [
"minecraft:brown_mushroom",
"minecraft:red_mushroom",
"minecraft:red_tulip",
"minecraft:orange_tulip",
"minecraft:white_tulip",
"minecraft:pink_tulip",
"minecraft:sunflower",
"minecraft:rose_bush",
"minecraft:peony",
"minecraft:lilac",
"minecraft:glow_lichen",
"minecraft:clay_ball",
"minecraft:brick",
"minecraft:glow_berries",
"minecraft:nether_wart"
]
}

View file

@ -0,0 +1,12 @@
{
"replace": false,
"values": [
"minecraft:twisting_vines",
"minecraft:weeping_vines",
"minecraft:big_dripleaf",
"minecraft:crimson_fungus",
"minecraft:warped_fungus",
"minecraft:chorus_fruit",
"minecraft:lily_pad"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:wither_rose"
]
}

View file

@ -0,0 +1,11 @@
{
"replace": false,
"values": [
"#the_vault:altar_requirements/misc/0",
"#the_vault:altar_requirements/misc/10",
"#the_vault:altar_requirements/misc/20",
"#the_vault:altar_requirements/misc/50",
"#the_vault:altar_requirements/misc/75",
"#the_vault:altar_requirements/misc/90"
]
}

View file

@ -0,0 +1,9 @@
{
"replace": false,
"values": [
"minecraft:iron_ingot",
"minecraft:copper_ingot",
"minecraft:coal",
"minecraft:charcoal"
]
}

View file

@ -0,0 +1,13 @@
{
"replace": false,
"values": [
"minecraft:pointed_dripstone",
"minecraft:gold_ingot",
"minecraft:redstone",
"minecraft:emerald",
"minecraft:lapis_lazuli",
"minecraft:amethyst_shard",
"minecraft:diamond",
"minecraft:spore_blossom"
]
}

View file

@ -0,0 +1,8 @@
{
"replace": false,
"values": [
"minecraft:glowstone_dust",
"minecraft:quartz",
"minecraft:name_tag"
]
}

View file

@ -0,0 +1,31 @@
{
"replace": false,
"values": [
"minecraft:prismarine_shard",
"minecraft:prismarine_crystals",
"minecraft:chorus_flower",
"minecraft:dead_brain_coral",
"minecraft:dead_bubble_coral",
"minecraft:dead_fire_coral",
"minecraft:dead_horn_coral",
"minecraft:dead_tube_coral",
"minecraft:dead_tube_coral_fan",
"minecraft:dead_brain_coral_fan",
"minecraft:dead_bubble_coral_fan",
"minecraft:dead_fire_coral_fan",
"minecraft:dead_horn_coral_fan",
"minecraft:brain_coral",
"minecraft:bubble_coral",
"minecraft:fire_coral",
"minecraft:horn_coral",
"minecraft:tube_coral",
"minecraft:tube_coral_fan",
"minecraft:brain_coral_fan",
"minecraft:bubble_coral_fan",
"minecraft:fire_coral_fan",
"minecraft:horn_coral_fan",
"minecraft:totem_of_undying",
"minecraft:saddle",
"minecraft:cobweb"
]
}

View file

@ -0,0 +1,8 @@
{
"replace": false,
"values": [
"minecraft:sponge",
"minecraft:nether_star",
"minecraft:trident"
]
}

View file

@ -0,0 +1,19 @@
{
"replace": false,
"values": [
"minecraft:music_disc_13",
"minecraft:music_disc_cat",
"minecraft:music_disc_blocks",
"minecraft:music_disc_chirp",
"minecraft:music_disc_far",
"minecraft:music_disc_mall",
"minecraft:music_disc_mellohi",
"minecraft:music_disc_stal",
"minecraft:music_disc_strad",
"minecraft:music_disc_ward",
"minecraft:music_disc_11",
"minecraft:music_disc_wait",
"minecraft:music_disc_otherside",
"minecraft:music_disc_pigstep"
]
}

View file

@ -0,0 +1,10 @@
{
"replace": false,
"values": [
"#the_vault:altar_requirements/mob/0",
"#the_vault:altar_requirements/mob/10",
"#the_vault:altar_requirements/mob/20",
"#the_vault:altar_requirements/mob/50",
"#the_vault:altar_requirements/mob/75"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:stick"
]
}

View file

@ -0,0 +1,41 @@
{
"replace": false,
"values": [
"minecraft:string",
"minecraft:rotten_flesh",
"minecraft:bone",
"minecraft:spider_eye",
"minecraft:arrow",
"minecraft:feather",
"minecraft:porkchop",
"minecraft:beef",
"minecraft:chicken",
"minecraft:rabbit",
"minecraft:slime_ball",
"minecraft:egg",
"minecraft:leather",
"minecraft:rabbit_hide",
"minecraft:white_dye",
"minecraft:orange_dye",
"minecraft:magenta_dye",
"minecraft:light_blue_dye",
"minecraft:yellow_dye",
"minecraft:lime_dye",
"minecraft:pink_dye",
"minecraft:gray_dye",
"minecraft:light_gray_dye",
"minecraft:cyan_dye",
"minecraft:purple_dye",
"minecraft:blue_dye",
"minecraft:brown_dye",
"minecraft:green_dye",
"minecraft:red_dye",
"minecraft:black_dye",
"minecraft:poisonous_potato",
"minecraft:mutton",
"minecraft:salmon",
"minecraft:cod",
"minecraft:cocoa_beans",
"minecraft:gunpowder"
]
}

View file

@ -0,0 +1,13 @@
{
"replace": false,
"values": [
"minecraft:honey_bottle",
"minecraft:blaze_rod",
"minecraft:ender_pearl",
"minecraft:rabbit_foot",
"minecraft:honeycomb",
"minecraft:ink_sac",
"minecraft:glow_ink_sac",
"minecraft:pufferfish"
]
}

View file

@ -0,0 +1,11 @@
{
"replace": false,
"values": [
"minecraft:tropical_fish",
"minecraft:ghast_tear",
"minecraft:magma_cream",
"minecraft:nautilus_shell",
"minecraft:turtle_egg",
"minecraft:wither_skeleton_skull"
]
}

View file

@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"minecraft:phantom_membrane"
]
}

View file

@ -0,0 +1,10 @@
{
"replace": false,
"values": [
"#the_vault:altar_requirements/resource/0",
"#the_vault:altar_requirements/resource/10",
"#the_vault:altar_requirements/resource/20",
"#the_vault:altar_requirements/resource/50",
"#the_vault:altar_requirements/resource/75"
]
}

View file

@ -0,0 +1,10 @@
{
"replace": false,
"values": [
"minecraft:cobblestone",
"minecraft:diorite",
"minecraft:andesite",
"minecraft:granite",
"minecraft:dirt"
]
}

View file

@ -0,0 +1,74 @@
{
"replace": false,
"values": [
"minecraft:stone",
"minecraft:gravel",
"minecraft:sand",
"minecraft:red_sand",
"minecraft:oak_log",
"minecraft:spruce_log",
"minecraft:birch_log",
"minecraft:jungle_log",
"minecraft:acacia_log",
"minecraft:dark_oak_log",
"minecraft:moss_block",
"minecraft:white_wool",
"minecraft:orange_wool",
"minecraft:magenta_wool",
"minecraft:light_blue_wool",
"minecraft:yellow_wool",
"minecraft:lime_wool",
"minecraft:pink_wool",
"minecraft:gray_wool",
"minecraft:light_gray_wool",
"minecraft:cyan_wool",
"minecraft:purple_wool",
"minecraft:blue_wool",
"minecraft:brown_wool",
"minecraft:green_wool",
"minecraft:red_wool",
"minecraft:black_wool",
"minecraft:glass",
"minecraft:white_stained_glass",
"minecraft:orange_stained_glass",
"minecraft:magenta_stained_glass",
"minecraft:light_blue_stained_glass",
"minecraft:yellow_stained_glass",
"minecraft:lime_stained_glass",
"minecraft:pink_stained_glass",
"minecraft:gray_stained_glass",
"minecraft:light_gray_stained_glass",
"minecraft:cyan_stained_glass",
"minecraft:purple_stained_glass",
"minecraft:blue_stained_glass",
"minecraft:brown_stained_glass",
"minecraft:green_stained_glass",
"minecraft:red_stained_glass",
"minecraft:black_stained_glass",
"minecraft:smooth_stone",
"minecraft:bricks",
"minecraft:netherrack",
"minecraft:soul_sand",
"minecraft:basalt",
"minecraft:white_terracotta",
"minecraft:orange_terracotta",
"minecraft:magenta_terracotta",
"minecraft:light_blue_terracotta",
"minecraft:yellow_terracotta",
"minecraft:lime_terracotta",
"minecraft:pink_terracotta",
"minecraft:gray_terracotta",
"minecraft:light_gray_terracotta",
"minecraft:cyan_terracotta",
"minecraft:purple_terracotta",
"minecraft:blue_terracotta",
"minecraft:brown_terracotta",
"minecraft:green_terracotta",
"minecraft:red_terracotta",
"minecraft:black_terracotta",
"minecraft:terracotta",
"minecraft:deepslate",
"minecraft:cobbled_deepslate",
"minecraft:tuff"
]
}

View file

@ -0,0 +1,43 @@
{
"replace": false,
"values": [
"minecraft:mossy_cobblestone",
"minecraft:obsidian",
"minecraft:ice",
"minecraft:white_concrete",
"minecraft:orange_concrete",
"minecraft:magenta_concrete",
"minecraft:light_blue_concrete",
"minecraft:yellow_concrete",
"minecraft:lime_concrete",
"minecraft:pink_concrete",
"minecraft:gray_concrete",
"minecraft:light_gray_concrete",
"minecraft:cyan_concrete",
"minecraft:purple_concrete",
"minecraft:blue_concrete",
"minecraft:brown_concrete",
"minecraft:green_concrete",
"minecraft:red_concrete",
"minecraft:black_concrete",
"minecraft:white_concrete_powder",
"minecraft:orange_concrete_powder",
"minecraft:magenta_concrete_powder",
"minecraft:light_blue_concrete_powder",
"minecraft:yellow_concrete_powder",
"minecraft:lime_concrete_powder",
"minecraft:pink_concrete_powder",
"minecraft:gray_concrete_powder",
"minecraft:light_gray_concrete_powder",
"minecraft:cyan_concrete_powder",
"minecraft:purple_concrete_powder",
"minecraft:blue_concrete_powder",
"minecraft:brown_concrete_powder",
"minecraft:green_concrete_powder",
"minecraft:red_concrete_powder",
"minecraft:black_concrete_powder",
"minecraft:blackstone",
"minecraft:dripstone_block",
"minecraft:prismarine"
]
}

View file

@ -0,0 +1,14 @@
{
"replace": false,
"values": [
"minecraft:soul_soil",
"minecraft:purpur_block",
"minecraft:mycelium",
"minecraft:end_stone",
"minecraft:magma_block",
"minecraft:nether_wart_block",
"minecraft:warped_wart_block",
"minecraft:shroomlight",
"minecraft:podzol"
]
}

View file

@ -0,0 +1,11 @@
{
"replace": false,
"values": [
"minecraft:blue_ice",
"minecraft:crimson_stem",
"minecraft:warped_stem",
"minecraft:crying_obsidian",
"minecraft:calcite",
"minecraft:rooted_dirt"
]
}

View file

@ -1,9 +1,31 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks; package tv.alterNERD.VaultModTweaks;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.common.ForgeConfigSpec; import net.minecraftforge.common.ForgeConfigSpec;
import net.minecraftforge.common.ForgeConfigSpec.BooleanValue; import net.minecraftforge.common.ForgeConfigSpec.BooleanValue;
import net.minecraftforge.common.ForgeConfigSpec.DoubleValue; import net.minecraftforge.common.ForgeConfigSpec.DoubleValue;
import net.minecraftforge.common.ForgeConfigSpec.IntValue; import net.minecraftforge.common.ForgeConfigSpec.IntValue;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.common.ForgeConfigSpec.Builder; import net.minecraftforge.common.ForgeConfigSpec.Builder;
import net.minecraftforge.common.ForgeConfigSpec.ConfigValue; import net.minecraftforge.common.ForgeConfigSpec.ConfigValue;
@ -14,8 +36,11 @@ public class Configuration {
public static BooleanValue FORTUNE_ENABLED; public static BooleanValue FORTUNE_ENABLED;
public static IntValue FORTUNE_LEVEL; public static IntValue FORTUNE_LEVEL;
public static BooleanValue ENCHANTS_FORFREE;
public static BooleanValue JEWELER_ENABLED; public static BooleanValue JEWELER_ENABLED;
public static DoubleValue JEWELER_CHANCE; public static DoubleValue JEWELER_CHANCE;
public static IntValue JEWELER_FREE_CUTS;
public static BooleanValue JEWELS_ENABLED; public static BooleanValue JEWELS_ENABLED;
public static IntValue JEWELS_SIZE; public static IntValue JEWELS_SIZE;
@ -29,6 +54,9 @@ public class Configuration {
public static BooleanValue VAULTAR_ENABLED; public static BooleanValue VAULTAR_ENABLED;
public static IntValue VAULTAR_INFUSION_TIME; public static IntValue VAULTAR_INFUSION_TIME;
public static BooleanValue PORTAL_BLOCKS_ENABLED;
public static ConfigValue<List<? extends String>> PORTAL_BLOCKS;
public static BooleanValue FAKE_PLAYER_FIX; public static BooleanValue FAKE_PLAYER_FIX;
public static BooleanValue ROUTER_VAULTAR_FIX; public static BooleanValue ROUTER_VAULTAR_FIX;
public static BooleanValue FRAGMENT_WEIGHT_FIX; public static BooleanValue FRAGMENT_WEIGHT_FIX;
@ -39,59 +67,86 @@ public class Configuration {
public static ConfigValue<Integer> JUNKMGMT_T3; public static ConfigValue<Integer> JUNKMGMT_T3;
public static ConfigValue<Integer> JUNKMGMT_T4; public static ConfigValue<Integer> JUNKMGMT_T4;
public static ConfigValue<List<? extends String>> GOBLINS;
public static ConfigValue<List<? extends String>> CHAMPIONS;
static { static {
Builder builder = new Builder(); Builder builder = new Builder();
// Fortune changes // Fortune changes
builder.push("Fortune"); builder.push("Fortune");
builder.comment("Replace the maximum Fortune level for the Vault Enchanter and remove the Fortunate Expertise"); FORTUNE_ENABLED = builder
FORTUNE_ENABLED = builder.define("enableOverride", true); .comment("Replace the maximum Fortune level for the Vault Enchanter and remove the Fortunate Expertise")
builder.comment("Maximum Fortune level"); .define("enableOverride", false);
FORTUNE_LEVEL = builder.defineInRange("maxLevel", 5, 3, 5); FORTUNE_LEVEL = builder
.comment("Maximum Fortune level")
.defineInRange("maxLevel", 5, 3, 5);
builder.pop();
// Enchantment Cost
builder.push("VaultEnchanter");
ENCHANTS_FORFREE = builder
.comment("Remove the Emerald cost from the Vault Enchanter")
.define("removeEmeraldCost", false);
builder.pop(); builder.pop();
// Jeweler // Jeweler
builder.push("Jeweler"); builder.push("Jeweler");
builder.comment("Remove the Jeweler Expertise and change the default cutting chance accordingly"); JEWELER_ENABLED = builder
JEWELER_ENABLED = builder.define("disableJeweler", true); .comment("Remove the Jeweler Expertise and change the default cutting chance accordingly")
builder.comment("Chance to break the jewel / remove a modifier"); .define("disableJeweler", false);
JEWELER_CHANCE = builder.defineInRange("breakChance", 0.25d, 0d, 0.5d); JEWELER_CHANCE = builder
.comment("Chance to break the jewel / remove a modifier (DEPRECATED since Vault Hunters 3.12.1)")
.defineInRange("breakChance", 0.25d, 0d, 0.5d);
JEWELER_FREE_CUTS = builder
.comment("Number of free cuts (pack default: up to 3 with Jeweler Expetise)")
.defineInRange("free_cuts", 3, 0, 10);
builder.pop(); builder.pop();
// Budding Crystal // Budding Crystal
builder.push("BuddingCrystal"); builder.push("BuddingCrystal");
builder.comment("Change the Budding Crystal growth times (Sky Vaults only)"); BUDDING_ENABLED = builder
BUDDING_ENABLED = builder.define("enableOverride", true); .comment("Change the Budding Crystal growth times (Sky Vaults only)")
builder.comment("Maximum time between growth stages (pack default: 400)"); .define("enableOverride", false);
BUDDING_MAX = builder.defineInRange("maxTime", 300, 300, 500); BUDDING_MAX = builder
builder.comment("Minimum time between growth stages (pack default: 280)"); .comment("Maximum time between growth stages (pack default: 400)")
BUDDING_MIN = builder.defineInRange("minTime", 200, 100, 299); .defineInRange("maxTime", 300, 300, 500);
BUDDING_MIN = builder
.comment("Minimum time between growth stages (pack default: 280)")
.defineInRange("minTime", 200, 100, 299);
builder.pop(); builder.pop();
// Jewels // Jewels
builder.push("Jewels"); builder.push("Jewels");
builder.comment("Change the max size for jewels and the size range for jewel cutting"); JEWELS_ENABLED = builder
JEWELS_ENABLED = builder.define("enableOverride", true); .comment("Change the max size for jewels and the size range for jewel cutting")
builder.comment("Maximum Jewel size (pack default: 90) (CURRENTLY NON-FUNCTIONAL)"); .define("enableOverride", false);
JEWELS_SIZE = builder.defineInRange("maxSize", 40, 10, 100); JEWELS_SIZE = builder
builder.comment("Maximum size reduction when cutting (pack default: 10)"); .comment("Maximum Jewel size (pack default: 90) (CURRENTLY NON-FUNCTIONAL)")
JEWELS_MAX = builder.defineInRange("maxCut", 10, 5, 20); .defineInRange("maxSize", 40, 10, 100);
builder.comment("Minimum size reduction when cutting (pack default: 1)"); JEWELS_MAX = builder
JEWELS_MIN = builder.defineInRange("minCut", 3, 1, 4); .comment("Maximum size reduction when cutting (pack default: 10)")
.defineInRange("maxCut", 10, 5, 20);
JEWELS_MIN = builder
.comment("Minimum size reduction when cutting (pack default: 1)")
.defineInRange("minCut", 3, 1, 4);
builder.pop(); builder.pop();
// Vault Altar // Vault Altar
builder.push("VaultAltar"); builder.push("VaultAltar");
builder.comment("Enable Vaultar config overrides"); VAULTAR_ENABLED = builder
VAULTAR_ENABLED = builder.define("enableOverride", true); .comment("Enable Vaultar config overrides")
builder.comment("The time it takes to infuse a crystal after giving a redstone signal (pack default: 5)"); .define("enableOverride", false);
VAULTAR_INFUSION_TIME = builder.defineInRange("infusionTime", 1, 1, 10); VAULTAR_INFUSION_TIME = builder
.comment("The time it takes to infuse a crystal after giving a redstone signal (pack default: 5)")
.defineInRange("infusionTime", 1, 1, 10);
builder.pop(); builder.pop();
// Vault Charm / Junk Management // Vault Charm / Junk Management
builder.push("JunkManagement"); builder.push("JunkManagement");
builder.comment("Override Junk Charm multipliers for the Junk Management slots (pack defaults: 3/18/114/228)"); JUNKMGMT_ENABLED = builder
JUNKMGMT_ENABLED = builder.define("enableOverride", true); .comment("Override Junk Charm multipliers for the Junk Management slots (pack defaults: 3/18/114/228)")
.define("enableOverride", false);
builder.comment("These values will be multiplied by the default junk list size (9)"); builder.comment("These values will be multiplied by the default junk list size (9)");
JUNKMGMT_T1 = builder.define("tier1Multiplier", 28); JUNKMGMT_T1 = builder.define("tier1Multiplier", 28);
JUNKMGMT_T2 = builder.define("tier2Multiplier", 57); JUNKMGMT_T2 = builder.define("tier2Multiplier", 57);
@ -99,14 +154,39 @@ public class Configuration {
JUNKMGMT_T4 = builder.define("tier4Multiplier", 228); JUNKMGMT_T4 = builder.define("tier4Multiplier", 228);
builder.pop(); builder.pop();
// Vault Portal
builder.push("VaultPortal");
PORTAL_BLOCKS_ENABLED = builder
.comment("Add additional blocks as valid Portal frame blocks")
.define("extendValidPortalBlocks", false);
PORTAL_BLOCKS = builder
.comment("List of additional blocks")
.defineList("additionalPortalBlocks", new ArrayList<String>(), entry -> {
return ForgeRegistries.BLOCKS.containsKey(new ResourceLocation((String)entry));
});
builder.pop();
// Bug fixes // Bug fixes
builder.push("Fixes"); builder.push("Fixes");
builder.comment("Fix fake player research (e.g. Router + Botany Pots interaction, AE2 auto crafting, …)"); FAKE_PLAYER_FIX = builder
FAKE_PLAYER_FIX = builder.define("fakePlayerResearchFix", true); .comment("Fix fake player research (e.g. Router + Botany Pots interaction, AE2 auto crafting, …)")
builder.comment("Fix Routers unable to place Vault Rocks on your Vaultar"); .define("fakePlayerResearchFix", true);
ROUTER_VAULTAR_FIX = builder.define("routerVaultarFix", true); ROUTER_VAULTAR_FIX = builder
builder.comment("Fix №5 fragments of all relics having half the weight"); .comment("Fix Routers unable to place Vault Rocks on your Vaultar")
FRAGMENT_WEIGHT_FIX = builder.define("fragmentFix", true); .define("routerVaultarFix", true);
FRAGMENT_WEIGHT_FIX = builder
.comment("Fix №5 fragments of all relics having half the weight")
.define("fragmentFix", true);
builder.pop();
// Transmogs
builder.push("Transmogs");
GOBLINS = builder
.comment("Additional “Goblin” tier Patrons")
.defineList("goblins", new ArrayList<String>(), entry -> true);
CHAMPIONS = builder
.comment("Additional “Champion” tier Patrons")
.defineList("champions", new ArrayList<String>(), entry -> true);
builder.pop(); builder.pop();
CONFIG = builder.build(); CONFIG = builder.build();

View file

@ -1,29 +1,73 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks; package tv.alterNERD.VaultModTweaks;
import org.slf4j.Logger; import org.slf4j.Logger;
import com.mojang.logging.LogUtils; import com.mojang.logging.LogUtils;
import net.minecraft.data.DataProvider;
import net.minecraft.data.tags.BlockTagsProvider;
import net.minecraftforge.fml.ModLoadingContext; import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.common.Mod; import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.config.ModConfig; import net.minecraftforge.fml.config.ModConfig;
import net.minecraftforge.fml.event.config.ModConfigEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent; import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.forge.event.lifecycle.GatherDataEvent;
import iskallia.vault.init.ModConfigs;
import tv.alterNERD.VaultModTweaks.integration.TagManager;
import tv.alterNERD.VaultModTweaks.util.I18n;
@Mod("the_vault_tweaks") @Mod("the_vault_tweaks")
public class VaultModTweaks public class VaultModTweaks
{ {
private static final Logger LOGGER = LogUtils.getLogger(); public static final Logger LOGGER = LogUtils.getLogger();
public static final String MOD_ID = "the_vault_tweaks";
public VaultModTweaks() public VaultModTweaks() {
{
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup); FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setup);
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::gatherData);
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::configLoaded);
ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, Configuration.CONFIG); ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, Configuration.CONFIG);
ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, Configuration.CLIENTCONFIG); ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, Configuration.CLIENTCONFIG);
} }
private void setup(final FMLCommonSetupEvent event) private void setup(final FMLCommonSetupEvent event) {
{
LOGGER.info("Vault Mod Tweaks by alterNERDtive"); LOGGER.info("Vault Mod Tweaks by alterNERDtive");
} }
private void gatherData(final GatherDataEvent event) {
BlockTagsProvider blockTagsProvider = new BlockTagsProvider(event.getGenerator(), MOD_ID, event.getExistingFileHelper());
event.getGenerator().addProvider(blockTagsProvider);
event.getGenerator().addProvider(
(DataProvider) new TagManager(
event.getGenerator(),
blockTagsProvider,
MOD_ID,
event.getExistingFileHelper())
);
}
private void configLoaded(final ModConfigEvent event) {
if (event.getConfig().getType() == ModConfig.Type.SERVER) {
LOGGER.info(I18n.get("the_vault_tweaks.log.config.reloadvaultconfig"));
ModConfigs.register();
}
}
} }

View file

@ -0,0 +1,105 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.integration;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;
import org.jetbrains.annotations.Nullable;
import iskallia.vault.config.altar.VaultAltarIngredientsConfig;
import iskallia.vault.config.altar.entry.AltarIngredientEntry;
import iskallia.vault.config.entry.LevelEntryMap;
import iskallia.vault.util.data.WeightedList;
import net.minecraft.core.Registry;
import net.minecraft.data.DataGenerator;
import net.minecraft.data.tags.BlockTagsProvider;
import net.minecraft.data.tags.ItemTagsProvider;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.TagKey;
import net.minecraft.world.item.Item;
import net.minecraftforge.common.data.ExistingFileHelper;
import tv.alterNERD.VaultModTweaks.integration.mixin.IMixinVaultAltarIngredientsConfig;
/**
* Adds custom Tags.
*/
public class TagManager
extends ItemTagsProvider
{
public TagManager(DataGenerator generator, BlockTagsProvider blockTagsProvider, String modId,
@Nullable ExistingFileHelper existingFileHelper) {
super(generator, blockTagsProvider, modId, existingFileHelper);
}
@Override
protected void addTags() {
LevelEntryMap<Map<String, WeightedList<AltarIngredientEntry>>> levelIngredientsMap = ((IMixinVaultAltarIngredientsConfig) (VaultAltarIngredientsConfig) new VaultAltarIngredientsConfig().readConfig()).getLEVELS();
Map<String, SortedMap<Integer, List<Item>>> poolMap = new HashMap<String, SortedMap<Integer, List<Item>>>();
// Convert the level -> pool list<ingrediententry> format to what we need:
// pool -> level -> list<item>
levelIngredientsMap.forEach((level, ingredients) -> {
ingredients.forEach((pool, ingredientEntryList) -> {
SortedMap<Integer, List<Item>> poolItems = poolMap.getOrDefault(pool, new TreeMap<Integer, List<Item>>());
List<Item> itemList = poolItems.getOrDefault(level, new ArrayList<Item>());
ingredientEntryList.forEach((ingredientEntry, weight) -> {
ingredientEntry.getItems().forEach(itemStack -> {
itemList.add(itemStack.getItem());
});
});
poolItems.putIfAbsent(level, itemList);
poolMap.putIfAbsent(pool, poolItems);
});
});
// Create (and populate) the actual tags
TagKey<Item> altarTag = TagKey.create(Registry.ITEM_REGISTRY, new ResourceLocation("the_vault:altar_requirements"));
poolMap.forEach((pool, levelItemMap) -> {
TagKey<Item> poolTag = TagKey.create(Registry.ITEM_REGISTRY, new ResourceLocation("the_vault:altar_requirements/%s".formatted(pool)));
List<Item> itemsToRemove = new ArrayList<Item>();
levelItemMap.forEach((level, items) -> {
// Lets make sure to _only_ tag items with the current level that are _not_ included in previous levels
items.removeAll(itemsToRemove);
if (!items.isEmpty()) {
TagKey<Item> levelTag = TagKey.create(Registry.ITEM_REGISTRY, new ResourceLocation("the_vault:altar_requirements/%s".formatted(level)));
TagKey<Item> poolLevelTag = TagKey.create(Registry.ITEM_REGISTRY, new ResourceLocation("the_vault:altar_requirements/%s/%s".formatted(pool, level)));
items.forEach(item -> {
tag(poolLevelTag).add(item);
});
itemsToRemove.addAll(items);
tag(levelTag).addTag(poolLevelTag);
tag(poolTag).addTag(poolLevelTag);
}
});
tag(altarTag).addTag(poolTag);
});
}
}

View file

@ -0,0 +1,42 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.integration.mixin;
import java.util.Map;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
import iskallia.vault.config.altar.VaultAltarIngredientsConfig;
import iskallia.vault.config.altar.entry.AltarIngredientEntry;
import iskallia.vault.config.entry.LevelEntryMap;
import iskallia.vault.util.data.WeightedList;
/**
* Changes the {@link iskallia.vault.config.altar.VaultAltarIngredientsConfig}
* class for managing altar recipes.
*/
@Mixin(VaultAltarIngredientsConfig.class)
public interface IMixinVaultAltarIngredientsConfig {
/**
* Makes the private level/entry Map available.
* @return The level/entry Map
*/
@Accessor(remap = false)
LevelEntryMap<Map<String, WeightedList<AltarIngredientEntry>>> getLEVELS();
}

View file

@ -1,3 +1,20 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.integration.mixin; package tv.alterNERD.VaultModTweaks.integration.mixin;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
@ -6,31 +23,43 @@ import org.spongepowered.asm.mixin.Shadow;
import iskallia.vault.config.Config; import iskallia.vault.config.Config;
import iskallia.vault.config.CrystalBuddingConfig; import iskallia.vault.config.CrystalBuddingConfig;
import tv.alterNERD.VaultModTweaks.Configuration; import tv.alterNERD.VaultModTweaks.Configuration;
import tv.alterNERD.VaultModTweaks.VaultModTweaks;
import tv.alterNERD.VaultModTweaks.util.I18n;
/**
* Changes the {@link iskallia.vault.config.CrystalBuddingConfig} class for
* managing the Budding Crystal configuration (Sky Vaults).
*
* Specifically, sets new values for min and max growth times.
*/
@Mixin(CrystalBuddingConfig.class) @Mixin(CrystalBuddingConfig.class)
public abstract class MixinCrystalBuddingConfig extends Config { public abstract class MixinCrystalBuddingConfig extends Config {
@Shadow @Shadow(remap = false)
private float maxSecondsBetweenGrowthUpdates; private float maxSecondsBetweenGrowthUpdates;
@Shadow @Shadow(remap = false)
private float minSecondsBetweenGrowthUpdates; private float minSecondsBetweenGrowthUpdates;
/**
* Overrides the min and max growth times on loading the configuration file.
*/
@Override @Override
protected void onLoad(Config oldConfigInstance) { protected void onLoad(Config oldConfigInstance) {
super.onLoad(oldConfigInstance); super.onLoad(oldConfigInstance);
if (Configuration.BUDDING_ENABLED.get()) { if (Configuration.BUDDING_ENABLED.get()) {
VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.buddingcrystal"));
this.maxSecondsBetweenGrowthUpdates = Configuration.BUDDING_MAX.get(); this.maxSecondsBetweenGrowthUpdates = Configuration.BUDDING_MAX.get();
this.minSecondsBetweenGrowthUpdates = Configuration.BUDDING_MIN.get(); this.minSecondsBetweenGrowthUpdates = Configuration.BUDDING_MIN.get();
} }
} }
@Shadow @Shadow(remap = false)
@Override @Override
public String getName() { public String getName() {
throw new UnsupportedOperationException("Unimplemented method 'getName'"); throw new UnsupportedOperationException("Unimplemented method 'getName'");
} }
@Shadow @Shadow(remap = false)
@Override @Override
protected void reset() { protected void reset() {
throw new UnsupportedOperationException("Unimplemented method 'reset'"); throw new UnsupportedOperationException("Unimplemented method 'reset'");

View file

@ -1,38 +1,86 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.integration.mixin; package tv.alterNERD.VaultModTweaks.integration.mixin;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import iskallia.vault.util.EnchantmentEntry; import iskallia.vault.util.EnchantmentEntry;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.enchantment.Enchantment; import net.minecraft.world.item.enchantment.Enchantment;
import tv.alterNERD.VaultModTweaks.Configuration; import tv.alterNERD.VaultModTweaks.Configuration;
import tv.alterNERD.VaultModTweaks.VaultModTweaks;
import tv.alterNERD.VaultModTweaks.util.I18n;
/**
* Changes the {@link iskallia.vault.util.EnchantmentEntry} class used by the
* Vault Enchanter.
*
* Specifically, allows for it to enchant Fortune V.
*/
@Mixin(EnchantmentEntry.class) @Mixin(EnchantmentEntry.class)
public abstract class MixinEnchantmentEntry public abstract class MixinEnchantmentEntry
{ {
@Shadow @Shadow(remap = false)
private int level; private int level;
@Shadow @Shadow(remap = false)
private Enchantment enchantment; private Enchantment enchantment;
@Overwrite(remap = false) /**
public int getLevel() { * Sets the level of the Fortune enchantment to 5.
*/
@Inject(
method = "<init>",
at = @At("RETURN"),
remap = false
)
private void init$return(Enchantment enchantment, int level, CallbackInfo ci) {
if (Configuration.FORTUNE_ENABLED.get()) { if (Configuration.FORTUNE_ENABLED.get()) {
if (this.enchantment.getRegistryName().toString().equals("minecraft:fortune")) { ResourceLocation registryName = this.enchantment.getRegistryName();
this.level = Configuration.FORTUNE_LEVEL.get(); if (registryName != null && registryName.toString().equals("minecraft:fortune")) {
int maxFortune = Configuration.FORTUNE_LEVEL.get();
VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.fortune.level", maxFortune));
this.level = maxFortune;
} }
} }
return this.level;
} }
@Overwrite(remap = false) /**
public boolean isValid() { * Makes sure that Fortune level 5 is considered a valid enchantment.
*/
@Inject(
method = "isValid()Z",
at = @At("RETURN"),
cancellable = true,
remap = false
)
private void isValid$return(CallbackInfoReturnable<Boolean> ci) {
if (Configuration.FORTUNE_ENABLED.get()) { if (Configuration.FORTUNE_ENABLED.get()) {
if (this.enchantment.getRegistryName().toString().equals("minecraft:fortune") && this.level <= Configuration.FORTUNE_LEVEL.get()) { ResourceLocation registryName = this.enchantment.getRegistryName();
return true; if (registryName != null && registryName.toString().equals("minecraft:fortune")
&& this.level <= Configuration.FORTUNE_LEVEL.get()) {
VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.fortune.valid"));
ci.setReturnValue(true);
} }
} }
return this.enchantment != null && this.level > 0 && this.level <= this.enchantment.getMaxLevel();
} }
} }

View file

@ -1,3 +1,20 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.integration.mixin; package tv.alterNERD.VaultModTweaks.integration.mixin;
import java.util.HashMap; import java.util.HashMap;
@ -9,30 +26,44 @@ import iskallia.vault.config.Config;
import iskallia.vault.config.ExpertisesGUIConfig; import iskallia.vault.config.ExpertisesGUIConfig;
import iskallia.vault.config.entry.SkillStyle; import iskallia.vault.config.entry.SkillStyle;
import tv.alterNERD.VaultModTweaks.Configuration; import tv.alterNERD.VaultModTweaks.Configuration;
import tv.alterNERD.VaultModTweaks.VaultModTweaks;
import tv.alterNERD.VaultModTweaks.util.I18n;
/**
* Changes the {@link iskallia.vault.config.ExpertisesGUIConfig} class for
* managing the configuration for the Expertises GUI.
*
* Specifically, it removes the Jeweler and Fortunate expertises.
*/
@Mixin(ExpertisesGUIConfig.class) @Mixin(ExpertisesGUIConfig.class)
public abstract class MixinExpertisesGuiConfig extends Config { public abstract class MixinExpertisesGuiConfig extends Config {
@Shadow @Shadow(remap = false)
private HashMap<String, SkillStyle> styles; private HashMap<String, SkillStyle> styles;
/**
* Removes the Jeweler and Fortunate expertises on loading the configuration
* file.
*/
@Override @Override
protected void onLoad(Config oldConfigInstance) { protected void onLoad(Config oldConfigInstance) {
super.onLoad(oldConfigInstance); super.onLoad(oldConfigInstance);
if (Configuration.FORTUNE_ENABLED.get()) { if (Configuration.FORTUNE_ENABLED.get()) {
VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.expertise.fortunate"));
this.styles.remove("Fortunate"); this.styles.remove("Fortunate");
} }
if (Configuration.JEWELER_ENABLED.get()) { if (Configuration.JEWELER_ENABLED.get()) {
VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.expertise.jeweler"));
this.styles.remove("Jeweler"); this.styles.remove("Jeweler");
} }
} }
@Shadow @Shadow(remap = false)
@Override @Override
public String getName() { public String getName() {
throw new UnsupportedOperationException("Unimplemented method 'getName'"); throw new UnsupportedOperationException("Unimplemented method 'getName'");
} }
@Shadow @Shadow(remap = false)
@Override @Override
protected void reset() { protected void reset() {
throw new UnsupportedOperationException("Unimplemented method 'reset'"); throw new UnsupportedOperationException("Unimplemented method 'reset'");

View file

@ -0,0 +1,50 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.integration.mixin;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import iskallia.vault.skill.expertise.type.JewelExpertise;
import tv.alterNERD.VaultModTweaks.Configuration;
import tv.alterNERD.VaultModTweaks.VaultModTweaks;
import tv.alterNERD.VaultModTweaks.util.I18n;
@Mixin(JewelExpertise.class)
public abstract class MixinJewelExpertise {
@Shadow
private int numberOfFreeCuts;
@Inject(
method = "getNumberOfFreeCuts()I",
at = @At("RETURN"),
cancellable = true,
remap = false
)
private void getNumberOfFreeCuts$return(CallbackInfoReturnable<Integer> ci) {
if (Configuration.JEWELER_ENABLED.get()) {
int cuts = Configuration.JEWELER_FREE_CUTS.get();
VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.jewelcutting.freecuts", cuts));
ci.setReturnValue(cuts);
}
}
}

View file

@ -0,0 +1,42 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.integration.mixin;
import java.util.UUID;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow;
import iskallia.vault.skill.tree.ExpertiseTree;
import iskallia.vault.world.data.PlayerExpertisesData;
import net.minecraft.world.entity.player.Player;
@Mixin(PlayerExpertisesData.class)
public abstract class MixinPlayerExpertisesData {
@Overwrite(remap=false)
ExpertiseTree getExpertises(Player player) {
// SkillContext.of(player)
// something something LearnableSkill.learn(context) auf den Expertise skill für jeweler
return this.getExpertises(player.getUUID());
}
@Shadow(remap=false)
ExpertiseTree getExpertises(UUID uuid) {
return null;
}
}

View file

@ -1,3 +1,20 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.integration.mixin; package tv.alterNERD.VaultModTweaks.integration.mixin;
import java.util.HashMap; import java.util.HashMap;
@ -5,30 +22,55 @@ import java.util.Map;
import java.util.UUID; import java.util.UUID;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import iskallia.vault.init.ModConfigs; import iskallia.vault.init.ModConfigs;
import iskallia.vault.research.ResearchTree; import iskallia.vault.research.ResearchTree;
import iskallia.vault.research.type.Research; import iskallia.vault.research.type.Research;
import iskallia.vault.world.data.PlayerResearchesData; import iskallia.vault.world.data.PlayerResearchesData;
import tv.alterNERD.VaultModTweaks.Configuration; import tv.alterNERD.VaultModTweaks.Configuration;
import tv.alterNERD.VaultModTweaks.VaultModTweaks;
import tv.alterNERD.VaultModTweaks.util.I18n;
/**
* Changes the {@link iskallia.vault.world.data.PlayerResearchesData} class for
* managing the Research data.
*
* Specifically, it makes the fake player used by Applied Energistics for auto
* crafting have all researches available.
*/
@Mixin(PlayerResearchesData.class) @Mixin(PlayerResearchesData.class)
public class MixinPlayerResearchesData { public class MixinPlayerResearchesData {
@Shadow @Shadow(remap = false)
private final Map<UUID, ResearchTree> playerMap = new HashMap<UUID, ResearchTree>(); private final Map<UUID, ResearchTree> playerMap = new HashMap<UUID, ResearchTree>();
@Overwrite(remap = false) private boolean ae2ResearchInjected = false;
public ResearchTree getResearches(UUID uuid) { private static UUID ae2Uuid = UUID.fromString("41c82c87-7afb-4024-ba57-13d2c99cae77");
return this.playerMap.computeIfAbsent(uuid, id -> {
/**
* Generates a {@link iskallia.vault.research.ResearchTree} for the AE2 fake
* player with every research unlocked.
*/
@Inject(
method = "getResearches(Ljava/util/UUID;)Liskallia/vault/research/ResearchTree;",
at = @At("RETURN"),
cancellable = true,
remap = false
)
private void getResearches$return(UUID uuid, CallbackInfoReturnable<ResearchTree> ci) {
if (Configuration.FAKE_PLAYER_FIX.get() && uuid.equals(ae2Uuid) && !this.ae2ResearchInjected) {
VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.ae2research"));
this.playerMap.remove(ae2Uuid);
ResearchTree tree = ResearchTree.empty(); ResearchTree tree = ResearchTree.empty();
if (Configuration.FAKE_PLAYER_FIX.get() && id.equals(UUID.fromString("41c82c87-7afb-4024-ba57-13d2c99cae77"))) {
for (Research research : ModConfigs.RESEARCHES.getAll()) { for (Research research : ModConfigs.RESEARCHES.getAll()) {
tree.research(research); tree.research(research);
} }
this.playerMap.put(ae2Uuid, tree);
this.ae2ResearchInjected = true;
ci.setReturnValue(tree);
} }
return tree;
});
} }
} }

View file

@ -1,3 +1,20 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.integration.mixin; package tv.alterNERD.VaultModTweaks.integration.mixin;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
@ -12,10 +29,19 @@ import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.common.util.FakePlayer;
import tv.alterNERD.VaultModTweaks.Configuration; import tv.alterNERD.VaultModTweaks.Configuration;
import tv.alterNERD.VaultModTweaks.VaultModTweaks;
import tv.alterNERD.VaultModTweaks.util.I18n;
/**
* Changes the {@link iskallia.vault.research.StageManager} class for managing
* everything related to research locks.
*
* Specifically, it actually returns a valid research tree for fake players
* (e.g. Modular routers, AE2 Molecular Assemblers).
*/
@Mixin(StageManager.class) @Mixin(StageManager.class)
public abstract class MixinStageManager { public abstract class MixinStageManager {
@Shadow @Shadow(remap = false)
public static ResearchTree RESEARCH_TREE; public static ResearchTree RESEARCH_TREE;
@Redirect( @Redirect(
@ -27,8 +53,8 @@ public abstract class MixinStageManager {
), ),
remap = false remap = false
) )
private static ResearchTree overrideOnItemCrafted(Player player) { private static ResearchTree onItemCrafted$getResearchTree(Player player) {
return overrideGetResearchTree(player); return getResearchTree$redirect(player);
} }
@Redirect( @Redirect(
@ -40,8 +66,8 @@ public abstract class MixinStageManager {
), ),
remap = false remap = false
) )
private static ResearchTree overrideOnBlockInteraction(Player player) { private static ResearchTree onBlockInteraction$getResearchTree(Player player) {
return overrideGetResearchTree(player); return getResearchTree$redirect(player);
} }
@Redirect( @Redirect(
@ -53,8 +79,8 @@ public abstract class MixinStageManager {
), ),
remap = false remap = false
) )
private static ResearchTree overrideOnItemUse(Player player) { private static ResearchTree onItemUse$getResearchTree(Player player) {
return overrideGetResearchTree(player); return getResearchTree$redirect(player);
} }
@Redirect( @Redirect(
@ -66,17 +92,31 @@ public abstract class MixinStageManager {
), ),
remap = false remap = false
) )
private static ResearchTree overrideOnEntityInteraction(Player player) { private static ResearchTree onEntityInteraction$getResearchTree(Player player) {
return overrideGetResearchTree(player); return getResearchTree$redirect(player);
} }
private static ResearchTree overrideGetResearchTree(Player player) { /**
if (!Configuration.FAKE_PLAYER_FIX.get() && player instanceof FakePlayer) { * Actually returns a working {@link iskallia.vault.research.ResearchTree}
return ResearchTree.empty(); * for fake players.
* @param player
* @return
*/
private static ResearchTree getResearchTree$redirect(Player player) {
ResearchTree tree = ResearchTree.empty();
if (player instanceof FakePlayer) {
if (Configuration.FAKE_PLAYER_FIX.get()) {
// Removed cause very spammy :)
// VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.research.fakeplayerfix", player.getUUID()));
tree = PlayerResearchesData.get((ServerLevel) player.level).getResearches(player);
} }
if (player.level.isClientSide) {
return RESEARCH_TREE;
} }
return PlayerResearchesData.get((ServerLevel)player.level).getResearches(player); else if (player.level.isClientSide) {
tree = RESEARCH_TREE;
}
else {
tree = PlayerResearchesData.get((ServerLevel)player.level).getResearches(player);
}
return tree;
} }
} }

View file

@ -0,0 +1,72 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.integration.mixin;
import java.util.Map;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
import iskallia.vault.gear.data.VaultGearData;
import iskallia.vault.item.tool.ToolType;
import net.minecraft.world.item.ItemStack;
@Mixin(ToolType.class)
public abstract class MixinToolType {
/**
* Accessor mixin for the
* {@link iskallia.vault.item.tool.ToolType.PACKED_TO_TYPE} variable.
*
* @return nothing; this should never be actually called
*/
@Accessor(remap = false)
static Map<Integer, ToolType> getPACKED_TO_TYPE() {
throw new AssertionError();
}
/**
* Makes sure that items with both hammering _and_ reaping are given a
* model.
*
* Sadly there is no way to inject new values into the
* {@link iskallia.vault.item.tool.ToolType} Enum, so they will render as
* if they did not have reaping.
*
* @param stack the item in question
* @param ci CallBackInfo
* @param data local variable
* @param packed local variable
*/
@Inject(
method = "of",
at = @At("RETURN"),
cancellable = true,
locals = LocalCapture.CAPTURE_FAILHARD,
remap = false
)
private static void of$return(ItemStack stack, CallbackInfoReturnable<ToolType> ci, VaultGearData data, int packed) {
// hammering: 8, reaping: 16
if ((packed & 24) == 24) {
ci.setReturnValue(getPACKED_TO_TYPE().get(packed - 16));
}
}
}

View file

@ -0,0 +1,77 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.integration.mixin;
import java.util.Collection;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import iskallia.vault.block.TransmogTableBlock;
import iskallia.vault.dynamodel.model.armor.ArmorPieceModel;
import iskallia.vault.init.ModDynamicModels.Armor;
import iskallia.vault.init.ModDynamicModels.Axes;
import iskallia.vault.init.ModDynamicModels.Swords;
import iskallia.vault.patreon.PatreonManager;
import iskallia.vault.patreon.PatreonPlayerData;
import iskallia.vault.patreon.PatreonTier;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.player.Player;
import tv.alterNERD.VaultModTweaks.Configuration;
/**
* Changes the {@link iskallia.vault.block.TransmogTableBlock} class for
* managing the Transmog Table.
*
* Specifically, unlocks Patreon transmogs.
*/
@Mixin(TransmogTableBlock.class)
public abstract class MixinTransmogTableBlock {
/***
* Injects some new Goblin / Champion tier patrons into the transmogajigga
* thing.
*
* @param player
* @param discoveredModelIds
* @param modelId
*/
@Overwrite(remap = false)
public static boolean canTransmogModel(Player player, Collection<ResourceLocation> discoveredModelIds, ResourceLocation modelId) {
long id = player.getUUID().getMostSignificantBits() ^ player.getUUID().getLeastSignificantBits();
String name = player.getName().getString();
PatreonPlayerData data = PatreonManager.getInstance().getPlayerData(player.getUUID());
return (Boolean)Armor.PIECE_REGISTRY.get(modelId).map(ArmorPieceModel::getArmorModel).map((armorModel) -> {
if (armorModel.equals(Armor.CHAMPION)) {
return data.isAtLeastTier(PatreonTier.CHAMPION) || Configuration.CHAMPIONS.get().contains(name);
} else if (armorModel.equals(Armor.GOBLIN)) {
return data.isAtLeastTier(PatreonTier.GOBLIN) || Configuration.GOBLINS.get().contains(name) || Configuration.CHAMPIONS.get().contains(name);
} else {
return null;
}
}).or(() -> {
return Swords.REGISTRY.get(modelId).map((model) -> {
return model.equals(Swords.GODSWORD) ? data.isAtLeastTier(PatreonTier.CHAMPION) || Configuration.CHAMPIONS.get().contains(name) : null;
});
}).or(() -> {
return Axes.REGISTRY.get(modelId).map((model) -> {
return model.equals(Axes.GODAXE) ? data.isAtLeastTier(PatreonTier.CHAMPION) || Configuration.CHAMPIONS.get().contains(name) : null;
});
}).orElseGet(() -> {
return discoveredModelIds.contains(modelId);
});
}
}

View file

@ -1,3 +1,20 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.integration.mixin; package tv.alterNERD.VaultModTweaks.integration.mixin;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
@ -8,29 +25,44 @@ import iskallia.vault.config.UnidentifiedRelicFragmentsConfig;
import iskallia.vault.util.data.WeightedList; import iskallia.vault.util.data.WeightedList;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import tv.alterNERD.VaultModTweaks.Configuration; import tv.alterNERD.VaultModTweaks.Configuration;
import tv.alterNERD.VaultModTweaks.VaultModTweaks;
import tv.alterNERD.VaultModTweaks.util.I18n;
/**
* Changes the {@link iskallia.vault.config.UnidentifiedRelicFragmentsConfig}
* class for managing the relic fragment configuration.
*
* Specifically, fixes the weight for rolling #5 fragments.
*/
@Mixin(UnidentifiedRelicFragmentsConfig.class) @Mixin(UnidentifiedRelicFragmentsConfig.class)
public abstract class MixinUnidentifiedRelicFragmentsConfig extends Config { public abstract class MixinUnidentifiedRelicFragmentsConfig extends Config {
@Shadow @Shadow(remap = false)
private WeightedList<ResourceLocation> fragments; private WeightedList<ResourceLocation> fragments;
/**
* Dynamically sets all fragment weights to the same (2) when the
* configuration is loaded.
*
* @param oldConfigInstance
*/
@Override @Override
public void onLoad(Config oldConfigInstance) { public void onLoad(Config oldConfigInstance) {
super.onLoad(oldConfigInstance); super.onLoad(oldConfigInstance);
if (Configuration.FRAGMENT_WEIGHT_FIX.get()) { if (Configuration.FRAGMENT_WEIGHT_FIX.get()) {
VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.relicfragments"));
for (WeightedList.Entry<ResourceLocation> item : fragments) { for (WeightedList.Entry<ResourceLocation> item : fragments) {
item.weight = 2; item.weight = 2;
} }
} }
} }
@Shadow @Shadow(remap = false)
@Override @Override
public String getName() { public String getName() {
throw new UnsupportedOperationException("Unimplemented method 'getName'"); throw new UnsupportedOperationException("Unimplemented method 'getName'");
} }
@Shadow @Shadow(remap = false)
@Override @Override
protected void reset() { protected void reset() {
throw new UnsupportedOperationException("Unimplemented method 'reset'"); throw new UnsupportedOperationException("Unimplemented method 'reset'");

View file

@ -1,3 +1,20 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.integration.mixin; package tv.alterNERD.VaultModTweaks.integration.mixin;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
@ -19,14 +36,33 @@ import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.phys.BlockHitResult; import net.minecraft.world.phys.BlockHitResult;
import tv.alterNERD.VaultModTweaks.Configuration; import tv.alterNERD.VaultModTweaks.Configuration;
import tv.alterNERD.VaultModTweaks.VaultModTweaks;
import tv.alterNERD.VaultModTweaks.util.I18n;
/**
* Changes the {@link iskallia.vault.block.VaultAltarBlock} class.
*
* Specifically, allows fake players to place Vault Rocks on it.
*/
@Mixin(VaultAltarBlock.class) @Mixin(VaultAltarBlock.class)
public class MixinVaultAltarBlock { public class MixinVaultAltarBlock {
@Shadow @Shadow(remap = false)
private VaultAltarTileEntity getAltarTileEntity(Level world, BlockPos pos) { private VaultAltarTileEntity getAltarTileEntity(Level world, BlockPos pos) {
throw new UnsupportedOperationException("Unimplemented method 'getAltarTileEntity'"); throw new UnsupportedOperationException("Unimplemented method 'getAltarTileEntity'");
} }
/**
* Actually allows fake players to interact with the Vault Altar block if
* they are holding a Vault Rock in their main hand.
*
* @param state
* @param world
* @param pos
* @param player
* @param hand
* @param hit
* @param ci
*/
@Inject( @Inject(
method = "use", method = "use",
at = @At( at = @At(
@ -35,13 +71,14 @@ public class MixinVaultAltarBlock {
), ),
cancellable = true cancellable = true
) )
private void onUse(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit, CallbackInfoReturnable<InteractionResult> ci) { private void use$return(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit, CallbackInfoReturnable<InteractionResult> ci) {
if (Configuration.ROUTER_VAULTAR_FIX.get() && !world.isClientSide && hand == InteractionHand.MAIN_HAND && player instanceof ServerPlayer) { if (Configuration.ROUTER_VAULTAR_FIX.get() && !world.isClientSide && hand == InteractionHand.MAIN_HAND && player instanceof ServerPlayer) {
ServerPlayer serverPlayer = (ServerPlayer)player; ServerPlayer serverPlayer = (ServerPlayer)player;
ItemStack heldItem = player.getMainHandItem(); ItemStack heldItem = player.getMainHandItem();
VaultAltarTileEntity altar = this.getAltarTileEntity(world, pos); VaultAltarTileEntity altar = this.getAltarTileEntity(world, pos);
if (altar.getAltarState() == VaultAltarTileEntity.AltarState.IDLE) { if (altar.getAltarState() == VaultAltarTileEntity.AltarState.IDLE) {
if (heldItem.getItem() == ModItems.VAULT_ROCK) { if (heldItem.getItem() == ModItems.VAULT_ROCK) {
VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.vaultar.rock"));
ci.setReturnValue(altar.onAddVaultRock(serverPlayer, heldItem)); ci.setReturnValue(altar.onAddVaultRock(serverPlayer, heldItem));
} }
} }

View file

@ -1,3 +1,20 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.integration.mixin; package tv.alterNERD.VaultModTweaks.integration.mixin;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
@ -8,28 +25,44 @@ import com.google.gson.annotations.Expose;
import iskallia.vault.config.Config; import iskallia.vault.config.Config;
import iskallia.vault.config.VaultAltarConfig; import iskallia.vault.config.VaultAltarConfig;
import tv.alterNERD.VaultModTweaks.Configuration; import tv.alterNERD.VaultModTweaks.Configuration;
import tv.alterNERD.VaultModTweaks.VaultModTweaks;
import tv.alterNERD.VaultModTweaks.util.I18n;
/**
* Changes the {@link iskallia.vault.config.VaultAltarConfig} class for
* managing the Vault Altar configuration.
*
* Specifically, it changes the infusion time.
*/
@Mixin(VaultAltarConfig.class) @Mixin(VaultAltarConfig.class)
public abstract class MixinVaultAltarConfig extends Config { public abstract class MixinVaultAltarConfig extends Config {
@Shadow @Shadow(remap = false)
@Expose @Expose
public int INFUSION_TIME; public int INFUSION_TIME;
/**
* Overrides the default Vault Altar infusion time whenever the config is
* loaded.
*
* @param oldConfigInstance
*/
@Override @Override
protected void onLoad(Config oldConfigInstance) { protected void onLoad(Config oldConfigInstance) {
super.onLoad(oldConfigInstance); super.onLoad(oldConfigInstance);
if (Configuration.VAULTAR_ENABLED.get()) { if (Configuration.VAULTAR_ENABLED.get()) {
this.INFUSION_TIME = Configuration.VAULTAR_INFUSION_TIME.get(); int time = Configuration.VAULTAR_INFUSION_TIME.get();
VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.vaultar.infusion", time));
this.INFUSION_TIME = time;
} }
} }
@Shadow @Shadow(remap = false)
@Override @Override
public String getName() { public String getName() {
throw new UnsupportedOperationException("Unimplemented method 'getName'"); throw new UnsupportedOperationException("Unimplemented method 'getName'");
} }
@Shadow @Shadow(remap = false)
@Override @Override
protected void reset() { protected void reset() {
throw new UnsupportedOperationException("Unimplemented method 'reset'"); throw new UnsupportedOperationException("Unimplemented method 'reset'");

View file

@ -1,3 +1,20 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.integration.mixin; package tv.alterNERD.VaultModTweaks.integration.mixin;
import java.util.HashMap; import java.util.HashMap;
@ -8,31 +25,49 @@ import org.spongepowered.asm.mixin.Shadow;
import iskallia.vault.config.Config; import iskallia.vault.config.Config;
import iskallia.vault.config.VaultCharmConfig; import iskallia.vault.config.VaultCharmConfig;
import tv.alterNERD.VaultModTweaks.Configuration; import tv.alterNERD.VaultModTweaks.Configuration;
import tv.alterNERD.VaultModTweaks.VaultModTweaks;
import tv.alterNERD.VaultModTweaks.util.I18n;
/**
* Changes the {@link iskallia.vault.config.VaultCharmConfig} class for
* managing the Junk Management configuration.
*
* Specifically, it changes the multiplier for the Vault Junk Upgrades.
*/
@Mixin(VaultCharmConfig.class) @Mixin(VaultCharmConfig.class)
public abstract class MixinVaultCharmConfig extends Config { public abstract class MixinVaultCharmConfig extends Config {
@Shadow @Shadow(remap = false)
private HashMap<Integer, Integer> tierMultipliers; private HashMap<Integer, Integer> tierMultipliers;
/**
* Overrides the Vault Junk Upgrade multipliers whenever they are loaded.
*
* @param oldConfigInstance
*/
@Override @Override
protected void onLoad(Config oldConfigInstance) { protected void onLoad(Config oldConfigInstance) {
super.onLoad(oldConfigInstance); super.onLoad(oldConfigInstance);
if (Configuration.JUNKMGMT_ENABLED.get()) { if (Configuration.JUNKMGMT_ENABLED.get()) {
int t1 = Configuration.JUNKMGMT_T1.get();
int t2 = Configuration.JUNKMGMT_T2.get();
int t3 = Configuration.JUNKMGMT_T3.get();
int t4 = Configuration.JUNKMGMT_T4.get();
VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.junkmgmt.upgrades", t1, t2, t3, t4));
tierMultipliers = new HashMap<Integer, Integer>(4); tierMultipliers = new HashMap<Integer, Integer>(4);
tierMultipliers.put(1, Configuration.JUNKMGMT_T1.get()); tierMultipliers.put(1, t1);
tierMultipliers.put(2, Configuration.JUNKMGMT_T2.get()); tierMultipliers.put(2, t2);
tierMultipliers.put(3, Configuration.JUNKMGMT_T3.get()); tierMultipliers.put(3, t3);
tierMultipliers.put(4, Configuration.JUNKMGMT_T4.get()); tierMultipliers.put(4, t4);
} }
} }
@Shadow @Shadow(remap = false)
@Override @Override
public String getName() { public String getName() {
throw new UnsupportedOperationException("Unimplemented method 'getName'"); throw new UnsupportedOperationException("Unimplemented method 'getName'");
} }
@Shadow @Shadow(remap = false)
@Override @Override
protected void reset() { protected void reset() {
throw new UnsupportedOperationException("Unimplemented method 'reset'"); throw new UnsupportedOperationException("Unimplemented method 'reset'");

View file

@ -0,0 +1,59 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.integration.mixin;
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;
import iskallia.vault.config.gear.VaultGearEnchantmentConfig;
import iskallia.vault.util.EnchantmentCost;
import iskallia.vault.util.EnchantmentEntry;
import tv.alterNERD.VaultModTweaks.Configuration;
import tv.alterNERD.VaultModTweaks.VaultModTweaks;
import tv.alterNERD.VaultModTweaks.util.I18n;
/**
* Changes the {@link iskallia.vault.config.gear.VaultGearEnchantmentConfig}
* class used by the Vault Enchanter.
*
* Specifically, it removes the cost of enchantments. Just because I cannot be
* arsed to bring Emeralds over every time.
*/
@Mixin(VaultGearEnchantmentConfig.class)
public class MixinVaultGearEnchantmentConfig {
/**
* Removes the cost from all Vault Enchanter enchantments.
*
* @param entry
*/
@Inject(
method = "getCost",
at = @At("RETURN"),
cancellable = true,
remap = false
)
private void readJsonCallback(EnchantmentEntry entry, CallbackInfoReturnable<EnchantmentCost> ci) {
if (Configuration.ENCHANTS_FORFREE.get()) {
VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.enchanter.forfree"));
ci.setReturnValue(EnchantmentCost.EMPTY);
}
}
}

View file

@ -1,3 +1,20 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.integration.mixin; package tv.alterNERD.VaultModTweaks.integration.mixin;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
@ -7,31 +24,55 @@ import iskallia.vault.config.Config;
import iskallia.vault.config.VaultJewelCuttingConfig; import iskallia.vault.config.VaultJewelCuttingConfig;
import iskallia.vault.config.VaultJewelCuttingConfig.JewelCuttingRange; import iskallia.vault.config.VaultJewelCuttingConfig.JewelCuttingRange;
import tv.alterNERD.VaultModTweaks.Configuration; import tv.alterNERD.VaultModTweaks.Configuration;
import tv.alterNERD.VaultModTweaks.VaultModTweaks;
import tv.alterNERD.VaultModTweaks.util.I18n;
/**
* Changes the {@link iskallia.vault.config.VaultJewelCuttingConfig} class for
* managing the Jewel Cutting Station configuration.
*
* Specifically, it changes the minimum and maximum size change and the chance
* of failure.
*/
@Mixin(VaultJewelCuttingConfig.class) @Mixin(VaultJewelCuttingConfig.class)
public abstract class MixinVaultJewelCuttingConfig extends Config { public abstract class MixinVaultJewelCuttingConfig extends Config {
@Shadow @Shadow(remap = false)
private float jewelCuttingModifierRemovalChance; private float jewelCuttingModifierRemovalChance;
@Shadow @Shadow(remap = false)
private JewelCuttingRange jewelCuttingRange; private JewelCuttingRange jewelCuttingRange;
/**
* Changes the minimum and maximum size change and the chance of failure
* whenever the configuration is loaded.
*
* @param oldConfigInstance
*/
@Override @Override
protected void onLoad(Config oldConfigInstance) { protected void onLoad(Config oldConfigInstance) {
super.onLoad(oldConfigInstance); super.onLoad(oldConfigInstance);
if (Configuration.JEWELER_ENABLED.get()) { if (Configuration.JEWELER_ENABLED.get()) {
this.jewelCuttingModifierRemovalChance = Configuration.JEWELER_CHANCE.get().floatValue(); float chance = Configuration.JEWELER_CHANCE.get().floatValue();
this.jewelCuttingRange = new JewelCuttingRange(Configuration.JEWELS_MIN.get(), Configuration.JEWELS_MAX.get()); VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.jewelcutting.failurechance", chance));
this.jewelCuttingModifierRemovalChance = chance;
}
if (Configuration.JEWELS_ENABLED.get()) {
int min = Configuration.JEWELS_MIN.get();
int max = Configuration.JEWELS_MAX.get();
VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.jewelcutting.sizes", min, max));
this.jewelCuttingRange = new JewelCuttingRange(min, max);
} }
} }
@Shadow @Shadow(remap = false)
@Override @Override
public String getName() { public String getName() {
throw new UnsupportedOperationException("Unimplemented method 'getName'"); throw new UnsupportedOperationException("Unimplemented method 'getName'");
} }
@Shadow @Shadow(remap = false)
@Override @Override
protected void reset() { protected void reset() {
throw new UnsupportedOperationException("Unimplemented method 'reset'"); throw new UnsupportedOperationException("Unimplemented method 'reset'");

View file

@ -1,3 +1,20 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.integration.mixin; package tv.alterNERD.VaultModTweaks.integration.mixin;
import java.util.ArrayList; import java.util.ArrayList;
@ -10,28 +27,46 @@ import com.google.gson.annotations.Expose;
import iskallia.vault.config.Config; import iskallia.vault.config.Config;
import iskallia.vault.config.VaultPortalConfig; import iskallia.vault.config.VaultPortalConfig;
import tv.alterNERD.VaultModTweaks.Configuration;
/**
* Changes the {@link iskallia.vault.config.VaultPortalConfig} class for
* managing the Vault Portal configuration.
*
* Specifically, it allows making a portal out of Modular Routers Template
* Frame Blocks.
*/
@Mixin(VaultPortalConfig.class) @Mixin(VaultPortalConfig.class)
public abstract class MixinVaultPortalConfig extends Config { public abstract class MixinVaultPortalConfig extends Config {
@Shadow @Shadow(remap = false)
@Expose @Expose
public String[] VALID_BLOCKS; public String[] VALID_BLOCKS;
/**
* Adds Template Frame Blocks to the list of valid Vault Portal blocks
* whenever it is loaded.
*
* @param oldConfigInstance
*/
@Override @Override
protected void onLoad(Config oldConfigInstance) { protected void onLoad(Config oldConfigInstance) {
super.onLoad(oldConfigInstance); super.onLoad(oldConfigInstance);
if (Configuration.PORTAL_BLOCKS_ENABLED.get()) {
ArrayList<String> list = new ArrayList<String>(Arrays.asList(VALID_BLOCKS)); ArrayList<String> list = new ArrayList<String>(Arrays.asList(VALID_BLOCKS));
list.add("modularrouters:template_frame"); for (String block : Configuration.PORTAL_BLOCKS.get()) {
list.add(block);
}
VALID_BLOCKS = list.toArray(VALID_BLOCKS); VALID_BLOCKS = list.toArray(VALID_BLOCKS);
} }
}
@Shadow @Shadow(remap = false)
@Override @Override
public String getName() { public String getName() {
throw new UnsupportedOperationException("Unimplemented method 'getName'"); throw new UnsupportedOperationException("Unimplemented method 'getName'");
} }
@Shadow @Shadow(remap = false)
@Override @Override
protected void reset() { protected void reset() {
throw new UnsupportedOperationException("Unimplemented method 'reset'"); throw new UnsupportedOperationException("Unimplemented method 'reset'");

View file

@ -0,0 +1,48 @@
/**
* Copyright 2023 alterNERDtive.
*
* This file is part of Vault Mod Tweaks.
*
* Vault Mod Tweaks is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vault Mod Tweaks is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with Vault Mod Tweaks. If not, see <https://www.gnu.org/licenses/>.
*/
package tv.alterNERD.VaultModTweaks.util;
import net.minecraft.network.chat.TranslatableComponent;
/**
* Provides a shorthand for getting localized {@link java.lang.String}s from
* Minecrafts {@link net.minecraft.network.chat.TranslatableComponent}s.
*/
public class I18n {
/**
* Provides the localized {@link java.lang.String} to a given key.
*
* @param key The key
* @return The localized {@link java.lang.String}
*/
public static String get(String key) {
return new TranslatableComponent(key).getString();
}
/**
* Provides the localized {@link java.lang.String} to a given key and
* arguments.
*
* @param key The key
* @param args The arguments used for String formatting
* @return The localized {@link java.lang.String}
*/
public static String get(String key, Object... args) {
return new TranslatableComponent(key, args).getString();
}
}

View file

@ -35,6 +35,6 @@ There are some bug fixes and a lot of QoL and balance changes. See https://git.a
[[dependencies.the_vault_tweaks]] [[dependencies.the_vault_tweaks]]
modId="the_vault" modId="the_vault"
mandatory=true mandatory=true
versionRange="[1.18.2-3.8.0.2246]" versionRange="[1.18.2-3.11.0.3011]"
ordering="AFTER" ordering="AFTER"
side="BOTH" side="BOTH"

View file

@ -0,0 +1,4 @@
{
"the_vault_tweaks.log.inject.ae2research": "Füge Forschung für den AE2 fake player ein …",
"the_vault_tweaks.log.inject.buddingcrystal": "Füge Einstellungen für den Budding Crystal ein …"
}

View file

@ -1,9 +1,31 @@
{ {
"the_vault_tweaks.log.inject.ae2research": "Injecting research for AE2 fake player …",
"the_vault_tweaks.log.inject.buddingcrystal": "Injecting Budding Crystal settings …",
"the_vault_tweaks.log.inject.conduit.energy": "Injecting fixed Altar Conduit energy usage for AE2 …",
"the_vault_tweaks.log.inject.enchanter.forfree": "Removing Emerald cost from Vault Enchanter …",
"the_vault_tweaks.log.inject.expertise.fortunate": "Removing Fortunate expertise …",
"the_vault_tweaks.log.inject.expertise.jeweler": "Removing Jeweler expertise …",
"the_vault_tweaks.log.inject.fortune.level": "Injecting maximum Fortune level: %1$d …",
"the_vault_tweaks.log.inject.fortune.valid": "Overwriting validity check for Fortune …",
"the_vault_tweaks.log.inject.jewelcutting.failurechance": "Injecting jewel cutting failure chance: %1$.2f …",
"the_vault_tweaks.log.inject.jewelcutting.freecuts": "Injecting free jewel cuts: %1$d …",
"the_vault_tweaks.log.inject.jewelcutting.sizes": "Injecting jewel cutting size values: %1$d%2$d …",
"the_vault_tweaks.log.inject.junkmgmt.upgrades": "Injecting Vault Junk Upgrade multipliers: %1$d, %2$d, %3$d, %4$d …",
"the_vault_tweaks.log.inject.relicfragments": "Balancing relic fragment weights …",
"the_vault_tweaks.log.inject.research.fakeplayerfix": "Returning valid research tree for fake player with UUID %1s …",
"the_vault_tweaks.log.inject.vaultar.infusion": "Injecting Vault Altar infusion time: %1$ds …",
"the_vault_tweaks.log.inject.vaultar.rock": "Injecting fake player interaction with Vault Altar …",
"the_vault_tweaks.log.config.reloadvaultconfig": "Config has changed, reloading Vault Mod configs …",
"block.minecraft.andesite": "Andesite", "block.minecraft.andesite": "Andesite",
"block.minecraft.polished_andesite": "Polished Andesite", "block.minecraft.polished_andesite": "Polished Andesite",
"block.minecraft.andesite_stairs": "Andesite Stairs", "block.minecraft.andesite_stairs": "Andesite Stairs",
"block.minecraft.polished_andesite_stairs": "Polished Andesite Stairs", "block.minecraft.polished_andesite_stairs": "Polished Andesite Stairs",
"block.minecraft.andesite_slab": "Andesite Slab", "block.minecraft.andesite_slab": "Andesite Slab",
"block.minecraft.polished_andesite_slab": "Polished Andesite Slab", "block.minecraft.polished_andesite_slab": "Polished Andesite Slab",
"block.minecraft.andesite_wall": "Andesite Wall" "block.minecraft.andesite_wall": "Andesite Wall",
"slurry.crafttweaker.the_vault_clean_chromatic_iron_slurry": "Clean Chromatic Iron Slurry",
"slurry.crafttweaker.the_vault_dirty_chromatic_iron_slurry": "Dirty Chromatic Iron Slurry"
} }

View file

@ -0,0 +1,35 @@
{
"replace": false,
"values": [
"the_vault:ancient_copper_block",
"the_vault:ancient_copper_ingot",
"the_vault:gilded_block",
"the_vault:gilded_ingot",
"the_vault:gilded_sconce",
"the_vault:living_rock",
"the_vault:living_rock_block_cobble",
"the_vault:mossy_bone",
"the_vault:mossy_bone_block",
"the_vault:ornate_block",
"the_vault:ornate_chain",
"the_vault:ornate_ingot",
"the_vault:overgrown_wooden_chunk",
"the_vault:overgrown_wooden_log",
"the_vault:overgrown_wooden_planks",
"the_vault:rotten_meat",
"the_vault:rotten_meat_block",
"the_vault:sandy_block",
"the_vault:sandy_rocks",
"the_vault:soot",
"the_vault:topaz_block",
"the_vault:topaz_shard",
"the_vault:vault_moss",
"the_vault:vault_sweets",
"the_vault:vault_sweets_block",
"the_vault:velvet",
"the_vault:velvet_block",
"the_vault:wooden_chunk",
"the_vault:wooden_planks",
"the_vault:wooden_log"
]
}

View file

@ -1,18 +1,24 @@
{ {
"required": true, "required": true,
"require": 1,
"package": "tv.alterNERD.VaultModTweaks.integration.mixin", "package": "tv.alterNERD.VaultModTweaks.integration.mixin",
"compatibilityLevel": "JAVA_17", "compatibilityLevel": "JAVA_17",
"refmap": "mixins.the_vault_tweaks.refmap.json", "refmap": "mixins.the_vault_tweaks.refmap.json",
"mixins": [ "mixins": [
"IMixinVaultAltarIngredientsConfig",
"MixinCrystalBuddingConfig", "MixinCrystalBuddingConfig",
"MixinEnchantmentEntry", "MixinEnchantmentEntry",
"MixinExpertisesGuiConfig", "MixinExpertisesGuiConfig",
"MixinJewelExpertise",
"MixinPlayerResearchesData", "MixinPlayerResearchesData",
"MixinStageManager", "MixinStageManager",
"MixinToolType",
"MixinTransmogTableBlock",
"MixinUnidentifiedRelicFragmentsConfig", "MixinUnidentifiedRelicFragmentsConfig",
"MixinVaultAltarBlock", "MixinVaultAltarBlock",
"MixinVaultAltarConfig", "MixinVaultAltarConfig",
"MixinVaultCharmConfig", "MixinVaultCharmConfig",
"MixinVaultGearEnchantmentConfig",
"MixinVaultJewelCuttingConfig", "MixinVaultJewelCuttingConfig",
"MixinVaultPortalConfig" "MixinVaultPortalConfig"
], ],

7
version.properties Normal file
View file

@ -0,0 +1,7 @@
#Sun Nov 19 15:47:56 CET 2023
MAJOR=3
MINOR=13
PATCH=0
PRE_RELEASE=
BUILD=-1
CODE=1