Compare commits
100 commits
release/3.
...
release
Author | SHA1 | Date | |
---|---|---|---|
75a4b232ed | |||
dad4c9e637 | |||
3b396dfec3 | |||
895ac522d4 | |||
|
f2051de488 | ||
|
56c50c21f3 | ||
|
3403f7060c | ||
|
c249cdf432 | ||
e2f88e025f | |||
78e9cfa1af | |||
1c1dfdf311 | |||
279f5d9075 | |||
978d6532f3 | |||
e47ac6c54b | |||
5ff77edd71 | |||
178230a9b6 | |||
8eb9b8b509 | |||
9da664ac78 | |||
7dacc559a8 | |||
409eed99c4 | |||
4c49d3ed2a | |||
bc0d5110cb | |||
8611b209e2 | |||
6e6d53560a | |||
597d6397b3 | |||
2e70ead3a1 | |||
5b4e2bb40f | |||
d2b64f7eb5 | |||
7f3f5bb2b2 | |||
85e3021af1 | |||
1d3a425c3f | |||
|
8ddab808a4 | ||
|
318848c220 | ||
2f560e802b | |||
e29be7bad5 | |||
870f870653 | |||
0a60a0bdfb | |||
fd8f5b399b | |||
76b794b14d | |||
319c3e5cdf | |||
4116287f00 | |||
8c074239af | |||
ff6cd430f2 | |||
9f8da672b1 | |||
6512902bb1 | |||
66caf42f2d | |||
69621dae83 | |||
1b01e365f4 | |||
d318cba9d1 | |||
fe7ceb5134 | |||
efdc4e4ab7 | |||
d8b1a63be6 | |||
f963ac2802 | |||
d4c8da78a1 | |||
e47c36c36b | |||
1b28b75e62 | |||
d5ba90f210 | |||
e280efdaf9 | |||
c71da805e5 | |||
fec2a3460e | |||
b8570b5b36 | |||
2ce1c63111 | |||
d70cd09b42 | |||
da06973b36 | |||
30ae345c6a | |||
98a587518e | |||
cafd733018 | |||
84c7529379 | |||
066d3080ba | |||
21da807b89 | |||
f201b2d37f | |||
1a73a83bb2 | |||
87d7cfb0ca | |||
464a941ad0 | |||
b937cfb113 | |||
273cf31b49 | |||
c8fc378ecf | |||
9ad686d667 | |||
55650370f1 | |||
32a0e424e5 | |||
ce9b636688 | |||
eb4664d952 | |||
b03801e186 | |||
570028c972 | |||
07f3d9b4e3 | |||
af2022d00c | |||
8aa9578425 | |||
9c30bdc09e | |||
5d49c055d1 | |||
0b3b86b911 | |||
7e1668ab4c | |||
233095c389 | |||
d3c636a990 | |||
7a542baaa5 | |||
0a5c6bdefa | |||
fbf3961220 | |||
b9d0db5936 | |||
46ca11afad | |||
eff1c086a9 | |||
f367b73b0d |
60 changed files with 1266 additions and 199 deletions
2
.github/workflows/auto-pull-request.yaml
vendored
2
.github/workflows/auto-pull-request.yaml
vendored
|
@ -12,7 +12,7 @@ jobs:
|
|||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: pull-request-action
|
||||
uses: vsoch/pull-request-action@1.0.24
|
||||
uses: vsoch/pull-request-action@1.1.0
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
PULL_REQUEST_BRANCH: "develop"
|
||||
|
|
6
.github/workflows/create-release.yaml
vendored
6
.github/workflows/create-release.yaml
vendored
|
@ -1,4 +1,4 @@
|
|||
name: Create release on tag push
|
||||
name: Create release on tag push
|
||||
|
||||
on:
|
||||
push:
|
||||
|
@ -14,10 +14,10 @@ jobs:
|
|||
|
||||
steps:
|
||||
- name: Checkout source code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup Gradle
|
||||
uses: gradle/gradle-build-action@v2
|
||||
uses: gradle/gradle-build-action@v3
|
||||
|
||||
- name: Run build with Gradle Wrapper
|
||||
run: chmod +x ./gradlew && ./gradlew build
|
||||
|
|
12
.github/workflows/publish-to-curseforge.yaml
vendored
12
.github/workflows/publish-to-curseforge.yaml
vendored
|
@ -1,4 +1,4 @@
|
|||
name: Publish to Curseforge on release
|
||||
name: Publish to Curseforge on release
|
||||
|
||||
on:
|
||||
release:
|
||||
|
@ -15,7 +15,12 @@ jobs:
|
|||
- 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
|
||||
|
@ -24,7 +29,10 @@ jobs:
|
|||
curseforge-id: 877136
|
||||
curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }}
|
||||
|
||||
files: *.jar
|
||||
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 }}
|
||||
|
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -13,6 +13,9 @@ out
|
|||
*.iml
|
||||
.idea
|
||||
|
||||
# jdk
|
||||
jdk-17.0.2
|
||||
|
||||
# gradle
|
||||
build
|
||||
.gradle
|
||||
|
|
83
CHANGELOG.md
83
CHANGELOG.md
|
@ -1,3 +1,86 @@
|
|||
# 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.
|
||||
|
|
51
README.md
51
README.md
|
@ -2,26 +2,43 @@
|
|||
|
||||
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.
|
||||
|
||||
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 expertise reset after installing this mod.
|
||||
## Configuration
|
||||
|
||||
## Fixes
|
||||
The mod is configured via a server configuration file. To change settings, do the following:
|
||||
|
||||
* Removed the “Andersite” “joke”
|
||||
* ~~Removed call to a colour handling event that is called several thousand times per second; gives a noticeable performance boost, but turns jewels and unidentified items white~~ use <https://github.com/radimous/FastVaultGear>
|
||||
* 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
|
||||
* Altar Conduit now draws the correct amount of power when connected to AE2
|
||||
1. Create a new world and load into it / start your server.
|
||||
2. Close the world again / stop your server.
|
||||
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).
|
||||
4. Change accordingly. The file is heavily commented.
|
||||
|
||||
## Changes
|
||||
Bug fixes are enabled, balance changes disabled by default.
|
||||
|
||||
* Removed Emerald 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
|
||||
## Bug Fixes
|
||||
|
||||
* 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.
|
||||
|
||||
## 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 1–10 size reduction to 3–10
|
||||
* Jewel cutting buffed from 1–10 size reduction to 3–10.
|
||||
* Added support for Reaping jewels (you still cannot obtain those without commands or config changes!).
|
||||
|
|
22
build.gradle
22
build.gradle
|
@ -24,9 +24,9 @@ apply plugin: 'eu.davidea.grabver'
|
|||
versioning {
|
||||
// Required (number)
|
||||
major 3
|
||||
minor 10
|
||||
minor 13
|
||||
// Optional, force custom patch (number)
|
||||
patch 1
|
||||
patch 0
|
||||
// Optional (any string)
|
||||
//preRelease "RC1"
|
||||
// Optional, custom task name to trigger the increase of the version
|
||||
|
@ -186,22 +186,30 @@ dependencies {
|
|||
// 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.
|
||||
// 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'
|
||||
|
||||
implementation fg.deobf('curse.maven:vault-hunters-official-mod-458203:4570130')
|
||||
implementation fg.deobf('curse.maven:vault-integrations-867003:4570137')
|
||||
implementation fg.deobf("curse.maven:refined-storage-243076:3712882")
|
||||
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
|
||||
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
|
||||
implementation fg.deobf("curse.maven:lazydfu-433518:3209972")
|
||||
implementation fg.deobf("curse.maven:modernfix-790626:4593891")
|
||||
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
|
||||
// compileOnly fg.deobf("mezz.jei:jei-${mc_version}:${jei_version}:api") // Adds JEI API as a compile dependency
|
||||
|
@ -261,6 +269,8 @@ javadoc {
|
|||
mixin {
|
||||
add sourceSets.main, 'mixins.the_vault_tweaks.refmap.json'
|
||||
config 'mixins.the_vault_tweaks.json'
|
||||
// AP settings
|
||||
disableOverwriteChecker = true
|
||||
}
|
||||
|
||||
task sourcesJar(type: Jar, dependsOn: classes) {
|
||||
|
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"#the_vault:altar_requirements/misc/90"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:wither_rose"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:iron_ingot",
|
||||
"minecraft:copper_ingot",
|
||||
"minecraft:coal",
|
||||
"minecraft:charcoal"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:glowstone_dust",
|
||||
"minecraft:quartz",
|
||||
"minecraft:name_tag"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:sponge",
|
||||
"minecraft:nether_star",
|
||||
"minecraft:trident"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:stick"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:phantom_membrane"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:cobblestone",
|
||||
"minecraft:diorite",
|
||||
"minecraft:andesite",
|
||||
"minecraft:granite",
|
||||
"minecraft:dirt"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
{
|
||||
"replace": false,
|
||||
"values": [
|
||||
"minecraft:blue_ice",
|
||||
"minecraft:crimson_stem",
|
||||
"minecraft:warped_stem",
|
||||
"minecraft:crying_obsidian",
|
||||
"minecraft:calcite",
|
||||
"minecraft:rooted_dirt"
|
||||
]
|
||||
}
|
|
@ -17,10 +17,15 @@
|
|||
*/
|
||||
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.BooleanValue;
|
||||
import net.minecraftforge.common.ForgeConfigSpec.DoubleValue;
|
||||
import net.minecraftforge.common.ForgeConfigSpec.IntValue;
|
||||
import net.minecraftforge.registries.ForgeRegistries;
|
||||
import net.minecraftforge.common.ForgeConfigSpec.Builder;
|
||||
import net.minecraftforge.common.ForgeConfigSpec.ConfigValue;
|
||||
|
||||
|
@ -35,6 +40,7 @@ public class Configuration {
|
|||
|
||||
public static BooleanValue JEWELER_ENABLED;
|
||||
public static DoubleValue JEWELER_CHANCE;
|
||||
public static IntValue JEWELER_FREE_CUTS;
|
||||
|
||||
public static BooleanValue JEWELS_ENABLED;
|
||||
public static IntValue JEWELS_SIZE;
|
||||
|
@ -48,12 +54,12 @@ public class Configuration {
|
|||
public static BooleanValue VAULTAR_ENABLED;
|
||||
public static IntValue VAULTAR_INFUSION_TIME;
|
||||
|
||||
public static BooleanValue PORTAL_TEMPLATE_ENABLED;
|
||||
public static BooleanValue PORTAL_BLOCKS_ENABLED;
|
||||
public static ConfigValue<List<? extends String>> PORTAL_BLOCKS;
|
||||
|
||||
public static BooleanValue FAKE_PLAYER_FIX;
|
||||
public static BooleanValue ROUTER_VAULTAR_FIX;
|
||||
public static BooleanValue FRAGMENT_WEIGHT_FIX;
|
||||
public static BooleanValue VAULTAR_CONDUIT_FIX;
|
||||
|
||||
public static BooleanValue JUNKMGMT_ENABLED;
|
||||
public static ConfigValue<Integer> JUNKMGMT_T1;
|
||||
|
@ -61,65 +67,86 @@ public class Configuration {
|
|||
public static ConfigValue<Integer> JUNKMGMT_T3;
|
||||
public static ConfigValue<Integer> JUNKMGMT_T4;
|
||||
|
||||
public static ConfigValue<List<? extends String>> GOBLINS;
|
||||
public static ConfigValue<List<? extends String>> CHAMPIONS;
|
||||
|
||||
static {
|
||||
Builder builder = new Builder();
|
||||
|
||||
// Fortune changes
|
||||
builder.push("Fortune");
|
||||
builder.comment("Replace the maximum Fortune level for the Vault Enchanter and remove the Fortunate Expertise");
|
||||
FORTUNE_ENABLED = builder.define("enableOverride", true);
|
||||
builder.comment("Maximum Fortune level");
|
||||
FORTUNE_LEVEL = builder.defineInRange("maxLevel", 5, 3, 5);
|
||||
FORTUNE_ENABLED = builder
|
||||
.comment("Replace the maximum Fortune level for the Vault Enchanter and remove the Fortunate Expertise")
|
||||
.define("enableOverride", false);
|
||||
FORTUNE_LEVEL = builder
|
||||
.comment("Maximum Fortune level")
|
||||
.defineInRange("maxLevel", 5, 3, 5);
|
||||
builder.pop();
|
||||
|
||||
// Enchantment Cost
|
||||
builder.push("VaultEnchanter");
|
||||
builder.comment("Remove the Emerald cost from the Vault Enchanter");
|
||||
ENCHANTS_FORFREE = builder.define("removeEmeraldCost", true);
|
||||
ENCHANTS_FORFREE = builder
|
||||
.comment("Remove the Emerald cost from the Vault Enchanter")
|
||||
.define("removeEmeraldCost", false);
|
||||
builder.pop();
|
||||
|
||||
// Jeweler
|
||||
builder.push("Jeweler");
|
||||
builder.comment("Remove the Jeweler Expertise and change the default cutting chance accordingly");
|
||||
JEWELER_ENABLED = builder.define("disableJeweler", true);
|
||||
builder.comment("Chance to break the jewel / remove a modifier");
|
||||
JEWELER_CHANCE = builder.defineInRange("breakChance", 0.25d, 0d, 0.5d);
|
||||
JEWELER_ENABLED = builder
|
||||
.comment("Remove the Jeweler Expertise and change the default cutting chance accordingly")
|
||||
.define("disableJeweler", false);
|
||||
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();
|
||||
|
||||
// Budding Crystal
|
||||
builder.push("BuddingCrystal");
|
||||
builder.comment("Change the Budding Crystal growth times (Sky Vaults only)");
|
||||
BUDDING_ENABLED = builder.define("enableOverride", true);
|
||||
builder.comment("Maximum time between growth stages (pack default: 400)");
|
||||
BUDDING_MAX = builder.defineInRange("maxTime", 300, 300, 500);
|
||||
builder.comment("Minimum time between growth stages (pack default: 280)");
|
||||
BUDDING_MIN = builder.defineInRange("minTime", 200, 100, 299);
|
||||
BUDDING_ENABLED = builder
|
||||
.comment("Change the Budding Crystal growth times (Sky Vaults only)")
|
||||
.define("enableOverride", false);
|
||||
BUDDING_MAX = builder
|
||||
.comment("Maximum time between growth stages (pack default: 400)")
|
||||
.defineInRange("maxTime", 300, 300, 500);
|
||||
BUDDING_MIN = builder
|
||||
.comment("Minimum time between growth stages (pack default: 280)")
|
||||
.defineInRange("minTime", 200, 100, 299);
|
||||
builder.pop();
|
||||
|
||||
// Jewels
|
||||
builder.push("Jewels");
|
||||
builder.comment("Change the max size for jewels and the size range for jewel cutting");
|
||||
JEWELS_ENABLED = builder.define("enableOverride", true);
|
||||
builder.comment("Maximum Jewel size (pack default: 90) (CURRENTLY NON-FUNCTIONAL)");
|
||||
JEWELS_SIZE = builder.defineInRange("maxSize", 40, 10, 100);
|
||||
builder.comment("Maximum size reduction when cutting (pack default: 10)");
|
||||
JEWELS_MAX = builder.defineInRange("maxCut", 10, 5, 20);
|
||||
builder.comment("Minimum size reduction when cutting (pack default: 1)");
|
||||
JEWELS_MIN = builder.defineInRange("minCut", 3, 1, 4);
|
||||
JEWELS_ENABLED = builder
|
||||
.comment("Change the max size for jewels and the size range for jewel cutting")
|
||||
.define("enableOverride", false);
|
||||
JEWELS_SIZE = builder
|
||||
.comment("Maximum Jewel size (pack default: 90) (CURRENTLY NON-FUNCTIONAL)")
|
||||
.defineInRange("maxSize", 40, 10, 100);
|
||||
JEWELS_MAX = builder
|
||||
.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();
|
||||
|
||||
// Vault Altar
|
||||
builder.push("VaultAltar");
|
||||
builder.comment("Enable Vaultar config overrides");
|
||||
VAULTAR_ENABLED = builder.define("enableOverride", true);
|
||||
builder.comment("The time it takes to infuse a crystal after giving a redstone signal (pack default: 5)");
|
||||
VAULTAR_INFUSION_TIME = builder.defineInRange("infusionTime", 1, 1, 10);
|
||||
VAULTAR_ENABLED = builder
|
||||
.comment("Enable Vaultar config overrides")
|
||||
.define("enableOverride", false);
|
||||
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();
|
||||
|
||||
// Vault Charm / Junk Management
|
||||
builder.push("JunkManagement");
|
||||
builder.comment("Override Junk Charm multipliers for the Junk Management slots (pack defaults: 3/18/114/228)");
|
||||
JUNKMGMT_ENABLED = builder.define("enableOverride", true);
|
||||
JUNKMGMT_ENABLED = builder
|
||||
.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)");
|
||||
JUNKMGMT_T1 = builder.define("tier1Multiplier", 28);
|
||||
JUNKMGMT_T2 = builder.define("tier2Multiplier", 57);
|
||||
|
@ -129,20 +156,37 @@ public class Configuration {
|
|||
|
||||
// Vault Portal
|
||||
builder.push("VaultPortal");
|
||||
builder.comment("Allow Template Frame Blocks extruded by Modular Routers’ Extruder Mk2 module as Vault Portal Frame blocks");
|
||||
PORTAL_TEMPLATE_ENABLED = builder.define("allowTemplateFrames", true);
|
||||
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
|
||||
builder.push("Fixes");
|
||||
builder.comment("Fix fake player research (e.g. Router + Botany Pots interaction, AE2 auto crafting, …)");
|
||||
FAKE_PLAYER_FIX = builder.define("fakePlayerResearchFix", true);
|
||||
builder.comment("Fix Routers unable to place Vault Rocks on your Vaultar");
|
||||
ROUTER_VAULTAR_FIX = builder.define("routerVaultarFix", true);
|
||||
builder.comment("Fix №5 fragments of all relics having half the weight");
|
||||
FRAGMENT_WEIGHT_FIX = builder.define("fragmentFix", true);
|
||||
builder.comment("Fix Vaultar Conduit power usage when used in an AE2 grid");
|
||||
VAULTAR_CONDUIT_FIX = builder.define("conduitEnergyFix", true);
|
||||
FAKE_PLAYER_FIX = builder
|
||||
.comment("Fix fake player research (e.g. Router + Botany Pots interaction, AE2 auto crafting, …)")
|
||||
.define("fakePlayerResearchFix", true);
|
||||
ROUTER_VAULTAR_FIX = builder
|
||||
.comment("Fix Routers unable to place Vault Rocks on your Vaultar")
|
||||
.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();
|
||||
|
||||
CONFIG = builder.build();
|
||||
|
|
|
@ -21,26 +21,53 @@ import org.slf4j.Logger;
|
|||
|
||||
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.common.Mod;
|
||||
import net.minecraftforge.fml.config.ModConfig;
|
||||
import net.minecraftforge.fml.event.config.ModConfigEvent;
|
||||
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||
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")
|
||||
public class VaultModTweaks
|
||||
{
|
||||
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::gatherData);
|
||||
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::configLoaded);
|
||||
ModLoadingContext.get().registerConfig(ModConfig.Type.SERVER, Configuration.CONFIG);
|
||||
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");
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
}
|
|
@ -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();
|
||||
}
|
|
@ -1,61 +0,0 @@
|
|||
/**
|
||||
* 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.Redirect;
|
||||
|
||||
import iskallia.vaultintegrations.altar.AltarConduitNode;
|
||||
import iskallia.vaultintegrations.init.VIConfigs;
|
||||
import tv.alterNERD.VaultModTweaks.Configuration;
|
||||
import tv.alterNERD.VaultModTweaks.VaultModTweaks;
|
||||
import tv.alterNERD.VaultModTweaks.util.I18n;
|
||||
|
||||
/**
|
||||
* Changes the {@link iskallia.vaultintegrations.altar.AltarConduitNode} class for
|
||||
* managing the Altar Conduit as a node in RS/AE networks.
|
||||
*
|
||||
* Specifically, fixes the energy consumption when part of an AE2 grid.
|
||||
*/
|
||||
@Mixin(AltarConduitNode.class)
|
||||
public class MixinAltarConduitNode {
|
||||
/**
|
||||
* Redirects the
|
||||
* {@link iskallia.vaultintegrations.altar.AltarConduitNode#getEnergyUsage()}
|
||||
* method to return a value in AE/t instead of RF/t. 1 AE = 2.5 RF.
|
||||
*
|
||||
* @return Energy usage in AE/t instead of RF/t
|
||||
*/
|
||||
@Redirect(
|
||||
method = "setupAE",
|
||||
at = @At(
|
||||
value = "INVOKE",
|
||||
target = "Liskallia/vaultintegrations/altar/AltarConduitNode;getEnergyUsage()I"
|
||||
),
|
||||
remap = false
|
||||
)
|
||||
private int getEnergyUsageRedirect(AltarConduitNode that) {
|
||||
int rfPerTick = (int)VIConfigs.ALTAR_CONDUIT.getRFUsagePerTick();
|
||||
if (Configuration.VAULTAR_CONDUIT_FIX.get()) {
|
||||
VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.conduit.energy"));
|
||||
rfPerTick = rfPerTick*2/5;
|
||||
}
|
||||
return rfPerTick;
|
||||
}
|
||||
}
|
|
@ -39,7 +39,7 @@ import tv.alterNERD.VaultModTweaks.util.I18n;
|
|||
*/
|
||||
@Mixin(EnchantmentEntry.class)
|
||||
public abstract class MixinEnchantmentEntry
|
||||
{
|
||||
{
|
||||
@Shadow(remap = false)
|
||||
private int level;
|
||||
@Shadow(remap = false)
|
||||
|
@ -53,12 +53,13 @@ public abstract class MixinEnchantmentEntry
|
|||
at = @At("RETURN"),
|
||||
remap = false
|
||||
)
|
||||
private void initCallback(Enchantment enchantment, int level, CallbackInfo ci) {
|
||||
private void init$return(Enchantment enchantment, int level, CallbackInfo ci) {
|
||||
if (Configuration.FORTUNE_ENABLED.get()) {
|
||||
ResourceLocation registryName = this.enchantment.getRegistryName();
|
||||
if (registryName != null && registryName.toString().equals("minecraft:fortune")) {
|
||||
VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.fortune.level", 5));
|
||||
this.level = Configuration.FORTUNE_LEVEL.get();
|
||||
int maxFortune = Configuration.FORTUNE_LEVEL.get();
|
||||
VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.fortune.level", maxFortune));
|
||||
this.level = maxFortune;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -72,7 +73,7 @@ public abstract class MixinEnchantmentEntry
|
|||
cancellable = true,
|
||||
remap = false
|
||||
)
|
||||
private void isValidCallback(CallbackInfoReturnable<Boolean> ci) {
|
||||
private void isValid$return(CallbackInfoReturnable<Boolean> ci) {
|
||||
if (Configuration.FORTUNE_ENABLED.get()) {
|
||||
ResourceLocation registryName = this.enchantment.getRegistryName();
|
||||
if (registryName != null && registryName.toString().equals("minecraft:fortune")
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -60,7 +60,7 @@ public class MixinPlayerResearchesData {
|
|||
cancellable = true,
|
||||
remap = false
|
||||
)
|
||||
private void getResearchesCallback(UUID uuid, CallbackInfoReturnable<ResearchTree> ci) {
|
||||
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);
|
||||
|
|
|
@ -53,8 +53,8 @@ public abstract class MixinStageManager {
|
|||
),
|
||||
remap = false
|
||||
)
|
||||
private static ResearchTree overrideOnItemCrafted(Player player) {
|
||||
return getResearchTreeOverride(player);
|
||||
private static ResearchTree onItemCrafted$getResearchTree(Player player) {
|
||||
return getResearchTree$redirect(player);
|
||||
}
|
||||
|
||||
@Redirect(
|
||||
|
@ -66,8 +66,8 @@ public abstract class MixinStageManager {
|
|||
),
|
||||
remap = false
|
||||
)
|
||||
private static ResearchTree overrideOnBlockInteraction(Player player) {
|
||||
return getResearchTreeOverride(player);
|
||||
private static ResearchTree onBlockInteraction$getResearchTree(Player player) {
|
||||
return getResearchTree$redirect(player);
|
||||
}
|
||||
|
||||
@Redirect(
|
||||
|
@ -79,8 +79,8 @@ public abstract class MixinStageManager {
|
|||
),
|
||||
remap = false
|
||||
)
|
||||
private static ResearchTree overrideOnItemUse(Player player) {
|
||||
return getResearchTreeOverride(player);
|
||||
private static ResearchTree onItemUse$getResearchTree(Player player) {
|
||||
return getResearchTree$redirect(player);
|
||||
}
|
||||
|
||||
@Redirect(
|
||||
|
@ -92,8 +92,8 @@ public abstract class MixinStageManager {
|
|||
),
|
||||
remap = false
|
||||
)
|
||||
private static ResearchTree overrideOnEntityInteraction(Player player) {
|
||||
return getResearchTreeOverride(player);
|
||||
private static ResearchTree onEntityInteraction$getResearchTree(Player player) {
|
||||
return getResearchTree$redirect(player);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -102,14 +102,21 @@ public abstract class MixinStageManager {
|
|||
* @param player
|
||||
* @return
|
||||
*/
|
||||
private static ResearchTree getResearchTreeOverride(Player player) {
|
||||
if (!Configuration.FAKE_PLAYER_FIX.get() && player instanceof FakePlayer) {
|
||||
VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.research.fakeplayerfix", player.getUUID()));
|
||||
return ResearchTree.empty();
|
||||
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;
|
||||
else if (player.level.isClientSide) {
|
||||
tree = RESEARCH_TREE;
|
||||
}
|
||||
return PlayerResearchesData.get((ServerLevel)player.level).getResearches(player);
|
||||
else {
|
||||
tree = PlayerResearchesData.get((ServerLevel)player.level).getResearches(player);
|
||||
}
|
||||
return tree;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
}
|
|
@ -71,7 +71,7 @@ public class MixinVaultAltarBlock {
|
|||
),
|
||||
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) {
|
||||
ServerPlayer serverPlayer = (ServerPlayer)player;
|
||||
ItemStack heldItem = player.getMainHandItem();
|
||||
|
|
|
@ -17,49 +17,42 @@
|
|||
*/
|
||||
package tv.alterNERD.VaultModTweaks.integration.mixin;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
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.CallbackInfo;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||
|
||||
import iskallia.vault.config.gear.VaultGearEnchantmentConfig;
|
||||
import iskallia.vault.util.EnchantmentCost;
|
||||
import net.minecraft.world.item.ItemStack;
|
||||
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.util.EnchantmentCost} class used by the
|
||||
* Vault Enchanter.
|
||||
* Changes the {@link iskallia.vault.config.gear.VaultGearEnchantmentConfig}
|
||||
* class used by the Vault Enchanter.
|
||||
*
|
||||
* Specifically, it removes the Emerald cost of enchantments. Just because I
|
||||
* cannot be arsed to bring them over every time.
|
||||
* Specifically, it removes the cost of enchantments. Just because I cannot be
|
||||
* arsed to bring Emeralds over every time.
|
||||
*/
|
||||
@Mixin(EnchantmentCost.class)
|
||||
public class MixinEnchantmentCost {
|
||||
@Shadow(remap = false)
|
||||
private List<ItemStack> items;
|
||||
|
||||
@Mixin(VaultGearEnchantmentConfig.class)
|
||||
public class MixinVaultGearEnchantmentConfig {
|
||||
/**
|
||||
* Removes the Emerald cost from all Vault Enchanter enchantments when
|
||||
* reading an existing JSON configuration.
|
||||
* Removes the cost from all Vault Enchanter enchantments.
|
||||
*
|
||||
* @param json
|
||||
* @param ci
|
||||
* @param entry
|
||||
*/
|
||||
@Inject(
|
||||
method = "readJson",
|
||||
method = "getCost",
|
||||
at = @At("RETURN"),
|
||||
cancellable = true,
|
||||
remap = false
|
||||
)
|
||||
private void readJsonCallback(JsonObject json, CallbackInfo ci) {
|
||||
private void readJsonCallback(EnchantmentEntry entry, CallbackInfoReturnable<EnchantmentCost> ci) {
|
||||
if (Configuration.ENCHANTS_FORFREE.get()) {
|
||||
VaultModTweaks.LOGGER.info("the_vault_tweaks.log.inject.enchanter.forfree");
|
||||
this.items.clear();
|
||||
VaultModTweaks.LOGGER.info(I18n.get("the_vault_tweaks.log.inject.enchanter.forfree"));
|
||||
ci.setReturnValue(EnchantmentCost.EMPTY);
|
||||
}
|
||||
}
|
||||
|
|
@ -51,10 +51,14 @@ public abstract class MixinVaultJewelCuttingConfig extends Config {
|
|||
@Override
|
||||
protected void onLoad(Config oldConfigInstance) {
|
||||
super.onLoad(oldConfigInstance);
|
||||
|
||||
if (Configuration.JEWELER_ENABLED.get()) {
|
||||
float chance = Configuration.JEWELER_CHANCE.get().floatValue();
|
||||
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));
|
||||
|
|
|
@ -51,9 +51,11 @@ public abstract class MixinVaultPortalConfig extends Config {
|
|||
@Override
|
||||
protected void onLoad(Config oldConfigInstance) {
|
||||
super.onLoad(oldConfigInstance);
|
||||
if (Configuration.PORTAL_TEMPLATE_ENABLED.get()) {
|
||||
if (Configuration.PORTAL_BLOCKS_ENABLED.get()) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -35,13 +35,6 @@ There are some bug fixes and a lot of QoL and balance changes. See https://git.a
|
|||
[[dependencies.the_vault_tweaks]]
|
||||
modId="the_vault"
|
||||
mandatory=true
|
||||
versionRange="[1.18.2-3.8.0.2246]"
|
||||
ordering="AFTER"
|
||||
side="BOTH"
|
||||
|
||||
[[dependencies.the_vault_tweaks]]
|
||||
modId="vaultintegrations"
|
||||
mandatory=true
|
||||
versionRange="[1.18.2-1.0.10]"
|
||||
versionRange="[1.18.2-3.11.0.3011]"
|
||||
ordering="AFTER"
|
||||
side="BOTH"
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
"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 …",
|
||||
|
@ -15,11 +16,16 @@
|
|||
"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.polished_andesite": "Polished Andesite",
|
||||
"block.minecraft.andesite_stairs": "Andesite Stairs",
|
||||
"block.minecraft.polished_andesite_stairs": "Polished Andesite Stairs",
|
||||
"block.minecraft.andesite_slab": "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"
|
||||
}
|
35
src/main/resources/data/the_vault/tags/items/trash.json
Normal file
35
src/main/resources/data/the_vault/tags/items/trash.json
Normal 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"
|
||||
]
|
||||
}
|
|
@ -5,17 +5,20 @@
|
|||
"compatibilityLevel": "JAVA_17",
|
||||
"refmap": "mixins.the_vault_tweaks.refmap.json",
|
||||
"mixins": [
|
||||
"MixinAltarConduitNode",
|
||||
"IMixinVaultAltarIngredientsConfig",
|
||||
"MixinCrystalBuddingConfig",
|
||||
"MixinEnchantmentCost",
|
||||
"MixinEnchantmentEntry",
|
||||
"MixinExpertisesGuiConfig",
|
||||
"MixinJewelExpertise",
|
||||
"MixinPlayerResearchesData",
|
||||
"MixinStageManager",
|
||||
"MixinToolType",
|
||||
"MixinTransmogTableBlock",
|
||||
"MixinUnidentifiedRelicFragmentsConfig",
|
||||
"MixinVaultAltarBlock",
|
||||
"MixinVaultAltarConfig",
|
||||
"MixinVaultCharmConfig",
|
||||
"MixinVaultGearEnchantmentConfig",
|
||||
"MixinVaultJewelCuttingConfig",
|
||||
"MixinVaultPortalConfig"
|
||||
],
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#Tue Jun 20 23:40:06 CEST 2023
|
||||
#Sun Nov 19 15:47:56 CET 2023
|
||||
MAJOR=3
|
||||
MINOR=10
|
||||
PATCH=1
|
||||
MINOR=13
|
||||
PATCH=0
|
||||
PRE_RELEASE=
|
||||
BUILD=3
|
||||
BUILD=-1
|
||||
CODE=1
|
||||
|
|
Loading…
Reference in a new issue