mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 16:16:17 +02:00
Compare commits
No commits in common. "v1.x.x" and "v1.6.0" have entirely different histories.
289 changed files with 2973 additions and 19268 deletions
28
.github/ISSUE_TEMPLATE/bug_report.md
vendored
28
.github/ISSUE_TEMPLATE/bug_report.md
vendored
|
|
@ -1,28 +0,0 @@
|
|||
---
|
||||
name: Bug report
|
||||
about: If you think you encountered something unexpected
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: alexcrea
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Technical informations**
|
||||
Server version & framework. (/version)
|
||||
Plugin version if applicable (/version CustomAnvil)
|
||||
List of plugin that may interact with CustomAnvil if applicable
|
||||
|
||||
**Errors**
|
||||
If any errors was displayed on the console. please provide it.
|
||||
|
||||
**Configuration**
|
||||
Provide relavent configuration files if no error found or if you think the error is related to your configuration.
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the problem here.
|
||||
18
.github/ISSUE_TEMPLATE/feature_request.md
vendored
18
.github/ISSUE_TEMPLATE/feature_request.md
vendored
|
|
@ -1,18 +0,0 @@
|
|||
---
|
||||
name: Feature request
|
||||
about: Suggest an idea for Custom Anvil
|
||||
title: ''
|
||||
labels: enhancement
|
||||
assignees: alexcrea
|
||||
|
||||
---
|
||||
|
||||
**Describe the solution you'd like**
|
||||
A clear and concise description of what you want to happen.
|
||||
|
||||
**Idea how to integrate it**
|
||||
How and where do you think the config of your feature should like
|
||||
How and where do you think the config gui for your feature should look like
|
||||
|
||||
**Additional context**
|
||||
Add any other context about the feature request here.
|
||||
163
.github/workflows/gradle.yml
vendored
163
.github/workflows/gradle.yml
vendored
|
|
@ -1,163 +0,0 @@
|
|||
# This workflow uses actions that are not certified by GitHub.
|
||||
# They are provided by a third-party and are governed by
|
||||
# separate terms of service, privacy policy, and support
|
||||
# documentation.
|
||||
# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time
|
||||
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle
|
||||
|
||||
name: Java CI with Gradle
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "v1.x.x", "v2.x.x" ]
|
||||
pull_request:
|
||||
branches: [ "v1.x.x", "v2.x.x" ]
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
env:
|
||||
MODRINTH_VERSIONS: '["1.18.x", "1.19.x", "1.20.x", "1.21.x", "26.1.x", "26.2.x"]'
|
||||
MODRINTH_PLATFORMS: '["spigot", "paper", "purpur", "folia"]'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up JDKs
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: |
|
||||
21
|
||||
distribution: 'temurin'
|
||||
cache: gradle
|
||||
|
||||
- name: Cache Gradle root and wrapper
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
~/.gradle/caches
|
||||
~/.gradle/wrapper
|
||||
key: gradle-root-${{ runner.os }}-${{ hashFiles('build.gradle*') }}
|
||||
restore-keys: gradle-root-${{ runner.os }}-
|
||||
|
||||
# Setup paperweight cache
|
||||
- name: Cache paperweight
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
./nms/*/.gradle/caches/paperweight
|
||||
key: paperweight-submodules-${{ runner.os }}-${{ hashFiles('nms/*/build.gradle*') }}
|
||||
restore-keys: |
|
||||
paperweight-submodules-${{ runner.os }}-
|
||||
|
||||
# Configure Gradle for optimal use in GitHub Actions, including caching of downloaded dependencies.
|
||||
# See: https://github.com/gradle/actions/blob/main/setup-gradle/README.md
|
||||
- name: Setup Gradle
|
||||
uses: gradle/actions/setup-gradle@v5
|
||||
|
||||
- name: Make gradlew executable
|
||||
run: chmod +x ./gradlew
|
||||
|
||||
- name: Get small commit hash
|
||||
if: ${{ github.event_name != 'release' && success() }}
|
||||
run: echo "SMALL_COMMIT_HASH=$(git rev-parse --short ${{ github.sha }})" >> $GITHUB_ENV
|
||||
|
||||
- name: Build with Gradle Wrapper
|
||||
run: ./gradlew build --parallel --stacktrace
|
||||
|
||||
# only submit dependency on push
|
||||
- name: Generate and submit dependency graph
|
||||
uses: gradle/actions/dependency-submission@v4
|
||||
if: ${{ github.event_name == 'push' && success() }}
|
||||
continue-on-error: true
|
||||
|
||||
# Get the names of the online and offline jars
|
||||
# grep -v "offline" to exclude offline jar as the regex would catch it otherwise
|
||||
- name: Get file name for jars
|
||||
run: |
|
||||
ONLINE_JAR_PATH=$(ls build/libs/CustomAnvil-*.jar | grep -v "offline")
|
||||
OFFLINE_JAR_PATH=$(ls build/libs/CustomAnvil-*-offline.jar)
|
||||
|
||||
echo "ONLINE_JAR_NAME=$(basename $ONLINE_JAR_PATH)" >> $GITHUB_ENV
|
||||
echo "OFFLINE_JAR_NAME=$(basename $OFFLINE_JAR_PATH)" >> $GITHUB_ENV
|
||||
|
||||
# upload the named jars as artifact
|
||||
- name: Upload online JAR artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: CustomAnvil.jar
|
||||
path: build/libs/${{ env.ONLINE_JAR_NAME }}
|
||||
|
||||
- name: Upload offline JAR file
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: CustomAnvil-offline.jar
|
||||
path: build/libs/${{ env.OFFLINE_JAR_NAME }}
|
||||
|
||||
- name: Summarize tests results
|
||||
uses: jeantessier/test-summary-action@v1
|
||||
if: ${{ always() }}
|
||||
|
||||
# upload the jar to release
|
||||
- name: Upload jar to release
|
||||
if: ${{ github.event_name == 'release' && success() }}
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
files: |
|
||||
build/libs/${{ env.ONLINE_JAR_NAME }}
|
||||
build/libs/${{ env.OFFLINE_JAR_NAME }}
|
||||
|
||||
- name: Hangar release
|
||||
if: ${{ (github.event_name != 'release' || github.event_name != 'push') && github.repository_owner == 'alexcrea' && success() }}
|
||||
env:
|
||||
HANGAR_API_TOKEN: ${{ secrets.HANGAR_API_TOKEN }}
|
||||
RELEASE_CHANGELOG: ${{ github.event.release.body }}
|
||||
run: ./gradlew publishAllPublicationsToHangar --stacktrace
|
||||
|
||||
- name: Modrinth publish alpha
|
||||
if: ${{ github.event_name == 'push' && github.repository_owner == 'alexcrea' && success() }}
|
||||
uses: cloudnode-pro/modrinth-publish@v2
|
||||
with:
|
||||
token: ${{ secrets.MODRINTH_TOKEN }}
|
||||
project: S75Ueiq9
|
||||
name: dev-${{ env.SMALL_COMMIT_HASH }}
|
||||
version: dev-${{ env.SMALL_COMMIT_HASH }}
|
||||
loaders: ${{ env.MODRINTH_PLATFORMS }}
|
||||
game-versions: ${{ env.MODRINTH_VERSIONS }}
|
||||
channel: alpha
|
||||
files: build/libs/${{ env.ONLINE_JAR_NAME }}
|
||||
changelog: ${{ github.event.head_commit.message }}
|
||||
|
||||
- name: Modrinth publish release
|
||||
if: ${{ github.event_name == 'release' && github.repository_owner == 'alexcrea' && success() }}
|
||||
uses: cloudnode-pro/modrinth-publish@v2
|
||||
with:
|
||||
token: ${{ secrets.MODRINTH_TOKEN }}
|
||||
project: S75Ueiq9
|
||||
name: ${{ github.event.release.name }}
|
||||
version: ${{ github.event.release.tag_name }}${{ github.event.release.prerelease && '-pre' || '' }}
|
||||
loaders: ${{ env.MODRINTH_PLATFORMS }}
|
||||
game-versions: ${{ env.MODRINTH_VERSIONS }}
|
||||
channel: ${{ github.event.release.prerelease == false && 'release' || 'beta' }}
|
||||
files: build/libs/${{ env.ONLINE_JAR_NAME }}
|
||||
changelog: ${{ github.event.release.body }}
|
||||
|
||||
- name: Send release note to discord
|
||||
if: ${{ github.event_name == 'release' && github.repository_owner == 'alexcrea' && success() }}
|
||||
uses: tsickert/discord-webhook@v7.0.0
|
||||
with:
|
||||
webhook-url: ${{ secrets.RELEASE_WEBHOOK_URL }}
|
||||
content: |
|
||||
${{ github.event.release.prerelease == false && '<@&1338546156325568642>' || '<@&1352296092989001768>' }}
|
||||
# New ${{ github.event.release.prerelease && 'beta ' || '' }}version of custom anvil ! <:CustomAnvil:1262550667986342001>([Modrinth](https://modrinth.com/plugin/customanvil), [Hangar](https://hangar.papermc.io/alexcrea/CustomAnvil) and [GitHub](${{ github.event.release.html_url }}) links)
|
||||
-# note: automated release. spigot is not uploaded yet.
|
||||
|
||||
${{ github.event.release.body }}
|
||||
13
.gitignore
vendored
13
.gitignore
vendored
|
|
@ -4,19 +4,8 @@
|
|||
/out/
|
||||
.lastDeploymentsId
|
||||
|
||||
#nms & impl submodule build directory ignored
|
||||
#nms submodule build directory ignored
|
||||
/nms/build
|
||||
/nms/.gradle
|
||||
/nms/*/build
|
||||
/nms/*/.gradle
|
||||
/impl/build
|
||||
/impl/.gradle
|
||||
/impl/*/build
|
||||
/impl/*/.gradle
|
||||
|
||||
# run folder
|
||||
/run/
|
||||
|
||||
# other random folders
|
||||
/htmlReport
|
||||
/.kotlin/errors
|
||||
|
|
|
|||
BIN
.idea/icon.png
generated
BIN
.idea/icon.png
generated
Binary file not shown.
|
Before Width: | Height: | Size: 58 KiB |
|
|
@ -1,9 +0,0 @@
|
|||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Server" type="JarApplication">
|
||||
<option name="JAR_PATH" value="$PROJECT_DIR$/run/server.jar" />
|
||||
<option name="PROGRAM_PARAMETERS" value="-nogui" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/run" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
</component>
|
||||
|
|
@ -1,63 +0,0 @@
|
|||
### Bedrock issue
|
||||
For server using geyser, bedrock player cannot use custom "recipes" in the anvil.
|
||||
This is cannot be fixed on geyser or my side.
|
||||
|
||||
### Plugin Compatibility
|
||||
Here is various plugins that had issues with CustomAnvil
|
||||
where efforts was made for compatibility and should be working right:
|
||||
|
||||
some if not all of them are cool ! I recommend checking them out !
|
||||
|
||||
## Supported By CustomAnvil
|
||||
These plugins have compatibility handled by custom anvil. seek help on custom anvil and do not bother these developers
|
||||
|
||||
#### Enchantment Plugins
|
||||
- [ExcellentEnchants](https://www.spigotmc.org/resources/excellentenchants-%E2%AD%90-75-vanilla-like-enchantments.61693/) by NightExpress:
|
||||
Use ExcellentEnchants item type \
|
||||
Also use ExcellentEnchant max enchant limit
|
||||
|
||||
- [EcoEnchant](https://www.spigotmc.org/resources/ecoenchants-%E2%AD%95-250-enchantments-%E2%9C%85-create-custom-enchants-%E2%9C%A8-essentials-cmi-support.79573/) by Auxilor:
|
||||
Need to use /anvilconfigreload or a server restart to add newly added enchantment.
|
||||
Use EcoEnchant restriction system but new restriction can be added in custom anvil
|
||||
|
||||
- [Enchantment²](https://www.spigotmc.org/resources/enchants-squared-the-enchantsplus-rewrite-custom-enchantments-that-act-like-vanilla-ones.86747/) by Athlaeos:
|
||||
Support by Custom Anvil but still experimental. Automatic configuration. Plugin is not actively developed anymore
|
||||
|
||||
- [SuperEnchants](https://modrinth.com/plugin/superenchants) by Aznos:
|
||||
Use SuperEnchant restrictions system but new restriction can be added in custom anvil
|
||||
|
||||
|
||||
#### Custom Items Plugins
|
||||
Custom Items support is considered unstable. If you find issue please report it !
|
||||
|
||||
- [EcoItem](https://www.spigotmc.org/resources/30-sale%E2%8F%B3-ecoitems-%E2%AD%95-create-custom-items-%E2%9C%85-weapons-armors-tools-charms-%E2%9C%A8-item-levels-rarities.94601/) by Exanthiax:
|
||||
May have some issue. but should partially work I hope
|
||||
|
||||
- [ItemAdder](https://www.spigotmc.org/resources/%E2%9C%A8itemsadder%E2%AD%90emotes-mobs-items-armors-hud-gui-emojis-blocks-wings-hats-liquids.73355/) by LoneDev:
|
||||
Need to fix unit item not working completly correctly as in can't have twice same base item
|
||||
|
||||
#### Anvil Mechanics Plugins
|
||||
- [Disenchantment](https://www.spigotmc.org/resources/disenchantment-1-21-1-1-20-6-new-book-splitting-mechanics.110741/) by H7KZ
|
||||
Partially use Custom Anvil maximum XP settings (>= 6.1.5)
|
||||
|
||||
- [HavenBags](https://www.spigotmc.org/resources/havenbags-shulker-like-player-bound-bags-1-17-1-21-4.110420/) by hyperdefined
|
||||
For bag upgrade and skin via anvil. (version >= 1.31.0)
|
||||
|
||||
- [AxPlayerWarp](https://modrinth.com/project/QDJHDKvi) by ArtillexStudios
|
||||
For its anvil inventory usage
|
||||
|
||||
- [ToolsStats](https://modrinth.com/project/oBZj9E15) by Valorless
|
||||
For token application using anvil
|
||||
|
||||
### Known Partially Incompatible
|
||||
- [UberEnchant](https://modrinth.com/plugin/uberenchant) by coltonj96
|
||||
Anvil handling as they are doing something similar to CustomAnvil.
|
||||
It is by no mean there faults and I recommend checking them out especially if custom anvil do not work for your use case !
|
||||
|
||||
- [AdvencedEnchantments](https://ae.advancedplugins.net/) by Advanced Plugins
|
||||
Paid plugin I do not own as I did not get commissioned for support.
|
||||
may be able to use api but cannot test on my side
|
||||
|
||||
If you like Custom Anvil to support a specific plugin (custom enchant or anvil mechanic).
|
||||
You can ask, but please note implementing compatibility will be considered
|
||||
as low priority as I work for the plugin as an hobby on my free time for free.
|
||||
34
CREDITS.md
34
CREDITS.md
|
|
@ -1,34 +0,0 @@
|
|||
Thanks **DelilahEve** for making [Unsafe Enchants](https://github.com/DelilahEve/UnsafeEnchants). \
|
||||
CustomAnvil was initially a fork of Unsafe Enchants where I wanted to add more and more and here we are now !
|
||||
|
||||
Thanks for all the contributors of bukkit, spigot, the paper team and the adventure API developers \
|
||||
Thanks JetBrain for making IntelliJ
|
||||
|
||||
### Dependencies
|
||||
These dependencies (or a modified version of) are used by custom anvil
|
||||
- [IF](https://github.com/stefvanschie/IF) an inventory framework by stefvanschie
|
||||
- [Mockbukkit](https://github.com/MockBukkit/MockBukkit) for unit testing
|
||||
- [CentralPortalPlus](https://github.com/lalakii/central-portal-plus) by lalakii
|
||||
- [test-summary-action](https://github.com/jeantessier/test-summary-action) by jeantessier
|
||||
- [modrinth-publish](https://github.com/cloudnode-pro/modrinth-publish) by Zefir
|
||||
- [discord-webhook](https://github.com/tsickert/discord-webhook) by tsickert
|
||||
- Thanks [bstats](https://bstats.org/) for keeping me motivated
|
||||
- And [FastStats](https://faststats.dev/) alternative to bstats in beta test
|
||||
- [ModrinthUpdateChecker](https://github.com/Clickism/ModrinthUpdateChecker) by Clickism and thanks to the modrinth team
|
||||
|
||||
### Compatibility
|
||||
Thanks to all the cool creator making the minecraft plugin's ecosystem works ! \
|
||||
See [Compatibility list](https://github.com/alexcrea/CustomAnvil/blob/v1.x.x/COMPATIBILITY.md) for details
|
||||
|
||||
but especially, Big Thanks for H7KZ maker of [Disenchantment](https://github.com/H7KZ/Disenchantment)
|
||||
|
||||
### Special Thanks
|
||||
|
||||
Thanks for all the users trying my plugin for these niche use cases
|
||||
, reporting issues and giving ideas !
|
||||
|
||||
Thanks coltonj96 for [UberEnchant](https://modrinth.com/plugin/uberenchant).
|
||||
we may be incompatible with the anvil, but I do think it is a good alternative ! \
|
||||
I wish one day to work on cross compatibiltiy \
|
||||
* If custom anvil do not work well for you or your use case give it a try ! *
|
||||
|
||||
122
README.md
122
README.md
|
|
@ -1,111 +1,99 @@
|
|||
# Custom Anvil
|
||||
|
||||
**Custom Anvil** is a plugin that allows server administrators to customize every aspect of the anvil's mechanics.
|
||||
**Custom Anvil** is a plugin that allows server administrators to customise every aspect of the anvil's mechanics.
|
||||
It is expected to work on 1.18 to 1.21 minecraft servers running spigot or paper.
|
||||
(the plugin support of 1.16.5 to 1.17.1 is experimental an may encounter issues)
|
||||
|
||||
**Custom Anvil** was previously named **Unsafe Enchants+**.
|
||||
It was renamed because it now affects every anvil aspect and not only unsafe enchants\
|
||||
**Custom Anvil** is based on [Unsafe Enchants](https://github.com/DelilahEve/UnsafeEnchants) by DelilahEve.
|
||||
|
||||
### Download Locations:
|
||||
|
||||
the plugin can be downloaded on
|
||||
[Modrinth](https://modrinth.com/plugin/customanvil),
|
||||
[Hangar](https://hangar.papermc.io/alexcrea/CustomAnvil)
|
||||
or here [on GitHub](https://github.com/alexcrea/CustomAnvil/releases/latest)
|
||||
the plugin can be downloaded on the
|
||||
[Spigot site](https://www.spigotmc.org/resources/custom-anvil.114884)
|
||||
or [on GitHub](https://github.com/alexcrea/CustomAnvil/releases/latest)
|
||||
|
||||
---
|
||||
**Custom Anvil** have the following features:
|
||||
- Vanilla like default configuration.
|
||||
- Custom enchantment level limit.
|
||||
- Custom anvil recipes.
|
||||
- Custom enchant restrictions (allows unsafe enchantment only for a group of item or create new restriction).
|
||||
- Custom enchant restrictions (allow unsafe enchantment only for a group of item or create new restriction).
|
||||
- Custom items of unit repairs (repair damaged with unit of "material", for example the repair of diamond sword by diamonds).
|
||||
- Custom XP cost for every aspect of the anvil.
|
||||
- Permissions to bypass level limit or enchantment restriction.
|
||||
- Display XP cost instead of "too expensive" when above level 40. (see below for more information)
|
||||
- Can handle some custom enchantment plugins (see below for more information)
|
||||
- Display xp cost instead of "to expensive" when above lv 40. (see bellow for more information)
|
||||
- Can handle some custom enchantment plugins (see bellow for more information)
|
||||
- Gui to configure the plugin in game.
|
||||
- Support use of color code, hexadecimal color and minimessage for color/decoration
|
||||
- (Experimental) Folia support (gui do not work)
|
||||
- (Experimental) Dialog rename (allows longer rename)
|
||||
- (Experimental) Anvil with monetary cost (using vault) (require dialog rename)
|
||||
|
||||
And more !
|
||||
|
||||
- Support of color code and hexadecimal color
|
||||
---
|
||||
### Permissions:
|
||||
Note that for most of them you also need to enable feature and in most case enable use of permission for the specfic feature (indicated with `(toggleable)`)
|
||||
```yml
|
||||
# Generic and bypass permissions
|
||||
ca.affected: Player with this permission will be affected by the plugin
|
||||
ca.bypass.fuse: Allow player to combine every enchantments to every item (no custom limit)
|
||||
ca.bypass.level: Allow player to bypass every level limit (no custom limit)
|
||||
|
||||
# Command permissions
|
||||
ca.command.reload: Allow administrator to reload the plugin's configs
|
||||
ca.command.diagnostic: Allow adminastator to diagnistic some simple problem with the plugin
|
||||
ca.config.edit: Allow administrator to edit the plugin's config in game
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
# Bellow permissions also require some config change to allow usage of features
|
||||
# Usage of these permission is toggleable in basic config gui or config.yml
|
||||
# -----------------------------------------------------------------------------
|
||||
# Permissions related to use of color and minimessage
|
||||
ca.color.code: Allow player to use color code on rename if enabled (toggleable)
|
||||
ca.color.code.[thecode] (for example ca.color.code.a): Allows usage of only certain color code (toggleable)
|
||||
ca.color.hex: Allow player to use hexadecimal color on rename if enabled (toggleable)
|
||||
ca.rename.minimessage: Allow player to use minimessage formating on rename if enabled (toggleable)
|
||||
|
||||
# Permissions related to edition of the lore
|
||||
ca.lore_edit.book: Allow player to edit lore via book and quil if enabled (toggleable)
|
||||
ca.lore_edit.paper: Allow player to edit lore via paper if enabled (toggleable)
|
||||
|
||||
# Others
|
||||
ca.rename.dialog: Allow player to use the rename dialog (toggleable)
|
||||
# Related to use of color (usage of permission for color is toggleable in basic config gui or config.yml)
|
||||
ca.color.code: Allow player to use color code if permission is required (toggleable)
|
||||
ca.color.hex: Allow player to use hexadecimal color if permission is required (toggleable)
|
||||
```
|
||||
/!\ version under 1.3.1 use other permission. from 1.2.0 to 1.3.1-A1 use ua.unsafe instead of ca.affected
|
||||
under 1.2.0 replace ca prefix by ue and use ue.unsafe. some permission/features may not exist before the last version.
|
||||
|
||||
### Commands
|
||||
|
||||
run `/customanvil help` to get information about available commands \
|
||||
this only show subcommands you have permission for
|
||||
|
||||
```yml
|
||||
anvilconfigreload or carl: Reload every config of this plugin
|
||||
customanvilconfig or configanvil: open a menu for administrator to edit plugin's config in game
|
||||
```
|
||||
### Supported Plugins
|
||||
See the [Compatibility list](https://github.com/alexcrea/CustomAnvil/blob/v1.x.x/COMPATIBILITY.md)
|
||||
Custom Anvil can be compatible with some custom enchant and anvil mechanics plugins.
|
||||
|
||||
Here is a list of supported custom enchantment plugins with support status:
|
||||
- [Enchantment²](https://www.spigotmc.org/resources/enchants-squared-the-enchantsplus-rewrite-custom-enchantments-that-act-like-vanilla-ones.86747/):
|
||||
Officially supported by Custom Anvil but still experimental. Automatic configuration.
|
||||
|
||||
- [EcoEnchant](https://www.spigotmc.org/resources/ecoenchants-%E2%AD%95-250-enchantments-%E2%9C%85-create-custom-enchants-%E2%9C%A8-essentials-cmi-support.79573/):
|
||||
Officially supported by Custom Anvil but still experimental. Need to use /anvilconfigreload or a server restart to add newly added enchantment.
|
||||
Use EcoEnchant restriction system by default.
|
||||
|
||||
Here is a list of supported anvil mechanic plugins with support status:
|
||||
- [Disenchantment](https://www.spigotmc.org/resources/disenchantment-1-21-1-1-20-6-new-book-splitting-mechanics.110741/)
|
||||
Officially supported by Custom Anvil but still experimental. mostly use Custom Anvil xp settings.
|
||||
|
||||
If you like Custom Anvil to support a specific plugin (custom enchant or anvil mechanic).
|
||||
You can ask, but please note implementing compatibility will be considered
|
||||
as low priority as I work for the plugin on my free time for free.
|
||||
|
||||
### Overriding Too Expensive
|
||||
|
||||
One of the configurations allow displaying price about 40 and removing Too Expensive. \
|
||||
By how the minecraft client work: price above 40 can only be displayed green, even if the player does not own enough experience level.
|
||||
spigot version 1.18 to 1.21.11 do not need any ProtocoLib dependency. (26.1.0 or above requires it) \
|
||||
Any recent paper version also are supported for this feature.
|
||||
But you should wait for update for new version containing new enchantable item or new enchantments if any of this got added.
|
||||
Else it is, likely, fine to use the current version you are ussing on a new paper version
|
||||
By how the minecraft client work: price above 40 can only be displayed green even if the play does not own enough experience level.
|
||||
|
||||
For 1.16.5 and future version (above 1.21.1) you will need ProtocoLib enabled on your server for this feature. \
|
||||
You can also wait for an update of the plugin.
|
||||
|
||||
please note that 1.16.5 to 1.17.1 are not officially supported. Run at your own risk.
|
||||
|
||||
### For custom enchantment plugin developers
|
||||
For information about the API, please refer to [the Wiki](https://github.com/alexcrea/CustomAnvil/wiki) \
|
||||
(Please note that the wiki is currently incomplete)
|
||||
(Please note that the wiki is currently incomplete)
|
||||
|
||||
---
|
||||
|
||||
### Default Plugin's Configurations
|
||||
see [Here](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs)
|
||||
For 1.18 to 1.20.6 use the [1.18 configurations](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs/1.18)\
|
||||
For 1.21 to 1.21.1 use the [1.21 configurations](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs/1.21)
|
||||
|
||||
---
|
||||
### Metric And Telemetry
|
||||
Custom anvil [use bstat](https://bstats.org/plugin/bukkit/Unsafe%20Enchants%20Plus/20923)
|
||||
and [faststats](https://faststats.dev/project/customanvil/minecraft-plugin) for metric and error reporting.
|
||||
|
||||
You can select specific telemetry or disable all in config.yml. \
|
||||
You can also [disable bstat](https://bstats.org/getting-started) and [faststats](https://faststats.dev/info) in their /plugin folder if you like too.
|
||||
|
||||
faststats is in beta testing please report me or them any error you encounter
|
||||
|
||||
### Credits and Thanks
|
||||
Credits and thanks can be seen [here](https://github.com/alexcrea/CustomAnvil/blob/v1.x.x/CREDITS.md)
|
||||
### Known issue:
|
||||
There is non known issue, if you find one please report the issue.
|
||||
|
||||
### Planned:
|
||||
- Better Folia support (make gui work. fix some dirty handled parts)
|
||||
- Get restriction on unknown enchantments (planned for V2)
|
||||
- More features for custom anvil craft
|
||||
- Semi manual config update on plugin or minecraft update
|
||||
- Check unknown registered enchantment & warn
|
||||
- Warn admin on unsupported minecraft version
|
||||
- Better custom craft
|
||||
|
||||
### Known issue:
|
||||
Most unknown registered enchantments (by unsupported custom enchantment plugin & datapacks) will not have restriction by default. Planned but no eta.
|
||||
|
||||
### Do you need help with the plugin, or have any issue or suggestion?
|
||||
You can ask on the discussion page, create a [GitHub issue](https://github.com/alexcrea/CustomAnvil/issues) or join my [discord](https://discord.gg/KHUNsUfRYJ)
|
||||
|
|
|
|||
330
build.gradle.kts
330
build.gradle.kts
|
|
@ -1,127 +1,57 @@
|
|||
import cn.lalaki.pub.BaseCentralPortalPlusExtension
|
||||
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
||||
import groovy.util.Node
|
||||
import groovy.util.NodeList
|
||||
import io.papermc.hangarpublishplugin.model.HangarPublication
|
||||
import io.papermc.hangarpublishplugin.model.Platforms
|
||||
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||
import java.io.ByteArrayOutputStream
|
||||
|
||||
plugins {
|
||||
kotlin("jvm") version "2.3.0"
|
||||
kotlin("jvm") version "2.0.0"
|
||||
java
|
||||
id("org.jetbrains.dokka").version("1.9.20")
|
||||
id("com.gradleup.shadow").version("9.3.0")
|
||||
id("io.github.goooler.shadow").version("8.1.8") // using fork of com.github.johnrengelman.shadow to support java 1.21. edit I do not need java 1.21 now so should be replaced ?
|
||||
// Maven publish
|
||||
`maven-publish`
|
||||
signing
|
||||
id("cn.lalaki.central").version("1.2.8")
|
||||
// Paper
|
||||
id("io.papermc.paperweight.userdev") version "2.0.0-beta.17" apply false
|
||||
id("io.papermc.hangar-publish-plugin") version "0.1.2"
|
||||
id("cn.lalaki.central").version("1.2.5")
|
||||
id("io.papermc.paperweight.userdev") version "1.7.1" apply false
|
||||
}
|
||||
|
||||
group = "xyz.alexcrea"
|
||||
version = "1.17.5"
|
||||
|
||||
val isDevBuild = System.getenv("SMALL_COMMIT_HASH") != null
|
||||
val isPreRelease = System.getenv("IS_GITHUB_PRERELEASE") == "true"
|
||||
|
||||
val effectiveVersion = "$version" +
|
||||
(if (isDevBuild) "-dev-${System.getenv("SMALL_COMMIT_HASH")!!}" else "")
|
||||
version = "1.6.0"
|
||||
|
||||
repositories {
|
||||
// EcoEnchants
|
||||
maven(url = "https://repo.auxilor.io/repository/maven-public/")
|
||||
|
||||
// ExcellentEnchants
|
||||
maven(url = "https://repo.nightexpressdev.com/releases")
|
||||
|
||||
// ItemsAdder
|
||||
maven(url = "https://maven.devs.beer/")
|
||||
|
||||
// For fast stats
|
||||
maven {
|
||||
name = "thenextlvlReleases"
|
||||
url = uri("https://repo.thenextlvl.net/releases")
|
||||
}
|
||||
|
||||
// For vault unlocked
|
||||
maven { url = uri("https://repo.codemc.io/repository/creatorfromhell/") }
|
||||
}
|
||||
|
||||
val reobfNMS = providers.gradleProperty("subprojects.reobfnms")
|
||||
.get().split(",")
|
||||
|
||||
dependencies {
|
||||
// Spigot api
|
||||
compileOnly("org.spigotmc:spigot-api:1.18-R0.1-SNAPSHOT")
|
||||
|
||||
// fast stats
|
||||
implementation("dev.faststats.metrics:bukkit:0.27.0")
|
||||
|
||||
// minimessage
|
||||
implementation("net.kyori:adventure-text-minimessage:4.25.0")
|
||||
|
||||
// Gui library
|
||||
val inventoryFramework = "xyz.alexcrea.cuanvil.inventoryframework:IF-CustomAnvil:0.10.18.2"
|
||||
implementation(inventoryFramework)
|
||||
testRuntimeOnly(inventoryFramework)
|
||||
implementation("com.github.stefvanschie.inventoryframework:IF:0.10.14")
|
||||
|
||||
// EnchantsSquaredRewritten
|
||||
compileOnly(files("libs/EnchantsSquared.jar"))
|
||||
|
||||
// EcoEnchants & item
|
||||
compileOnly("com.willfp:libreforge:4.79.0:all")
|
||||
compileOnly("com.willfp:eco:6.74.5")
|
||||
|
||||
compileOnly("com.willfp:EcoEnchants:12.11.1")
|
||||
compileOnly(project(":impl:LegacyEcoEnchant"))
|
||||
|
||||
compileOnly("com.willfp:EcoItems:5.66.0")
|
||||
|
||||
// ExcellentEnchants
|
||||
implementation(project(":impl:ExcellentEnchant5_4"))
|
||||
compileOnly("su.nightexpress.excellentenchants:Core:5.1.0") {
|
||||
exclude("org.spigotmc")
|
||||
}
|
||||
compileOnly(files("libs/ExcellentEnchants-4.3.3-striped.jar")) // For pre v5 excellent enchants
|
||||
compileOnly(files("libs/ExcellentEnchants-4.1.0-striped.jar")) // For legacy excellent enchants
|
||||
// EcoEnchants
|
||||
compileOnly("com.willfp:EcoEnchants:12.5.1")
|
||||
compileOnly("com.willfp:eco:6.70.1")
|
||||
|
||||
// Disenchantment
|
||||
compileOnly(files("libs/Disenchantment-6.1.5.jar"))
|
||||
|
||||
// HavenBags
|
||||
compileOnly(files("libs/HavenBags-1.31.0.1760.jar"))
|
||||
|
||||
// ToolStats
|
||||
compileOnly(files("libs/toolstats-1.9.6-stripped.jar"))
|
||||
|
||||
// AxPlayerWarps
|
||||
compileOnly(files("libs/AxPlayerWarps-1.10.3.jar"))
|
||||
|
||||
// SuperEnchants
|
||||
compileOnly(files("libs/SuperEnchants-4.6.2-all.jar"))
|
||||
|
||||
// ItemsAdder API
|
||||
compileOnly("dev.lone:api-itemsadder:4.0.10")
|
||||
|
||||
// Vault api
|
||||
compileOnly("net.milkbowl.vault:VaultUnlockedAPI:2.16")
|
||||
compileOnly("cz.kominekjan:Disenchantment:v5.3.1")
|
||||
|
||||
// Include nms
|
||||
implementation(project(":nms:nms-common"))
|
||||
implementation(project(":nms:nms-paper"))
|
||||
for (nmsPart in reobfNMS) {
|
||||
implementation(project(":nms:$nmsPart", configuration = "reobf"))
|
||||
}
|
||||
|
||||
// include kotlin for the offline jar
|
||||
implementation(kotlin("stdlib"))
|
||||
|
||||
// Test dependency
|
||||
testImplementation("org.mockbukkit.mockbukkit:mockbukkit-v1.21:4.48.0")
|
||||
testRuntimeOnly("commons-lang:commons-lang:2.6")
|
||||
implementation(project(":nms:v1_17R1", configuration = "reobf"))
|
||||
implementation(project(":nms:v1_18R1", configuration = "reobf"))
|
||||
implementation(project(":nms:v1_18R2", configuration = "reobf"))
|
||||
implementation(project(":nms:v1_19R1", configuration = "reobf"))
|
||||
implementation(project(":nms:v1_19R2", configuration = "reobf"))
|
||||
implementation(project(":nms:v1_19R3", configuration = "reobf"))
|
||||
implementation(project(":nms:v1_20R1", configuration = "reobf"))
|
||||
implementation(project(":nms:v1_20R2", configuration = "reobf"))
|
||||
implementation(project(":nms:v1_20R3", configuration = "reobf"))
|
||||
implementation(project(":nms:v1_20R4", configuration = "reobf"))
|
||||
implementation(project(":nms:v1_21R1", configuration = "reobf"))
|
||||
}
|
||||
|
||||
allprojects {
|
||||
|
|
@ -141,10 +71,9 @@ allprojects {
|
|||
dependencies {
|
||||
compileOnly(kotlin("stdlib"))
|
||||
|
||||
// Test dependency
|
||||
testImplementation(platform("org.junit:junit-bom:5.12.2"))
|
||||
// Currently not used. but it would be useful to test.
|
||||
testImplementation(platform("org.junit:junit-bom:5.9.1"))
|
||||
testImplementation("org.junit.jupiter:junit-jupiter")
|
||||
testRuntimeOnly("org.junit.platform:junit-platform-launcher")
|
||||
}
|
||||
|
||||
tasks.getByName<Test>("test") {
|
||||
|
|
@ -154,13 +83,12 @@ allprojects {
|
|||
// Configure used version of kotlin and java
|
||||
java {
|
||||
disableAutoTargetJvm()
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(20))
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility =
|
||||
"16" // We aim for java 16 for minecraft 1.16.5. even if it not really supported by custom anvil.
|
||||
sourceCompatibility = "16" // We aim for java 16 for minecraft 1.16.5. even if it not really suported by custom anvil.
|
||||
targetCompatibility = "16"
|
||||
|
||||
options.encoding = "UTF-8"
|
||||
|
|
@ -168,64 +96,33 @@ allprojects {
|
|||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2)
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0)
|
||||
jvmTarget.set(JvmTarget.JVM_16)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
tasks {
|
||||
|
||||
fun ShadowJar.configureBaseShadow(suffix: String, libraries: Array<String>) {
|
||||
val processedSuffix = if(suffix.isEmpty()) "" else "-$suffix"
|
||||
val name = "${rootProject.name}-${effectiveVersion}${processedSuffix}.jar"
|
||||
archiveFileName.set(name)
|
||||
|
||||
// Shadow necessary dependency
|
||||
relocate("com.github.stefvanschie.inventoryframework", "xyz.alexcrea.cuanvil.inventoryframework")
|
||||
relocate("dev.faststats", "xyz.alexcrea.cuanvil.faststats")
|
||||
|
||||
filesMatching("plugin.yml") {
|
||||
expand(
|
||||
"version" to effectiveVersion + processedSuffix,
|
||||
"libraries" to libraries.joinToString(transform = { "\"$it\"" }),
|
||||
)
|
||||
}
|
||||
|
||||
// Process resource for plugin.yml
|
||||
dependsOn(processResources)
|
||||
// Fat-jar builder
|
||||
val fatJar = tasks.register<Jar>("fatJar") {
|
||||
manifest {
|
||||
attributes.apply { put("Main-Class", "io.delilaheve.CustomAnvil") }
|
||||
}
|
||||
archiveFileName.set("${rootProject.name}-${archiveVersion}.jar")
|
||||
exclude("META-INF/*.RSA", "META-INF/*.SF", "META-INF/*.DSA")
|
||||
duplicatesStrategy = DuplicatesStrategy.WARN
|
||||
from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) })
|
||||
with(tasks.jar.get() as CopySpec)
|
||||
}
|
||||
|
||||
// Online jar (use of libraries)
|
||||
shadowJar {
|
||||
configureBaseShadow("",
|
||||
arrayOf(
|
||||
"org.jetbrains.kotlin:kotlin-stdlib:2.3.0",
|
||||
"net.kyori:adventure-text-minimessage:4.25.0",
|
||||
"net.kyori:adventure-text-serializer-plain:4.25.0",
|
||||
"net.kyori:adventure-text-serializer-legacy:4.25.0",
|
||||
))
|
||||
|
||||
// Exclude kotlin std, annotations and adventure api
|
||||
exclude("*kotlin/**")
|
||||
exclude("**/annotations/**")
|
||||
exclude("net/kyori/**")
|
||||
}
|
||||
|
||||
val offlineJar by registering(ShadowJar::class) {
|
||||
configureBaseShadow("offline", emptyArray())
|
||||
|
||||
from(sourceSets.main.get().output)
|
||||
configurations = listOf(project.configurations.runtimeClasspath.get())
|
||||
}
|
||||
|
||||
// Make the online and offline jar on build
|
||||
named("build") {
|
||||
dependsOn(shadowJar, offlineJar)
|
||||
}
|
||||
// Ensure fatJar and copyJar are run
|
||||
tasks.getByName("build") {
|
||||
dependsOn(fatJar)
|
||||
}
|
||||
|
||||
// Shadow necessary dependency
|
||||
tasks.shadowJar {
|
||||
relocate("com.github.stefvanschie.inventoryframework", "xyz.alexcrea.inventoryframework")
|
||||
}
|
||||
|
||||
val sourcesJar by tasks.registering(Jar::class) {
|
||||
|
|
@ -233,12 +130,12 @@ val sourcesJar by tasks.registering(Jar::class) {
|
|||
from(kotlin.sourceSets.main.get().kotlin)
|
||||
}
|
||||
|
||||
val javadocJar by tasks.registering(Jar::class, fun Jar.() {
|
||||
val javadocJar by tasks.creating(Jar::class) {
|
||||
group = JavaBasePlugin.DOCUMENTATION_GROUP
|
||||
description = "Assembles Javadoc JAR"
|
||||
archiveClassifier.set("javadoc")
|
||||
from(tasks.named("dokkaHtml"))
|
||||
})
|
||||
}
|
||||
|
||||
signing {
|
||||
useGpgCmd()
|
||||
|
|
@ -251,12 +148,7 @@ signing {
|
|||
// PUBLISHING TO SONATYPE CONFIGURATION
|
||||
// ------------------------------------
|
||||
|
||||
// The path is recommended to be set to an empty directory
|
||||
val localMavenRepo = uri(
|
||||
project.findProperty("localMavenRepo") as String?
|
||||
?: rootProject.layout.buildDirectory.dir("local-maven-repo").get().asFile.toURI() // Convert to URI
|
||||
)
|
||||
|
||||
val localMavenRepo = uri("E:\\WorkSpace\\Java\\Maven\\repo") // The path is recommended to be set to an empty directory
|
||||
centralPortalPlus {
|
||||
url = localMavenRepo
|
||||
username = System.getenv("SONATYPE_USERNAME")
|
||||
|
|
@ -272,10 +164,6 @@ object Meta {
|
|||
const val snapshot = "https://s01.oss.sonatype.org/content/repositories/snapshots/"
|
||||
}
|
||||
|
||||
val disallowedDependency = HashSet<String>()
|
||||
disallowedDependency.addAll(reobfNMS)
|
||||
disallowedDependency.addAll(listOf("nms-common", "nms-paper", "kotlin-stdlib"))
|
||||
|
||||
publishing {
|
||||
repositories {
|
||||
maven {
|
||||
|
|
@ -291,16 +179,6 @@ publishing {
|
|||
from(components["kotlin"])
|
||||
artifact(tasks["sourcesJar"])
|
||||
artifact(tasks["javadocJar"])
|
||||
|
||||
versionMapping {
|
||||
usage("java-api") {
|
||||
fromResolutionOf("runtimeClasspath")
|
||||
}
|
||||
usage("java-runtime") {
|
||||
fromResolutionResult()
|
||||
}
|
||||
}
|
||||
|
||||
pom {
|
||||
name.set(project.name)
|
||||
description.set(Meta.desc)
|
||||
|
|
@ -333,123 +211,7 @@ publishing {
|
|||
issueManagement {
|
||||
url.set("https://github.com/${Meta.githubRepo}/issues")
|
||||
}
|
||||
|
||||
withXml {
|
||||
val dependenciesNode = (asNode().get("dependencies") as NodeList)[0] as Node
|
||||
|
||||
val toRemove = ArrayList<Node>()
|
||||
for (child in dependenciesNode.children()) {
|
||||
val artifactNode = ((child as Node).get("artifactId") as NodeList)[0] as Node
|
||||
val artifactID = artifactNode.value() as String
|
||||
|
||||
if(disallowedDependency.contains(artifactID)) {
|
||||
toRemove.add(child)
|
||||
}
|
||||
}
|
||||
|
||||
for (node in toRemove) {
|
||||
dependenciesNode.remove(node)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// hangar publish
|
||||
|
||||
fun executeGitCommand(vararg command: String): String {
|
||||
val byteOut = ByteArrayOutputStream()
|
||||
exec {
|
||||
commandLine = listOf("git", *command)
|
||||
standardOutput = byteOut
|
||||
}
|
||||
return byteOut.toString(Charsets.UTF_8.name()).trim()
|
||||
}
|
||||
|
||||
|
||||
fun latestCommitMessage(): String {
|
||||
return executeGitCommand("log", "-1", "--pretty=%B")
|
||||
}
|
||||
|
||||
fun changelog(isOnline: Boolean): String {
|
||||
var changelog = if(isDevBuild) latestCommitMessage()
|
||||
else System.getenv("RELEASE_CHANGELOG")
|
||||
|
||||
if(!isOnline) {
|
||||
changelog = "This is an offline version of the plugin. \\\n" +
|
||||
"This mean that this plugin libraries are shaded into this plugin \\\n" +
|
||||
"You likely want to use the normal version of this plugin\n\n" + changelog
|
||||
}
|
||||
|
||||
if(changelog == null || changelog.isEmpty()) {
|
||||
changelog = "empty changelog"
|
||||
}
|
||||
|
||||
return changelog
|
||||
}
|
||||
|
||||
hangarPublish {
|
||||
|
||||
fun HangarPublication.configure(isOnline: Boolean, devChannel: String, releaseChannel: String) {
|
||||
var versionName = effectiveVersion
|
||||
if(isPreRelease) versionName+= "-pre"
|
||||
if(!isOnline) versionName+= "-offline"
|
||||
|
||||
version.set(versionName)
|
||||
channel.set(if (isDevBuild || isPreRelease) devChannel else releaseChannel)
|
||||
|
||||
changelog.set(changelog(isOnline))
|
||||
id.set("CustomAnvil")
|
||||
apiKey.set(System.getenv("HANGAR_API_TOKEN"))
|
||||
|
||||
platforms {
|
||||
register(Platforms.PAPER) {
|
||||
// Set the JAR file to upload
|
||||
var task = if(isOnline) tasks.shadowJar
|
||||
else tasks.named<ShadowJar>("offlineJar")
|
||||
|
||||
jar.set(task.flatMap { it.archiveFile })
|
||||
|
||||
// Set platform versions from gradle.properties file
|
||||
val versions: List<String> = (property("paperVersion") as String)
|
||||
.split(",")
|
||||
.map { it.trim() }
|
||||
platformVersions.set(versions)
|
||||
|
||||
dependencies {
|
||||
hangar("ProtocolLib") {
|
||||
required.set(false)
|
||||
}
|
||||
url("Disenchantment", "https://modrinth.com/plugin/disenchantment") {
|
||||
required.set(false)
|
||||
}
|
||||
url("ToolStats", "https://modrinth.com/plugin/toolstats") {
|
||||
required.set(false)
|
||||
}
|
||||
url("HavenBags", "https://www.spigotmc.org/resources/havenbags-shulker-like-player-bound-bags-1-17-1-21-4.110420/") {
|
||||
required.set(false)
|
||||
}
|
||||
url("EcoEnchants", "https://www.spigotmc.org/resources/ecoenchants-%E2%AD%95-250-enchantments-%E2%9C%85-create-custom-enchants-%E2%9C%A8-essentials-cmi-support.79573/") {
|
||||
required.set(false)
|
||||
}
|
||||
hangar("EnchantsSquared") {
|
||||
required.set(false)
|
||||
}
|
||||
url("ExcellentEnchants", "https://www.spigotmc.org/resources/excellentenchants-%E2%AD%90-75-vanilla-like-enchantments.61693/") {
|
||||
required.set(false)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
publications.register("plugin") {
|
||||
configure(true, "DevSnapshot", "Release")
|
||||
}
|
||||
|
||||
publications.register("offline") {
|
||||
configure(false, "OfflineSnapshot", "OfflineRelease")
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,19 +3,6 @@
|
|||
# You can still manually edit here if you like to. but if you do, don't forget to /anvilconfigreload after you changes !
|
||||
#
|
||||
|
||||
# What service of metric should custom anvil use
|
||||
# Custom anvil collect generic information like server minecraft version, type, etc...
|
||||
# It can also collect error information if error is happening (currently faststats only)
|
||||
# It can also be disabled
|
||||
# Please refer to README for public metric link
|
||||
# Possible options: auto, bstat, faststats, disabled (auto by default)
|
||||
metric_type: auto
|
||||
|
||||
# Allow to report errors made caused by this plugin (only for faststats)
|
||||
# This allows me to fix potentials issue that I'm not aware of
|
||||
# Accept true or false (true by default)
|
||||
metric_collect_errors: true
|
||||
|
||||
# All anvil cost will be capped to limit_repair_value if enabled.
|
||||
#
|
||||
# In other words:
|
||||
|
|
@ -68,54 +55,10 @@ unit_repair_cost: 1
|
|||
# Valid values include 0 to 1000
|
||||
sacrifice_illegal_enchant_cost: 1
|
||||
|
||||
# Allow using color code and hexadecimal color.
|
||||
# Default limit to apply to any enchants missing from override_limits
|
||||
#
|
||||
# Color code are prefixed by "&" and hexadecimal color by "#".
|
||||
# Color code will not be applied if it colors nothing. "&&" can be used to write "&".
|
||||
# For minimessage see minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
allow_color_code: false
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: false
|
||||
|
||||
# This enables restricting color code for player having specific permission
|
||||
# It requires allow_color_code enabled for... obvious reasons
|
||||
#
|
||||
# For example: if player want to use "&aHello" it will be required that the player has
|
||||
# the permission "ca.color.code.a" as he used the color code "a"
|
||||
# In general permission to give to the player is "ca.color.code.[code]"
|
||||
# where [code] is the color code you wish to allow the player
|
||||
#
|
||||
# It is kinda of useless when minimessage is supported as players would be able to bypass
|
||||
# that using the equivalent minimessage tag
|
||||
per_color_code_permission: false
|
||||
|
||||
# Toggle if color should only be applicable if the player a certain permission.
|
||||
#
|
||||
# permission are "ca.color.code" for use of color code and "ca.color.hex" for use of hexadecimal color.
|
||||
permission_needed_for_color: true
|
||||
|
||||
# Xp cost if the player use color in the items name on rename.
|
||||
#
|
||||
# Valid values include 0 to 1000.
|
||||
use_of_color_cost: 0
|
||||
|
||||
# Dialogue rename menu make use of dialog menu to allow bigger rename
|
||||
# You can also change the maximum size and set it to -1 or less for maximum
|
||||
#
|
||||
# This feature only work on paper 1.21.7 or later
|
||||
#
|
||||
# At the moment only english is available for this menu... sorry !
|
||||
#
|
||||
# CustomAnvil use "ca.rename.dialog" when permission
|
||||
enable_dialog_rename: false
|
||||
dialog_rename_max_size: 256
|
||||
permission_needed_for_dialog_rename: false
|
||||
|
||||
# This allows custom anvil to not "guess" the text used for rename but store it in the item
|
||||
# It will make item stackable only and only if it had used the same rename text
|
||||
#
|
||||
# For practical reason. this only work when dialog rename is enabled
|
||||
dialog_rename_keep_user_text: true
|
||||
# Valid values include 1 to 1000
|
||||
default_limit: 5
|
||||
|
||||
# Override limits for specific enchants
|
||||
#
|
||||
|
|
@ -123,49 +66,48 @@ dialog_rename_keep_user_text: true
|
|||
#
|
||||
# Overrides provided default from aqua_affinity to depth_strider won't change effect with extra levels
|
||||
#
|
||||
# Valid range of 0 - 255 for each enchantment
|
||||
# -1 mean keep default
|
||||
# Valid range of 1 - 255 for each enchantment
|
||||
enchant_limits:
|
||||
minecraft:aqua_affinity: 1
|
||||
minecraft:binding_curse: 1
|
||||
minecraft:channeling: 1
|
||||
minecraft:flame: 1
|
||||
minecraft:infinity: 1
|
||||
minecraft:mending: 1
|
||||
minecraft:multishot: 1
|
||||
minecraft:silk_touch: 1
|
||||
minecraft:vanishing_curse: 1
|
||||
minecraft:depth_strider: 3 # anything more than 3 is treated as 3 by the game
|
||||
minecraft:protection: 4
|
||||
minecraft:fire_protection: 4
|
||||
minecraft:blast_protection: 4
|
||||
minecraft:projectile_protection: 4
|
||||
minecraft:feather_falling: 4
|
||||
minecraft:thorns: 3
|
||||
minecraft:respiration: 3
|
||||
minecraft:sharpness: 5
|
||||
minecraft:smite: 5
|
||||
minecraft:bane_of_arthropods: 5
|
||||
minecraft:knockback: 2
|
||||
minecraft:fire_aspect: 2
|
||||
minecraft:looting: 3
|
||||
minecraft:sweeping: 3
|
||||
minecraft:sweeping_edge: 3
|
||||
minecraft:efficiency: 5
|
||||
minecraft:unbreaking: 3
|
||||
minecraft:fortune: 3
|
||||
minecraft:power: 5
|
||||
minecraft:punch: 2
|
||||
minecraft:luck_of_the_sea: 3
|
||||
minecraft:lure: 3
|
||||
minecraft:frost_walker: 2
|
||||
minecraft:impaling: 5
|
||||
minecraft:riptide: 3
|
||||
minecraft:loyalty: 3
|
||||
minecraft:piercing: 4
|
||||
minecraft:quick_charge: 3
|
||||
minecraft:soul_speed: 3
|
||||
minecraft:swift_sneak: 3
|
||||
aqua_affinity: 1
|
||||
binding_curse: 1
|
||||
channeling: 1
|
||||
flame: 1
|
||||
infinity: 1
|
||||
mending: 1
|
||||
multishot: 1
|
||||
silk_touch: 1
|
||||
vanishing_curse: 1
|
||||
depth_strider: 3 # anything more than 3 is treated as 3 by the game
|
||||
protection: 4
|
||||
fire_protection: 4
|
||||
blast_protection: 4
|
||||
projectile_protection: 4
|
||||
feather_falling: 4
|
||||
thorns: 3
|
||||
respiration: 3
|
||||
sharpness: 5
|
||||
smite: 5
|
||||
bane_of_arthropods: 5
|
||||
knockback: 2
|
||||
fire_aspect: 2
|
||||
looting: 3
|
||||
sweeping: 3
|
||||
sweeping_edge: 3
|
||||
efficiency: 5
|
||||
unbreaking: 3
|
||||
fortune: 3
|
||||
power: 5
|
||||
punch: 2
|
||||
luck_of_the_sea: 3
|
||||
lure: 3
|
||||
frost_walker: 2
|
||||
impaling: 5
|
||||
riptide: 3
|
||||
loyalty: 3
|
||||
piercing: 4
|
||||
quick_charge: 3
|
||||
soul_speed: 3
|
||||
swift_sneak: 3
|
||||
|
||||
# Multipliers used to calculate the enchantment's value in repair/combining
|
||||
#
|
||||
|
|
@ -179,288 +121,131 @@ enchant_limits:
|
|||
# With default values protection 4 would have a value of 4 when
|
||||
# coming from either a book (4 * 1) or an item (4 * 1)
|
||||
enchant_values:
|
||||
minecraft:aqua_affinity:
|
||||
aqua_affinity:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:bane_of_arthropods:
|
||||
bane_of_arthropods:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:binding_curse:
|
||||
binding_curse:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:blast_protection:
|
||||
blast_protection:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:channeling:
|
||||
channeling:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:depth_strider:
|
||||
depth_strider:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:efficiency:
|
||||
efficiency:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:flame:
|
||||
flame:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:feather_falling:
|
||||
feather_falling:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:fire_aspect:
|
||||
fire_aspect:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:fire_protection:
|
||||
fire_protection:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:fortune:
|
||||
fortune:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:frost_walker:
|
||||
frost_walker:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:impaling:
|
||||
impaling:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:infinity:
|
||||
infinity:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:knockback:
|
||||
knockback:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:looting:
|
||||
looting:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:loyalty:
|
||||
loyalty:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:luck_of_the_sea:
|
||||
luck_of_the_sea:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:lure:
|
||||
lure:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:mending:
|
||||
mending:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:multishot:
|
||||
multishot:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:piercing:
|
||||
piercing:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:power:
|
||||
power:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:projectile_protection:
|
||||
projectile_protection:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:protection:
|
||||
protection:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:punch:
|
||||
punch:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:quick_charge:
|
||||
quick_charge:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:respiration:
|
||||
respiration:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:riptide:
|
||||
riptide:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:silk_touch:
|
||||
silk_touch:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:sharpness:
|
||||
sharpness:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:smite:
|
||||
smite:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:soul_speed:
|
||||
soul_speed:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:swift_sneak:
|
||||
swift_sneak:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:sweeping:
|
||||
sweeping:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:sweeping_edge:
|
||||
sweeping_edge:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:thorns:
|
||||
thorns:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:unbreaking:
|
||||
unbreaking:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:vanishing_curse:
|
||||
vanishing_curse:
|
||||
item: 8
|
||||
book: 4
|
||||
|
||||
# Disable enchantment merging for level above the set value
|
||||
# Enchantment merging is when, for example, 2 unbreaking II book combine to give sharpness III
|
||||
# But Enchantment above this value can still be applied. following the previous example, we could still apply a unbreaking III book to a sword
|
||||
# Even if disable-merge-over of unbreaking is set to 2
|
||||
# -1 mean enchantment merge for this enchantment is not disabled. default to -1 if absent.
|
||||
disable-merge-over:
|
||||
# Sharpness is set to -1. it equivalent to it not being set to anything (and work as vanilla on default configuration)
|
||||
minecraft:sharpness: -1
|
||||
# If uncommented. 2 unbreaking II book would not give an unbreaking III book. but unbreaking III book can still be applied
|
||||
#minecraft:unbreaking: 2
|
||||
|
||||
# The maximum number of enchantment an item can get. -1 for infinity
|
||||
# Use eco enchant enchant_limit if present by default unless "default" is not equal to -1
|
||||
enchantment_count_limit:
|
||||
default: -1
|
||||
# Limit for specific items. example bellow is an example with stick
|
||||
# Per item enchantment limit override eco enchant enchant_limit and default limit
|
||||
items:
|
||||
stick: -1
|
||||
|
||||
# Settings for lore modification
|
||||
lore_edit:
|
||||
book_and_quil:
|
||||
# Permission is ca.lore_edit.book
|
||||
use_permission: true
|
||||
append:
|
||||
# If adding lore using book & quil is enabled
|
||||
enabled: false
|
||||
# Cost used every time
|
||||
fixed_cost: 1
|
||||
# Cost used for every lore line added
|
||||
per_line_cost: 0
|
||||
# Use left item vanilla cost penalty if any
|
||||
shared_increase: false
|
||||
# Increase shared left item cost penalty
|
||||
shared_additive: false
|
||||
# If adding the lore consume the book & quil
|
||||
do_consume: false
|
||||
# Allow using color code and hexadecimal color when editing lore via book & quil
|
||||
#
|
||||
# Color code are prefixed by "&" and hexadecimal color by "#"
|
||||
# Color code will not be applied if it colors nothing. "&&" can be used to write "&"
|
||||
# For minimessage see minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
#
|
||||
# Note that currently minimessage would disable hex code when adding color
|
||||
allow_color_code: true
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: true
|
||||
|
||||
remove:
|
||||
# If removing lore using book & quil is enabled
|
||||
enabled: false
|
||||
# Cost used every time
|
||||
fixed_cost: 1
|
||||
# Cost used for every lore line removed
|
||||
per_line_cost: 0
|
||||
# Use left item vanilla cost penalty if any
|
||||
shared_increase: false
|
||||
# Increase shared left item cost penalty
|
||||
shared_additive: false
|
||||
# If removing the lore consume the book & quil
|
||||
do_consume: false
|
||||
# Cost of replacing colors
|
||||
remove_color_cost: 0
|
||||
# Allowed some color and tags to be reverted to plain text
|
||||
# Custom anvil will prioritise format that result is a smaller resulting text
|
||||
# Note that not allowing certain format will lead to some lost of color or tags.
|
||||
# If configuration are exact as append appending this book should result in the exact same color
|
||||
#
|
||||
# Color code will be prefixed by "&" and hexadecimal color by "#".
|
||||
# If color code is allowed, "&" in the text will get converted to "&&"
|
||||
# For minimessage see minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
allow_color_code: true
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: true
|
||||
|
||||
paper:
|
||||
# Permission is ca.lore_edit.paper
|
||||
use_permission: true
|
||||
# what order should the lines should get added/removed (start/end, if invalid or not present will be end)
|
||||
order: end
|
||||
|
||||
append_line:
|
||||
# If adding lore line using paper is enabled
|
||||
enabled: false
|
||||
# Cost used every time
|
||||
fixed_cost: 1
|
||||
# Use left item vanilla cost penalty if any
|
||||
shared_increase: false
|
||||
# Increase shared left item cost penalty
|
||||
shared_additive: false
|
||||
# If adding the lore line consume the paper
|
||||
do_consume: false
|
||||
# Allow using color code and hexadecimal color when editing lore via book & quil
|
||||
#
|
||||
# Color code are prefixed by "&" and hexadecimal color by "#"
|
||||
# Color code will not be applied if it colors nothing. "&&" can be used to write "&"
|
||||
# For minimessage see minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
#
|
||||
# Note that currently minimessage would disable hex code when adding color
|
||||
allow_color_code: true
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: true
|
||||
color_use_cost: 0
|
||||
|
||||
remove_line:
|
||||
# If removing lore line using paper is enabled
|
||||
enabled: false
|
||||
# Cost used every time
|
||||
fixed_cost: 1
|
||||
# Use left item vanilla cost penalty if any
|
||||
shared_increase: false
|
||||
# Increase shared left item cost penalty
|
||||
shared_additive: false
|
||||
# If removing the lore line consume the paper
|
||||
do_consume: false
|
||||
# Cost of replacing colors
|
||||
remove_color_cost: 0
|
||||
# Allowed some color and tags to be reverted to plain text
|
||||
# Custom anvil will prioritise format that result is a smaller resulting text
|
||||
# Note that not allowing certain format will lead to some lost of color or tags.
|
||||
# If configuration are exact as append appending this paper should result in the exact same color
|
||||
#
|
||||
# Color code will be prefixed by "&" and hexadecimal color by "#".
|
||||
# If color code is allowed, "&" in the text will get converted to "&&"
|
||||
# For minimessage see minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
allow_color_code: true
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: true
|
||||
|
||||
# Allow to replace the xp cost by a monetary cost
|
||||
# If enabled it will not be bound to the experience level limits
|
||||
#
|
||||
# It also requires to enable dialog rename (set "enable_dialog_rename: false" a bit higher)
|
||||
# If dialog rename permission is enabled and player do not have the permission merge will fall back to vanilla xp cost
|
||||
#
|
||||
# If you are using custom craft I recommend using Linear Xp Cost with Exact Linear Xp as normal Xp Cost will act "weird"
|
||||
# But Linear Xp will act as 1$ time global multiplier. In other word: like you expect
|
||||
#
|
||||
# As this feature require dialog rename, it can only be enabled starting with paper 1.21.6 and later
|
||||
monetary_cost:
|
||||
enabled: false
|
||||
# If using vault unlocked this allow to specify what currency should be used for anvil usage
|
||||
# default being the default currency
|
||||
currency: default
|
||||
# multiply the anvil cost by a value to allow to have price a big bigger than like 40
|
||||
multipliers:
|
||||
# global multipliers. all usage type will be multiplied by this value
|
||||
global: 1.0
|
||||
# usage specific type. it will only apply for specific xp "reason"
|
||||
enchantment: 1.0 # related to enchantments level
|
||||
repair: 1.0 # for repairing via unit repair (per unit)
|
||||
rename: 1.0 # for renaming the item
|
||||
lore_edit: 1.0 # for changing the lore of the item (only if lore edit is enabled)
|
||||
work_penalty: 1.0 # for work penalty (aka use penalty)
|
||||
recipe: 1.0 # for custom anvil recipe cost
|
||||
|
||||
# Whether to show debug logging
|
||||
debug_log: false
|
||||
|
||||
# Whether to show verbose debug logging
|
||||
debug_log_verbose: false
|
||||
|
||||
configVersion: 1.11.0
|
||||
configVersion: 1.4.5
|
||||
|
|
|
|||
|
|
@ -17,162 +17,158 @@
|
|||
# ----------------------------------------------------
|
||||
|
||||
restriction_aqua_affinity:
|
||||
enchantments: [ minecraft:aqua_affinity ]
|
||||
enchantments: [ aqua_affinity ]
|
||||
notAffectedGroups: [ enchanted_book, helmets ]
|
||||
|
||||
restriction_bane_of_arthropods:
|
||||
enchantments: [ minecraft:bane_of_arthropods ]
|
||||
enchantments: [ bane_of_arthropods ]
|
||||
notAffectedGroups: [ enchanted_book, melee_weapons ]
|
||||
|
||||
restriction_blast_protection:
|
||||
enchantments: [ minecraft:blast_protection ]
|
||||
enchantments: [ blast_protection ]
|
||||
notAffectedGroups: [ enchanted_book, armors ]
|
||||
|
||||
restriction_channeling:
|
||||
enchantments: [ minecraft:channeling ]
|
||||
enchantments: [ channeling ]
|
||||
notAffectedGroups: [ enchanted_book, trident ]
|
||||
|
||||
restriction_binding_curse:
|
||||
enchantments: [ minecraft:binding_curse ]
|
||||
enchantments: [ binding_curse ]
|
||||
notAffectedGroups: [ enchanted_book, wearable ]
|
||||
|
||||
restriction_vanishing_curse:
|
||||
enchantments: [ minecraft:vanishing_curse ]
|
||||
enchantments: [ vanishing_curse ]
|
||||
notAffectedGroups: [ enchanted_book, can_vanish ]
|
||||
|
||||
restriction_depth_strider:
|
||||
enchantments: [ minecraft:depth_strider ]
|
||||
enchantments: [ depth_strider ]
|
||||
notAffectedGroups: [ enchanted_book, boots ]
|
||||
|
||||
restriction_efficiency:
|
||||
enchantments: [ minecraft:efficiency ]
|
||||
enchantments: [ efficiency ]
|
||||
notAffectedGroups: [ enchanted_book, tools, shears ]
|
||||
|
||||
restriction_feather_falling:
|
||||
enchantments: [ minecraft:feather_falling ]
|
||||
enchantments: [ feather_falling ]
|
||||
notAffectedGroups: [ enchanted_book, boots ]
|
||||
|
||||
restriction_fire_aspect:
|
||||
enchantments: [ minecraft:fire_aspect ]
|
||||
enchantments: [ fire_aspect ]
|
||||
notAffectedGroups: [ enchanted_book, swords ]
|
||||
|
||||
restriction_fire_protection:
|
||||
enchantments: [ minecraft:fire_protection ]
|
||||
enchantments: [ fire_protection ]
|
||||
notAffectedGroups: [ enchanted_book, armors ]
|
||||
|
||||
restriction_flame:
|
||||
enchantments: [ minecraft:flame ]
|
||||
enchantments: [ flame ]
|
||||
notAffectedGroups: [ enchanted_book, bow ]
|
||||
|
||||
restriction_fortune:
|
||||
enchantments: [ minecraft:fortune ]
|
||||
enchantments: [ fortune ]
|
||||
notAffectedGroups: [ enchanted_book, tools ]
|
||||
|
||||
restriction_frost_walker:
|
||||
enchantments: [ minecraft:frost_walker ]
|
||||
enchantments: [ frost_walker ]
|
||||
notAffectedGroups: [ enchanted_book, boots ]
|
||||
|
||||
restriction_impaling:
|
||||
enchantments: [ minecraft:impaling ]
|
||||
enchantments: [ impaling ]
|
||||
notAffectedGroups: [ enchanted_book, trident ]
|
||||
|
||||
restriction_infinity:
|
||||
enchantments: [ minecraft:infinity ]
|
||||
enchantments: [ infinity ]
|
||||
notAffectedGroups: [ enchanted_book, bow ]
|
||||
|
||||
restriction_knockback:
|
||||
enchantments: [ minecraft:knockback ]
|
||||
enchantments: [ knockback ]
|
||||
notAffectedGroups: [ enchanted_book, swords ]
|
||||
|
||||
restriction_looting:
|
||||
enchantments: [ minecraft:looting ]
|
||||
enchantments: [ looting ]
|
||||
notAffectedGroups: [ enchanted_book, swords ]
|
||||
|
||||
restriction_loyalty:
|
||||
enchantments: [ minecraft:loyalty ]
|
||||
enchantments: [ loyalty ]
|
||||
notAffectedGroups: [ enchanted_book, trident ]
|
||||
|
||||
restriction_luck_of_the_sea:
|
||||
enchantments: [ minecraft:luck_of_the_sea ]
|
||||
notAffectedGroups: [ enchanted_book, fishing_rod ]
|
||||
|
||||
restriction_lure:
|
||||
enchantments: [ minecraft:lure ]
|
||||
enchantments: [ lure ]
|
||||
notAffectedGroups: [ enchanted_book, fishing_rod ]
|
||||
|
||||
restriction_mending:
|
||||
enchantments: [ minecraft:mending ]
|
||||
enchantments: [ mending ]
|
||||
notAffectedGroups: [ enchanted_book, can_unbreak ]
|
||||
|
||||
restriction_minecraft_multishot:
|
||||
enchantments: [ minecraft:multishot ]
|
||||
restriction_multishot:
|
||||
enchantments: [ multishot ]
|
||||
notAffectedGroups: [ enchanted_book, crossbow ]
|
||||
|
||||
restriction_piercing:
|
||||
enchantments: [ minecraft:piercing ]
|
||||
enchantments: [ piercing ]
|
||||
notAffectedGroups: [ enchanted_book, crossbow ]
|
||||
|
||||
restriction_power:
|
||||
enchantments: [ minecraft:power ]
|
||||
enchantments: [ power ]
|
||||
notAffectedGroups: [ enchanted_book, bow ]
|
||||
|
||||
restriction_projectile_protection:
|
||||
enchantments: [ minecraft:projectile_protection ]
|
||||
enchantments: [ projectile_protection ]
|
||||
notAffectedGroups: [ enchanted_book, armors ]
|
||||
|
||||
restriction_protection:
|
||||
enchantments: [ minecraft:protection ]
|
||||
enchantments: [ protection ]
|
||||
notAffectedGroups: [ enchanted_book, armors ]
|
||||
|
||||
restriction_punch:
|
||||
enchantments: [ minecraft:punch ]
|
||||
enchantments: [ punch ]
|
||||
notAffectedGroups: [ enchanted_book, bow ]
|
||||
|
||||
restriction_quick_charge:
|
||||
enchantments: [ minecraft:quick_charge ]
|
||||
enchantments: [ quick_charge ]
|
||||
notAffectedGroups: [ enchanted_book, crossbow ]
|
||||
|
||||
restriction_respiration:
|
||||
enchantments: [ minecraft:respiration ]
|
||||
enchantments: [ respiration ]
|
||||
notAffectedGroups: [ enchanted_book, helmets ]
|
||||
|
||||
restriction_riptide:
|
||||
enchantments: [ minecraft:riptide ]
|
||||
enchantments: [ riptide ]
|
||||
notAffectedGroups: [ enchanted_book, trident ]
|
||||
|
||||
restriction_sharpness:
|
||||
enchantments: [ minecraft:sharpness ]
|
||||
enchantments: [ sharpness ]
|
||||
notAffectedGroups: [ enchanted_book, melee_weapons ]
|
||||
|
||||
restriction__silk_touch:
|
||||
enchantments: [ minecraft:silk_touch ]
|
||||
restriction_silk_touch:
|
||||
enchantments: [ silk_touch ]
|
||||
notAffectedGroups: [ enchanted_book, tools ]
|
||||
|
||||
restriction_smite:
|
||||
enchantments: [ minecraft:smite ]
|
||||
enchantments: [ smite ]
|
||||
notAffectedGroups: [ enchanted_book, melee_weapons ]
|
||||
|
||||
restriction_soul_speed:
|
||||
enchantments: [ minecraft:soul_speed ]
|
||||
enchantments: [ soul_speed ]
|
||||
notAffectedGroups: [ enchanted_book, boots ]
|
||||
|
||||
restriction_sweeping_edge:
|
||||
enchantments: [ minecraft:sweeping, minecraft:sweeping_edge ]
|
||||
enchantments: [ sweeping, sweeping_edge ]
|
||||
notAffectedGroups: [ enchanted_book, swords ]
|
||||
|
||||
# Do not exist in 1.18, that mean useInFuture will be set to true
|
||||
# useInFuture set to true also mean it will not warn if there is an issue
|
||||
restriction_swift_sneak:
|
||||
useInFuture: true
|
||||
enchantments: [ minecraft:swift_sneak ]
|
||||
enchantments: [ swift_sneak ]
|
||||
notAffectedGroups: [ enchanted_book, leggings ]
|
||||
|
||||
restriction_thorns:
|
||||
enchantments: [ minecraft:thorns ]
|
||||
enchantments: [ thorns ]
|
||||
notAffectedGroups: [ enchanted_book, armors ]
|
||||
|
||||
restriction__unbreaking:
|
||||
enchantments: [ minecraft:unbreaking ]
|
||||
restriction_unbreaking:
|
||||
enchantments: [ unbreaking ]
|
||||
notAffectedGroups: [ enchanted_book, can_unbreak ]
|
||||
|
||||
# ----------------------------------------------------
|
||||
|
|
@ -184,60 +180,60 @@ restriction__unbreaking:
|
|||
|
||||
sword_enchant_conflict:
|
||||
enchantments:
|
||||
- minecraft:bane_of_arthropods
|
||||
- minecraft:smite
|
||||
- minecraft:sharpness
|
||||
- bane_of_arthropods
|
||||
- smite
|
||||
- sharpness
|
||||
notAffectedGroups: [ ]
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
protection_enchant_conflict:
|
||||
enchantments:
|
||||
- minecraft:blast_protection
|
||||
- minecraft:fire_protection
|
||||
- minecraft:projectile_protection
|
||||
- minecraft:protection
|
||||
- blast_protection
|
||||
- fire_protection
|
||||
- projectile_protection
|
||||
- protection
|
||||
notAffectedGroups: [ ]
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
trident_conflict1:
|
||||
enchantments:
|
||||
- minecraft:channeling
|
||||
- minecraft:riptide
|
||||
- channeling
|
||||
- riptide
|
||||
notAffectedGroups: [ ]
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
trident_conflict2:
|
||||
enchantments:
|
||||
- minecraft:loyalty
|
||||
- minecraft:riptide
|
||||
- loyalty
|
||||
- riptide
|
||||
notAffectedGroups: [ ]
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
boot_conflict:
|
||||
enchantments:
|
||||
- minecraft:depth_strider
|
||||
- minecraft:frost_walker
|
||||
- depth_strider
|
||||
- frost_walker
|
||||
notAffectedGroups: [ ]
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
tool_conflict:
|
||||
enchantments:
|
||||
- minecraft:fortune
|
||||
- minecraft:silk_touch
|
||||
- fortune
|
||||
- silk_touch
|
||||
notAffectedGroups: [ ]
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
bow_conflict:
|
||||
enchantments:
|
||||
- minecraft:mending
|
||||
- minecraft:infinity
|
||||
- mending
|
||||
- infinity
|
||||
notAffectedGroups: [ ]
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
crossbow_conflict:
|
||||
enchantments:
|
||||
- minecraft:multishot
|
||||
- minecraft:piercing
|
||||
- multishot
|
||||
- piercing
|
||||
notAffectedGroups: [ ]
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +0,0 @@
|
|||
### Default Plugin's Configurations For 1.21.11
|
||||
- [config.yml](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs/1.21.11/config.yml)
|
||||
- [enchant_conflict.yml](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs/1.21.11/enchant_conflict.yml)
|
||||
- [item_groups.yml](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs/1.21.11/item_groups.yml)
|
||||
- [unit_repair_item.yml](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs/1.21.11/unit_repair_item.yml)
|
||||
- [custom_recipes.yml](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs/1.21.11/custom_recipes.yml)
|
||||
|
|
@ -1,487 +0,0 @@
|
|||
#
|
||||
# It is recommended that you use /configanvil to edit theses config.
|
||||
# You can still manually edit here if you like to. but if you do, don't forget to /anvilconfigreload after you changes !
|
||||
#
|
||||
|
||||
# What service of metric should custom anvil use
|
||||
# Custom anvil collect generic information like server minecraft version, type, etc...
|
||||
# It can also collect error information if error is happening (currently faststats only)
|
||||
# It can also be disabled
|
||||
# Please refer to README for public metric link
|
||||
# Possible options: auto, bstat, faststats, disabled (auto by default)
|
||||
metric_type: auto
|
||||
|
||||
# Allow to report errors made caused by this plugin (only for faststats)
|
||||
# This allows me to fix potentials issue that I'm not aware of
|
||||
# Accept true or false (true by default)
|
||||
metric_collect_errors: true
|
||||
|
||||
# All anvil cost will be capped to limit_repair_value if enabled.
|
||||
#
|
||||
# In other words:
|
||||
# For any anvil cost greater than limit_repair_value, Cost will be set to limit_repair_value.
|
||||
limit_repair_cost: false
|
||||
|
||||
# Max cost value the Anvil can get to.
|
||||
#
|
||||
# Valid values include 0 to 1000.
|
||||
# Cost will be displayed as "Too Expensive":
|
||||
# - If Cost is above 39
|
||||
# - And replace_too_expensive is disabled (false)
|
||||
limit_repair_value: 39
|
||||
|
||||
# Whether the anvil's cost limit should be removed entirely.
|
||||
#
|
||||
# The anvil will still visually display "Too Expensive" if "replace_too_expensive" is disabled
|
||||
# However, the action will be completable if xp requirement is meet.
|
||||
remove_repair_limit: false
|
||||
|
||||
# Whenever anvil cost is above 39 should display the true price and not "Too Expensive".
|
||||
#
|
||||
# However, when bypassing "Too Expensive", anvil price will be displayed as Green.
|
||||
# If the action is not completable, the cost will still be displayed as "Too expensive".
|
||||
# That mean you also need to change other settings like remove_repair_limit or limit_repair_cost.
|
||||
#
|
||||
# Require ProtocoLib.
|
||||
replace_too_expensive: false
|
||||
|
||||
# XP Level amount added to the anvil when the item is repaired by another item of the same type
|
||||
#
|
||||
# Valid values include 0 to 1000
|
||||
item_repair_cost: 2
|
||||
|
||||
# XP Level amount added to the anvil when the item is renamed
|
||||
#
|
||||
# Valid values include 0 to 1000
|
||||
item_rename_cost: 1
|
||||
|
||||
# XP Level amount added to the anvil when the item is repaired by an "unit"
|
||||
# For example: a Diamond on a Diamond Sword
|
||||
# What's considered unit for what can be edited on the unit repair configuration.
|
||||
#
|
||||
# Valid values include 0 to 1000
|
||||
unit_repair_cost: 1
|
||||
|
||||
# XP Level amount added to the anvil when a sacrifice enchantment
|
||||
# conflict with one of the left item enchantment
|
||||
#
|
||||
# Valid values include 0 to 1000
|
||||
sacrifice_illegal_enchant_cost: 1
|
||||
|
||||
# Allow using color code and hexadecimal color.
|
||||
#
|
||||
# Color code are prefixed by "&" and hexadecimal color by "#".
|
||||
# Color code will not be applied if it colors nothing. "&&" can be used to write "&".
|
||||
# For minimessage search for minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
# Note that only color and decoration tags are allowed for minimisage in the v1 version of this plugin
|
||||
# but any global tag will be allowed later when v2 release
|
||||
allow_color_code: false
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: false
|
||||
|
||||
# This enables restricting color code for player having specific permission
|
||||
# It requires allow_color_code enabled for... obvious reasons
|
||||
#
|
||||
# For example: if player want to use "&aHello" it will be required that the player has
|
||||
# the permission "ca.color.code.a" as he used the color code "a"
|
||||
# In general permission to give to the player is "ca.color.code.[code]"
|
||||
# where [code] is the color code you wish to allow the player
|
||||
#
|
||||
# It is kinda of useless when minimessage is supported as players would be able to bypass
|
||||
# that using the equivalent minimessage tag
|
||||
per_color_code_permission: false
|
||||
|
||||
# Toggle if color should only be applicable if the player a certain permission.
|
||||
#
|
||||
# permission are "ca.color.code" for use of color code and "ca.color.hex" for use of hexadecimal color.
|
||||
permission_needed_for_color: true
|
||||
|
||||
# Xp cost if the player use color in the items name on rename.
|
||||
#
|
||||
# Valid values include 0 to 1000.
|
||||
use_of_color_cost: 0
|
||||
|
||||
# Dialogue rename menu make use of dialog menu to allow bigger rename
|
||||
# You can also change the maximum size and set it to -1 or less for maximum
|
||||
#
|
||||
# This feature only work on paper 1.21.7 or later
|
||||
#
|
||||
# At the moment only english is available for this menu... sorry !
|
||||
#
|
||||
# CustomAnvil use "ca.rename.dialog" when permission
|
||||
enable_dialog_rename: false
|
||||
dialog_rename_max_size: 256
|
||||
permission_needed_for_dialog_rename: false
|
||||
|
||||
# This allows custom anvil to not "guess" the text used for rename but store it in the item
|
||||
# It will make item stackable only and only if it had used the same rename text
|
||||
#
|
||||
# For practical reason. this only work when dialog rename is enabled
|
||||
dialog_rename_keep_user_text: true
|
||||
|
||||
# Override limits for specific enchants
|
||||
#
|
||||
# Enchantments not listed here will use the value of default_limit
|
||||
#
|
||||
# Overrides provided default from aqua_affinity to depth_strider won't change effect with extra levels
|
||||
#
|
||||
# Valid range of 0 - 255 for each enchantment
|
||||
# -1 mean keep default
|
||||
enchant_limits:
|
||||
minecraft:aqua_affinity: 1
|
||||
minecraft:binding_curse: 1
|
||||
minecraft:channeling: 1
|
||||
minecraft:flame: 1
|
||||
minecraft:infinity: 1
|
||||
minecraft:mending: 1
|
||||
minecraft:multishot: 1
|
||||
minecraft:silk_touch: 1
|
||||
minecraft:vanishing_curse: 1
|
||||
minecraft:depth_strider: 3 # anything more than 3 is treated as 3 by the game
|
||||
minecraft:protection: 4
|
||||
minecraft:fire_protection: 4
|
||||
minecraft:blast_protection: 4
|
||||
minecraft:projectile_protection: 4
|
||||
minecraft:feather_falling: 4
|
||||
minecraft:thorns: 3
|
||||
minecraft:respiration: 3
|
||||
minecraft:sharpness: 5
|
||||
minecraft:smite: 5
|
||||
minecraft:bane_of_arthropods: 5
|
||||
minecraft:knockback: 2
|
||||
minecraft:fire_aspect: 2
|
||||
minecraft:looting: 3
|
||||
minecraft:sweeping: 3
|
||||
minecraft:sweeping_edge: 3
|
||||
minecraft:efficiency: 5
|
||||
minecraft:unbreaking: 3
|
||||
minecraft:fortune: 3
|
||||
minecraft:power: 5
|
||||
minecraft:punch: 2
|
||||
minecraft:luck_of_the_sea: 3
|
||||
minecraft:lure: 3
|
||||
minecraft:frost_walker: 2
|
||||
minecraft:impaling: 5
|
||||
minecraft:riptide: 3
|
||||
minecraft:loyalty: 3
|
||||
minecraft:piercing: 4
|
||||
minecraft:quick_charge: 3
|
||||
minecraft:soul_speed: 3
|
||||
minecraft:swift_sneak: 3
|
||||
minecraft:density: 5
|
||||
minecraft:breach: 4
|
||||
minecraft:wind_burst: 3
|
||||
minecraft:lunge: 3
|
||||
|
||||
# Multipliers used to calculate the enchantment's value in repair/combining
|
||||
#
|
||||
# Values here are pulled from the fandom wiki:
|
||||
# https://minecraft.fandom.com/wiki/Anvil_mechanics#Costs_for_combining_enchantments
|
||||
#
|
||||
# If an enchantment is missing values here, or is less than 0, it will default to 0
|
||||
#
|
||||
# Calculated as: [Enchantment lvl] * [multiplier]
|
||||
#
|
||||
# With default values protection 4 would have a value of 4 when
|
||||
# coming from either a book (4 * 1) or an item (4 * 1)
|
||||
enchant_values:
|
||||
minecraft:aqua_affinity:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:bane_of_arthropods:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:binding_curse:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:blast_protection:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:channeling:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:depth_strider:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:efficiency:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:flame:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:feather_falling:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:fire_aspect:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:fire_protection:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:fortune:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:frost_walker:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:impaling:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:infinity:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:knockback:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:looting:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:loyalty:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:luck_of_the_sea:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:lure:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:mending:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:multishot:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:piercing:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:power:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:projectile_protection:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:protection:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:punch:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:quick_charge:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:respiration:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:riptide:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:silk_touch:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:sharpness:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:smite:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:soul_speed:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:swift_sneak:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:sweeping:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:sweeping_edge:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:thorns:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:unbreaking:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:vanishing_curse:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:density:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:breach:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:wind_burst:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:lunge:
|
||||
item: 2
|
||||
book: 1
|
||||
|
||||
# Disable enchantment merging for level above the set value
|
||||
# Enchantment merging is when, for example, 2 unbreaking II book combine to give sharpness III
|
||||
# But Enchantment above this value can still be applied. following the previous example, we could still apply a unbreaking III book to a sword
|
||||
# Even if disable-merge-over of unbreaking is set to 2
|
||||
# -1 mean enchantment merge for this enchantment is not disabled. default to -1 if absent.
|
||||
disable-merge-over:
|
||||
# Sharpness is set to -1. it equivalent to it not being set to anything (and work as vanilla on default configuration)
|
||||
minecraft:sharpness: -1
|
||||
# If uncommented. 2 unbreaking II book would not give an unbreaking III book. but unbreaking III book can still be applied
|
||||
# minecraft:unbreaking: 2
|
||||
|
||||
# The maximum number of enchantment an item can get. -1 for infinity
|
||||
# Use eco enchant enchant_limit if present by default unless "default" is not equal to -1
|
||||
enchantment_count_limit:
|
||||
default: -1
|
||||
# Limit for specific items. example bellow is an example with stick
|
||||
# Per item enchantment limit override eco enchant enchant_limit and default limit
|
||||
items:
|
||||
stick: -1
|
||||
|
||||
# Settings for lore modification
|
||||
lore_edit:
|
||||
book_and_quil:
|
||||
# Permission is ca.lore_edit.book
|
||||
use_permission: true
|
||||
append:
|
||||
# If adding lore using book & quil is enabled
|
||||
enabled: false
|
||||
# Cost used every time
|
||||
fixed_cost: 1
|
||||
# Cost used for every lore line added
|
||||
per_line_cost: 0
|
||||
# Use left item vanilla cost penalty if any
|
||||
shared_increase: false
|
||||
# Increase shared left item cost penalty
|
||||
shared_additive: false
|
||||
# If adding the lore consume the book & quil
|
||||
do_consume: false
|
||||
# Allow using color code and hexadecimal color when editing lore via book & quil
|
||||
#
|
||||
# Color code are prefixed by "&" and hexadecimal color by "#"
|
||||
# Color code will not be applied if it colors nothing. "&&" can be used to write "&"
|
||||
# For minimessage see minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
#
|
||||
# Note that currently minimessage would disable hex code when adding color
|
||||
allow_color_code: true
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: true
|
||||
use_cost: 0
|
||||
|
||||
remove:
|
||||
# If removing lore using book & quil is enabled
|
||||
enabled: false
|
||||
# Cost used every time
|
||||
fixed_cost: 1
|
||||
# Cost used for every lore line removed
|
||||
per_line_cost: 0
|
||||
# Use left item vanilla cost penalty if any
|
||||
shared_increase: false
|
||||
# Increase shared left item cost penalty
|
||||
shared_additive: false
|
||||
# If removing the lore consume the book & quil
|
||||
do_consume: false
|
||||
# Cost of replacing colors
|
||||
remove_color_cost: 0
|
||||
# Allowed some color and tags to be reverted to plain text
|
||||
# Custom anvil will prioritise format that result is a smaller resulting text
|
||||
# Note that not allowing certain format will lead to some lost of color or tags.
|
||||
# If configuration are exact as append appending this book should result in the exact same color
|
||||
#
|
||||
# Color code will be prefixed by "&" and hexadecimal color by "#".
|
||||
# If color code is allowed, "&" in the text will get converted to "&&"
|
||||
# For minimessage see minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
allow_color_code: true
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: true
|
||||
|
||||
paper:
|
||||
# Permission is ca.lore_edit.paper
|
||||
use_permission: true
|
||||
# what order should the lines should get added/removed (start/end, if invalid or not present will be end)
|
||||
order: end
|
||||
|
||||
append_line:
|
||||
# If adding lore line using paper is enabled
|
||||
enabled: false
|
||||
# Cost used every time
|
||||
fixed_cost: 1
|
||||
# Use left item vanilla cost penalty if any
|
||||
shared_increase: false
|
||||
# Increase shared left item cost penalty
|
||||
shared_additive: false
|
||||
# If adding the lore line consume the paper
|
||||
do_consume: false
|
||||
# Allow using color code and hexadecimal color when editing lore via book & quil
|
||||
#
|
||||
# Color code are prefixed by "&" and hexadecimal color by "#"
|
||||
# Color code will not be applied if it colors nothing. "&&" can be used to write "&"
|
||||
# For minimessage see minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
#
|
||||
# Note that currently minimessage would disable hex code when adding color
|
||||
allow_color_code: true
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: true
|
||||
color_use_cost: 0
|
||||
use_cost: 0
|
||||
|
||||
remove_line:
|
||||
# If removing lore line using paper is enabled
|
||||
enabled: false
|
||||
# Cost used every time
|
||||
fixed_cost: 1
|
||||
# Use left item vanilla cost penalty if any
|
||||
shared_increase: false
|
||||
# Increase shared left item cost penalty
|
||||
shared_additive: false
|
||||
# If removing the lore line consume the paper
|
||||
do_consume: false
|
||||
# Cost of replacing colors
|
||||
remove_color_cost: 0
|
||||
# Allowed some color and tags to be reverted to plain text
|
||||
# Custom anvil will prioritise format that result is a smaller resulting text
|
||||
# Note that not allowing certain format will lead to some lost of color or tags.
|
||||
# If configuration are exact as append appending this paper should result in the exact same color
|
||||
#
|
||||
# Color code will be prefixed by "&" and hexadecimal color by "#".
|
||||
# If color code is allowed, "&" in the text will get converted to "&&"
|
||||
# For minimessage see minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
allow_color_code: true
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: true
|
||||
|
||||
# Allow to replace the xp cost by a monetary cost
|
||||
# If enabled it will not be bound to the experience level limits
|
||||
#
|
||||
# It also requires to enable dialog rename (set "enable_dialog_rename: false" a bit higher)
|
||||
# If dialog rename permission is enabled and player do not have the permission merge will fall back to vanilla xp cost
|
||||
#
|
||||
# If you are using custom craft I recommend using Linear Xp Cost with Exact Linear Xp as normal Xp Cost will act "weird"
|
||||
# But Linear Xp will act as 1$ time global multiplier. In other word: like you expect
|
||||
#
|
||||
# As this feature require dialog rename, it can only be enabled starting with paper 1.21.6 and later
|
||||
monetary_cost:
|
||||
enabled: false
|
||||
# If using vault unlocked this allow to specify what currency should be used for anvil usage
|
||||
# default being the default currency
|
||||
currency: default
|
||||
# multiply the anvil cost by a value to allow to have price a big bigger than like 40
|
||||
multipliers:
|
||||
# global multipliers. all usage type will be multiplied by this value
|
||||
global: 1.0
|
||||
# usage specific type. it will only apply for specific xp "reason"
|
||||
enchantment: 1.0 # related to enchantments level
|
||||
repair: 1.0 # for repairing via unit repair (per unit)
|
||||
rename: 1.0 # for renaming the item
|
||||
lore_edit: 1.0 # for changing the lore of the item (only if lore edit is enabled)
|
||||
work_penalty: 1.0 # for work penalty (aka use penalty)
|
||||
recipe: 1.0 # for custom anvil recipe cost
|
||||
|
||||
# Whether to show debug logging
|
||||
debug_log: false
|
||||
|
||||
# Whether to show verbose debug logging
|
||||
debug_log_verbose: false
|
||||
|
||||
configVersion: 1.15.5
|
||||
lowMinecraftVersion: 1.21.11
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
# ----------------------------------------------------
|
||||
# This config file is to store custom craft
|
||||
# It is recommended to use the in game config editor for this configuration.
|
||||
# /customanvilconfig With ca.config.edit permission
|
||||
# ----------------------------------------------------
|
||||
|
|
@ -1,398 +0,0 @@
|
|||
#
|
||||
# It is recommended that you use /configanvil to edit theses config.
|
||||
# You can still manually edit here if you like to. but if you do, don't forget to /anvilconfigreload after you changes !
|
||||
#
|
||||
|
||||
# material conflicts
|
||||
#
|
||||
# If you want to edit this file:
|
||||
# - A conflict will apply to every item except if in one of the notAffectedGroups group
|
||||
# - the conflict will count only if the user try to combine at least as
|
||||
# many conflicting enchantment as "maxEnchantmentBeforeConflict"
|
||||
#
|
||||
#
|
||||
# ----------------------------------------------------
|
||||
# These restriction are about not allowing enchantment
|
||||
# on illegal items
|
||||
# ----------------------------------------------------
|
||||
|
||||
restriction_aqua_affinity:
|
||||
enchantments:
|
||||
- minecraft:aqua_affinity
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- helmets
|
||||
|
||||
restriction_bane_of_arthropods:
|
||||
enchantments:
|
||||
- minecraft:bane_of_arthropods
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- melee_weapons
|
||||
- mace
|
||||
|
||||
restriction_blast_protection:
|
||||
enchantments:
|
||||
- minecraft:blast_protection
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- armors
|
||||
|
||||
restriction_channeling:
|
||||
enchantments:
|
||||
- minecraft:channeling
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- trident
|
||||
|
||||
restriction_binding_curse:
|
||||
enchantments:
|
||||
- minecraft:binding_curse
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- wearable
|
||||
|
||||
restriction_vanishing_curse:
|
||||
enchantments:
|
||||
- minecraft:vanishing_curse
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- can_vanish
|
||||
|
||||
restriction_depth_strider:
|
||||
enchantments:
|
||||
- minecraft:depth_strider
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- boots
|
||||
|
||||
restriction_efficiency:
|
||||
enchantments:
|
||||
- minecraft:efficiency
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- tools
|
||||
- shears
|
||||
|
||||
restriction_feather_falling:
|
||||
enchantments:
|
||||
- minecraft:feather_falling
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- boots
|
||||
|
||||
restriction_fire_aspect:
|
||||
enchantments:
|
||||
- minecraft:fire_aspect
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- swords
|
||||
- mace
|
||||
- spears
|
||||
|
||||
restriction_fire_protection:
|
||||
enchantments:
|
||||
- minecraft:fire_protection
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- armors
|
||||
|
||||
restriction_flame:
|
||||
enchantments:
|
||||
- minecraft:flame
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- bow
|
||||
|
||||
restriction_fortune:
|
||||
enchantments:
|
||||
- minecraft:fortune
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- tools
|
||||
|
||||
restriction_frost_walker:
|
||||
enchantments:
|
||||
- minecraft:frost_walker
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- boots
|
||||
|
||||
restriction_impaling:
|
||||
enchantments:
|
||||
- minecraft:impaling
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- trident
|
||||
|
||||
restriction_infinity:
|
||||
enchantments:
|
||||
- minecraft:infinity
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- bow
|
||||
|
||||
restriction_knockback:
|
||||
enchantments:
|
||||
- minecraft:knockback
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- swords
|
||||
- spears
|
||||
|
||||
restriction_looting:
|
||||
enchantments:
|
||||
- minecraft:looting
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- swords
|
||||
- spears
|
||||
|
||||
restriction_loyalty:
|
||||
enchantments:
|
||||
- minecraft:loyalty
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- trident
|
||||
|
||||
restriction_luck_of_the_sea:
|
||||
enchantments:
|
||||
- minecraft:luck_of_the_sea
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- fishing_rod
|
||||
|
||||
restriction_lure:
|
||||
enchantments:
|
||||
- minecraft:lure
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- fishing_rod
|
||||
|
||||
restriction_mending:
|
||||
enchantments:
|
||||
- minecraft:mending
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- can_unbreak
|
||||
|
||||
restriction_minecraft_multishot:
|
||||
enchantments:
|
||||
- minecraft:multishot
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- crossbow
|
||||
|
||||
restriction_piercing:
|
||||
enchantments:
|
||||
- minecraft:piercing
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- crossbow
|
||||
|
||||
restriction_power:
|
||||
enchantments:
|
||||
- minecraft:power
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- bow
|
||||
|
||||
restriction_projectile_protection:
|
||||
enchantments:
|
||||
- minecraft:projectile_protection
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- armors
|
||||
|
||||
restriction_protection:
|
||||
enchantments:
|
||||
- minecraft:protection
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- armors
|
||||
|
||||
restriction_punch:
|
||||
enchantments:
|
||||
- minecraft:punch
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- bow
|
||||
|
||||
restriction_quick_charge:
|
||||
enchantments:
|
||||
- minecraft:quick_charge
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- crossbow
|
||||
|
||||
restriction_respiration:
|
||||
enchantments:
|
||||
- minecraft:respiration
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- helmets
|
||||
|
||||
restriction_riptide:
|
||||
enchantments:
|
||||
- minecraft:riptide
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- trident
|
||||
|
||||
restriction_sharpness:
|
||||
enchantments:
|
||||
- minecraft:sharpness
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- melee_weapons
|
||||
|
||||
restriction__silk_touch:
|
||||
enchantments:
|
||||
- minecraft:silk_touch
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- tools
|
||||
|
||||
restriction_smite:
|
||||
enchantments:
|
||||
- minecraft:smite
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- melee_weapons
|
||||
- mace
|
||||
|
||||
restriction_soul_speed:
|
||||
enchantments:
|
||||
- minecraft:soul_speed
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- boots
|
||||
|
||||
restriction_sweeping_edge:
|
||||
enchantments:
|
||||
- minecraft:sweeping
|
||||
- minecraft:sweeping_edge
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- swords
|
||||
|
||||
# Do not exist in 1.18, that mean useInFuture will be set to true
|
||||
# useInFuture set to true also mean it will not warn if there is an issue
|
||||
restriction_swift_sneak:
|
||||
useInFuture: true
|
||||
enchantments:
|
||||
- minecraft:swift_sneak
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- leggings
|
||||
|
||||
restriction_thorns:
|
||||
enchantments:
|
||||
- minecraft:thorns
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- armors
|
||||
|
||||
restriction__unbreaking:
|
||||
enchantments:
|
||||
- minecraft:unbreaking
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- can_unbreak
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Now we have conflicts about enchantment Incompatibility
|
||||
# We just filtered what item enchantments can be applied
|
||||
# notAffectedGroups is empty as we don't want anything to not respect theses rules
|
||||
# maxEnchantmentBeforeConflict is set to 1 to only have 1 on those enchantment available
|
||||
# ----------------------------------------------------
|
||||
|
||||
sword_enchant_conflict:
|
||||
enchantments:
|
||||
- minecraft:bane_of_arthropods
|
||||
- minecraft:smite
|
||||
- minecraft:sharpness
|
||||
- minecraft:density
|
||||
- minecraft:breach
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
protection_enchant_conflict:
|
||||
enchantments:
|
||||
- minecraft:blast_protection
|
||||
- minecraft:fire_protection
|
||||
- minecraft:projectile_protection
|
||||
- minecraft:protection
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
trident_conflict1:
|
||||
enchantments:
|
||||
- minecraft:channeling
|
||||
- minecraft:riptide
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
trident_conflict2:
|
||||
enchantments:
|
||||
- minecraft:loyalty
|
||||
- minecraft:riptide
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
boot_conflict:
|
||||
enchantments:
|
||||
- minecraft:depth_strider
|
||||
- minecraft:frost_walker
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
tool_conflict:
|
||||
enchantments:
|
||||
- minecraft:fortune
|
||||
- minecraft:silk_touch
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
bow_conflict:
|
||||
enchantments:
|
||||
- minecraft:mending
|
||||
- minecraft:infinity
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
crossbow_conflict:
|
||||
enchantments:
|
||||
- minecraft:multishot
|
||||
- minecraft:piercing
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
restriction_density:
|
||||
enchantments:
|
||||
- minecraft:density
|
||||
notAffectedGroups:
|
||||
- mace
|
||||
- enchanted_book
|
||||
restriction_breach:
|
||||
enchantments:
|
||||
- minecraft:breach
|
||||
notAffectedGroups:
|
||||
- mace
|
||||
- enchanted_book
|
||||
restriction_wind_burst:
|
||||
enchantments:
|
||||
- minecraft:wind_burst
|
||||
notAffectedGroups:
|
||||
- mace
|
||||
- enchanted_book
|
||||
restriction_lunge:
|
||||
enchantments:
|
||||
- minecraft:lunge
|
||||
notAffectedGroups:
|
||||
- spears
|
||||
- enchanted_book
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Bellow is for custom conflicts.
|
||||
# This is also where conflict create from the gui will be placed.
|
||||
# ----------------------------------------------------
|
||||
|
|
@ -1,247 +0,0 @@
|
|||
#
|
||||
# It is recommended that you use /configanvil to edit theses config.
|
||||
# You can still manually edit here if you like to. but if you do, don't forget to /anvilconfigreload after you changes !
|
||||
#
|
||||
|
||||
# Please note this config use spigot material names.
|
||||
# It should match minecraft name in most case, maybe every case, but I can't be sure
|
||||
# In case there an issue with material name, you can found them here:
|
||||
# https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
|
||||
|
||||
# An empty Exclude group exclude nothing, so it contain everything
|
||||
everything:
|
||||
type: exclude
|
||||
|
||||
# An empty include group will include nothing
|
||||
nothing:
|
||||
type: include
|
||||
|
||||
# This group is an example of a group including only stone and polished granite
|
||||
example_include:
|
||||
type: include
|
||||
items:
|
||||
- stone
|
||||
- polished_granite
|
||||
|
||||
# This group contain everything except polished granite and elements of example_include
|
||||
example_exclude:
|
||||
type: exclude
|
||||
items:
|
||||
- polished_granite
|
||||
groups:
|
||||
- example_include
|
||||
|
||||
# Default configuration should be vanilla enchantment conflict group
|
||||
# there may have error, if you find one you can fix it !
|
||||
# https://minecraft.fandom.com/wiki/Enchanting
|
||||
|
||||
swords:
|
||||
type: include
|
||||
items:
|
||||
- wooden_sword
|
||||
- stone_sword
|
||||
- iron_sword
|
||||
- diamond_sword
|
||||
- golden_sword
|
||||
- netherite_sword
|
||||
- copper_sword
|
||||
|
||||
axes:
|
||||
type: include
|
||||
items:
|
||||
- wooden_axe
|
||||
- stone_axe
|
||||
- iron_axe
|
||||
- diamond_axe
|
||||
- golden_axe
|
||||
- netherite_axe
|
||||
- copper_axe
|
||||
|
||||
melee_weapons:
|
||||
type: include
|
||||
groups:
|
||||
- swords
|
||||
- axes
|
||||
- spears
|
||||
|
||||
helmets:
|
||||
type: include
|
||||
items:
|
||||
- leather_helmet
|
||||
- chainmail_helmet
|
||||
- iron_helmet
|
||||
- diamond_helmet
|
||||
- golden_helmet
|
||||
- netherite_helmet
|
||||
- turtle_helmet
|
||||
- copper_helmet
|
||||
|
||||
chestplate:
|
||||
type: include
|
||||
items:
|
||||
- leather_chestplate
|
||||
- chainmail_chestplate
|
||||
- iron_chestplate
|
||||
- diamond_chestplate
|
||||
- golden_chestplate
|
||||
- netherite_chestplate
|
||||
- copper_chestplate
|
||||
|
||||
leggings:
|
||||
type: include
|
||||
items:
|
||||
- leather_leggings
|
||||
- chainmail_leggings
|
||||
- iron_leggings
|
||||
- diamond_leggings
|
||||
- golden_leggings
|
||||
- netherite_leggings
|
||||
- copper_leggings
|
||||
|
||||
boots:
|
||||
type: include
|
||||
items:
|
||||
- leather_boots
|
||||
- chainmail_boots
|
||||
- iron_boots
|
||||
- diamond_boots
|
||||
- golden_boots
|
||||
- netherite_boots
|
||||
- copper_boots
|
||||
|
||||
armors:
|
||||
type: include
|
||||
groups:
|
||||
- helmets
|
||||
- chestplate
|
||||
- leggings
|
||||
- boots
|
||||
|
||||
wearable:
|
||||
type: include
|
||||
items:
|
||||
- elytra
|
||||
- carved_pumpkin
|
||||
- skeleton_skull
|
||||
- wither_skeleton_skull
|
||||
- zombie_head
|
||||
- player_head
|
||||
- creeper_head
|
||||
- dragon_head
|
||||
- piglin_head
|
||||
groups:
|
||||
- armors
|
||||
|
||||
pickaxes:
|
||||
type: include
|
||||
items:
|
||||
- wooden_pickaxe
|
||||
- stone_pickaxe
|
||||
- iron_pickaxe
|
||||
- diamond_pickaxe
|
||||
- golden_pickaxe
|
||||
- netherite_pickaxe
|
||||
- copper_pickaxe
|
||||
|
||||
shovels:
|
||||
type: include
|
||||
items:
|
||||
- wooden_shovel
|
||||
- stone_shovel
|
||||
- iron_shovel
|
||||
- diamond_shovel
|
||||
- golden_shovel
|
||||
- netherite_shovel
|
||||
- copper_shovel
|
||||
|
||||
hoes:
|
||||
type: include
|
||||
items:
|
||||
- wooden_hoe
|
||||
- stone_hoe
|
||||
- iron_hoe
|
||||
- diamond_hoe
|
||||
- golden_hoe
|
||||
- netherite_hoe
|
||||
- copper_hoe
|
||||
|
||||
tools:
|
||||
type: include
|
||||
groups:
|
||||
- pickaxes
|
||||
- shovels
|
||||
- hoes
|
||||
- axes
|
||||
|
||||
enchanted_book:
|
||||
type: include
|
||||
items:
|
||||
- enchanted_book
|
||||
|
||||
trident:
|
||||
type: include
|
||||
items:
|
||||
- trident
|
||||
|
||||
bow:
|
||||
type: include
|
||||
items:
|
||||
- bow
|
||||
|
||||
crossbow:
|
||||
type: include
|
||||
items:
|
||||
- crossbow
|
||||
|
||||
fishing_rod:
|
||||
type: include
|
||||
items:
|
||||
- fishing_rod
|
||||
|
||||
shears:
|
||||
type: include
|
||||
items:
|
||||
- shears
|
||||
|
||||
can_unbreak:
|
||||
type: include
|
||||
items:
|
||||
- elytra
|
||||
- flint_and_steel
|
||||
- shield
|
||||
- carrot_on_a_stick
|
||||
- warped_fungus_on_a_stick
|
||||
- brush
|
||||
groups:
|
||||
- melee_weapons
|
||||
- tools
|
||||
- armors
|
||||
- trident
|
||||
- bow
|
||||
- crossbow
|
||||
- fishing_rod
|
||||
- shears
|
||||
- mace
|
||||
|
||||
can_vanish:
|
||||
type: include
|
||||
items:
|
||||
- compass
|
||||
groups:
|
||||
- wearable
|
||||
- can_unbreak
|
||||
mace:
|
||||
type: include
|
||||
items:
|
||||
- mace
|
||||
spears:
|
||||
type: include
|
||||
items:
|
||||
- wooden_spear
|
||||
- golden_spear
|
||||
- stone_spear
|
||||
- copper_spear
|
||||
- iron_spear
|
||||
- diamond_spear
|
||||
- netherite_spear
|
||||
|
||||
|
|
@ -1,220 +0,0 @@
|
|||
#
|
||||
# It is recommended that you use /configanvil to edit theses config.
|
||||
# You can still manually edit here if you like to. but if you do, don't forget to /anvilconfigreload after you changes !
|
||||
#
|
||||
|
||||
# Unit repair configuration
|
||||
#
|
||||
# This configuration is to make custom unit repair
|
||||
# A unit repair is, for example, a diamond to repair a diamond sword
|
||||
# In vanilla, a unit repair 25% of object durability
|
||||
# you can make a custom value here
|
||||
#
|
||||
# Item name should NOT combine caps and no caps (example: Stone)
|
||||
|
||||
# Default value if the config is an invalid value (value <= 0 )
|
||||
# If value > 1 it will be treated as being = 1
|
||||
default_repair_amount: 0.25
|
||||
|
||||
# You can add custom unit repair
|
||||
# The example bellow make a shield repaired by 10% by sticks
|
||||
|
||||
# stick:
|
||||
# shield: 0.10
|
||||
|
||||
|
||||
# Vanilla unit repair group is bellow
|
||||
diamond:
|
||||
diamond_helmet: 0.25
|
||||
diamond_chestplate: 0.25
|
||||
diamond_leggings: 0.25
|
||||
diamond_boots: 0.25
|
||||
diamond_sword: 0.25
|
||||
diamond_pickaxe: 0.25
|
||||
diamond_axe: 0.25
|
||||
diamond_shovel: 0.25
|
||||
diamond_hoe: 0.25
|
||||
diamond_spear: 0.25
|
||||
|
||||
netherite_ingot:
|
||||
netherite_helmet: 0.25
|
||||
netherite_chestplate: 0.25
|
||||
netherite_leggings: 0.25
|
||||
netherite_boots: 0.25
|
||||
netherite_sword: 0.25
|
||||
netherite_pickaxe: 0.25
|
||||
netherite_axe: 0.25
|
||||
netherite_shovel: 0.25
|
||||
netherite_hoe: 0.25
|
||||
netherite_spear: 0.25
|
||||
|
||||
gold_ingot:
|
||||
golden_helmet: 0.25
|
||||
golden_chestplate: 0.25
|
||||
golden_leggings: 0.25
|
||||
golden_boots: 0.25
|
||||
golden_sword: 0.25
|
||||
golden_pickaxe: 0.25
|
||||
golden_axe: 0.25
|
||||
golden_shovel: 0.25
|
||||
golden_hoe: 0.25
|
||||
golden_spear: 0.25
|
||||
|
||||
iron_ingot:
|
||||
iron_helmet: 0.25
|
||||
iron_chestplate: 0.25
|
||||
iron_leggings: 0.25
|
||||
iron_boots: 0.25
|
||||
iron_sword: 0.25
|
||||
iron_pickaxe: 0.25
|
||||
iron_axe: 0.25
|
||||
iron_shovel: 0.25
|
||||
iron_hoe: 0.25
|
||||
iron_spear: 0.25
|
||||
|
||||
cobblestone:
|
||||
stone_sword: 0.25
|
||||
stone_pickaxe: 0.25
|
||||
stone_axe: 0.25
|
||||
stone_shovel: 0.25
|
||||
stone_hoe: 0.25
|
||||
stone_spear: 0.25
|
||||
|
||||
cobbled_deepslate:
|
||||
stone_sword: 0.25
|
||||
stone_pickaxe: 0.25
|
||||
stone_axe: 0.25
|
||||
stone_shovel: 0.25
|
||||
stone_hoe: 0.25
|
||||
stone_spear: 0.25
|
||||
|
||||
blackstone:
|
||||
stone_sword: 0.25
|
||||
stone_pickaxe: 0.25
|
||||
stone_axe: 0.25
|
||||
stone_shovel: 0.25
|
||||
stone_hoe: 0.25
|
||||
|
||||
leather:
|
||||
leather_helmet: 0.25
|
||||
leather_chestplate: 0.25
|
||||
leather_leggings: 0.25
|
||||
leather_boots: 0.25
|
||||
|
||||
phantom_membrane:
|
||||
elytra: 0.25
|
||||
|
||||
scute:
|
||||
turtle_helmet: 0.25
|
||||
|
||||
oak_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
wooden_spear: 0.25
|
||||
|
||||
spruce_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
wooden_spear: 0.25
|
||||
|
||||
birch_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
wooden_spear: 0.25
|
||||
|
||||
jungle_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
wooden_spear: 0.25
|
||||
|
||||
acacia_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
wooden_spear: 0.25
|
||||
|
||||
dark_oak_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
wooden_spear: 0.25
|
||||
|
||||
mangrove_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
wooden_spear: 0.25
|
||||
|
||||
cherry_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
wooden_spear: 0.25
|
||||
|
||||
bamboo_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
wooden_spear: 0.25
|
||||
|
||||
crimson_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
wooden_spear: 0.25
|
||||
|
||||
warped_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
wooden_spear: 0.25
|
||||
breeze_rod:
|
||||
mace: 0.25
|
||||
copper_ingot:
|
||||
copper_helmet: 0.25
|
||||
copper_chestplate: 0.25
|
||||
copper_leggings: 0.25
|
||||
copper_boots: 0.25
|
||||
copper_pickaxe: 0.25
|
||||
copper_shovel: 0.25
|
||||
copper_hoe: 0.25
|
||||
copper_axe: 0.25
|
||||
copper_sword: 0.25
|
||||
copper_spear: 0.25
|
||||
|
|
@ -1,6 +0,0 @@
|
|||
### Default Plugin's Configurations For 1.21.9
|
||||
- [config.yml](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs/1.21.9/config.yml)
|
||||
- [enchant_conflict.yml](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs/1.21.9/enchant_conflict.yml)
|
||||
- [item_groups.yml](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs/1.21.9/item_groups.yml)
|
||||
- [unit_repair_item.yml](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs/1.21.9/unit_repair_item.yml)
|
||||
- [custom_recipes.yml](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs/1.21.9/custom_recipes.yml)
|
||||
|
|
@ -1,479 +0,0 @@
|
|||
#
|
||||
# It is recommended that you use /configanvil to edit theses config.
|
||||
# You can still manually edit here if you like to. but if you do, don't forget to /anvilconfigreload after you changes !
|
||||
#
|
||||
|
||||
# What service of metric should custom anvil use
|
||||
# Custom anvil collect generic information like server minecraft version, type, etc...
|
||||
# It can also collect error information if error is happening (currently faststats only)
|
||||
# It can also be disabled
|
||||
# Please refer to README for public metric link
|
||||
# Possible options: auto, bstat, faststats, disabled (auto by default)
|
||||
metric_type: auto
|
||||
|
||||
# Allow to report errors made caused by this plugin (only for faststats)
|
||||
# This allows me to fix potentials issue that I'm not aware of
|
||||
# Accept true or false (true by default)
|
||||
metric_collect_errors: true
|
||||
|
||||
# All anvil cost will be capped to limit_repair_value if enabled.
|
||||
#
|
||||
# In other words:
|
||||
# For any anvil cost greater than limit_repair_value, Cost will be set to limit_repair_value.
|
||||
limit_repair_cost: false
|
||||
|
||||
# Max cost value the Anvil can get to.
|
||||
#
|
||||
# Valid values include 0 to 1000.
|
||||
# Cost will be displayed as "Too Expensive":
|
||||
# - If Cost is above 39
|
||||
# - And replace_too_expensive is disabled (false)
|
||||
limit_repair_value: 39
|
||||
|
||||
# Whether the anvil's cost limit should be removed entirely.
|
||||
#
|
||||
# The anvil will still visually display "Too Expensive" if "replace_too_expensive" is disabled
|
||||
# However, the action will be completable if xp requirement is meet.
|
||||
remove_repair_limit: false
|
||||
|
||||
# Whenever anvil cost is above 39 should display the true price and not "Too Expensive".
|
||||
#
|
||||
# However, when bypassing "Too Expensive", anvil price will be displayed as Green.
|
||||
# If the action is not completable, the cost will still be displayed as "Too expensive".
|
||||
# That mean you also need to change other settings like remove_repair_limit or limit_repair_cost.
|
||||
#
|
||||
# Require ProtocoLib.
|
||||
replace_too_expensive: false
|
||||
|
||||
# XP Level amount added to the anvil when the item is repaired by another item of the same type
|
||||
#
|
||||
# Valid values include 0 to 1000
|
||||
item_repair_cost: 2
|
||||
|
||||
# XP Level amount added to the anvil when the item is renamed
|
||||
#
|
||||
# Valid values include 0 to 1000
|
||||
item_rename_cost: 1
|
||||
|
||||
# XP Level amount added to the anvil when the item is repaired by an "unit"
|
||||
# For example: a Diamond on a Diamond Sword
|
||||
# What's considered unit for what can be edited on the unit repair configuration.
|
||||
#
|
||||
# Valid values include 0 to 1000
|
||||
unit_repair_cost: 1
|
||||
|
||||
# XP Level amount added to the anvil when a sacrifice enchantment
|
||||
# conflict with one of the left item enchantment
|
||||
#
|
||||
# Valid values include 0 to 1000
|
||||
sacrifice_illegal_enchant_cost: 1
|
||||
|
||||
# Allow using color code and hexadecimal color.
|
||||
#
|
||||
# Color code are prefixed by "&" and hexadecimal color by "#".
|
||||
# Color code will not be applied if it colors nothing. "&&" can be used to write "&".
|
||||
# For minimessage search for minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
allow_color_code: false
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: false
|
||||
|
||||
# This enables restricting color code for player having specific permission
|
||||
# It requires allow_color_code enabled for... obvious reasons
|
||||
#
|
||||
# For example: if player want to use "&aHello" it will be required that the player has
|
||||
# the permission "ca.color.code.a" as he used the color code "a"
|
||||
# In general permission to give to the player is "ca.color.code.[code]"
|
||||
# where [code] is the color code you wish to allow the player
|
||||
#
|
||||
# It is kinda of useless when minimessage is supported as players would be able to bypass
|
||||
# that using the equivalent minimessage tag
|
||||
per_color_code_permission: false
|
||||
|
||||
# Toggle if color should only be applicable if the player a certain permission.
|
||||
#
|
||||
# permission are "ca.color.code" for use of color code and "ca.color.hex" for use of hexadecimal color.
|
||||
permission_needed_for_color: true
|
||||
|
||||
# Xp cost if the player use color in the items name on rename.
|
||||
#
|
||||
# Valid values include 0 to 1000.
|
||||
use_of_color_cost: 0
|
||||
|
||||
# Dialogue rename menu make use of dialog menu to allow bigger rename
|
||||
# You can also change the maximum size and set it to -1 or less for maximum
|
||||
#
|
||||
# This feature only work on paper 1.21.7 or later
|
||||
#
|
||||
# At the moment only english is available for this menu... sorry !
|
||||
#
|
||||
# CustomAnvil use "ca.rename.dialog" when permission
|
||||
enable_dialog_rename: false
|
||||
dialog_rename_max_size: 256
|
||||
permission_needed_for_dialog_rename: false
|
||||
|
||||
# This allows custom anvil to not "guess" the text used for rename but store it in the item
|
||||
# It will make item stackable only and only if it had used the same rename text
|
||||
#
|
||||
# For practical reason. this only work when dialog rename is enabled
|
||||
dialog_rename_keep_user_text: true
|
||||
|
||||
# Override limits for specific enchants
|
||||
#
|
||||
# Enchantments not listed here will use the value of default_limit
|
||||
#
|
||||
# Overrides provided default from aqua_affinity to depth_strider won't change effect with extra levels
|
||||
#
|
||||
# Valid range of 0 - 255 for each enchantment
|
||||
# -1 mean keep default
|
||||
enchant_limits:
|
||||
minecraft:aqua_affinity: 1
|
||||
minecraft:binding_curse: 1
|
||||
minecraft:channeling: 1
|
||||
minecraft:flame: 1
|
||||
minecraft:infinity: 1
|
||||
minecraft:mending: 1
|
||||
minecraft:multishot: 1
|
||||
minecraft:silk_touch: 1
|
||||
minecraft:vanishing_curse: 1
|
||||
minecraft:depth_strider: 3 # anything more than 3 is treated as 3 by the game
|
||||
minecraft:protection: 4
|
||||
minecraft:fire_protection: 4
|
||||
minecraft:blast_protection: 4
|
||||
minecraft:projectile_protection: 4
|
||||
minecraft:feather_falling: 4
|
||||
minecraft:thorns: 3
|
||||
minecraft:respiration: 3
|
||||
minecraft:sharpness: 5
|
||||
minecraft:smite: 5
|
||||
minecraft:bane_of_arthropods: 5
|
||||
minecraft:knockback: 2
|
||||
minecraft:fire_aspect: 2
|
||||
minecraft:looting: 3
|
||||
minecraft:sweeping: 3
|
||||
minecraft:sweeping_edge: 3
|
||||
minecraft:efficiency: 5
|
||||
minecraft:unbreaking: 3
|
||||
minecraft:fortune: 3
|
||||
minecraft:power: 5
|
||||
minecraft:punch: 2
|
||||
minecraft:luck_of_the_sea: 3
|
||||
minecraft:lure: 3
|
||||
minecraft:frost_walker: 2
|
||||
minecraft:impaling: 5
|
||||
minecraft:riptide: 3
|
||||
minecraft:loyalty: 3
|
||||
minecraft:piercing: 4
|
||||
minecraft:quick_charge: 3
|
||||
minecraft:soul_speed: 3
|
||||
minecraft:swift_sneak: 3
|
||||
minecraft:density: 5
|
||||
minecraft:breach: 4
|
||||
minecraft:wind_burst: 3
|
||||
|
||||
# Multipliers used to calculate the enchantment's value in repair/combining
|
||||
#
|
||||
# Values here are pulled from the fandom wiki:
|
||||
# https://minecraft.fandom.com/wiki/Anvil_mechanics#Costs_for_combining_enchantments
|
||||
#
|
||||
# If an enchantment is missing values here, or is less than 0, it will default to 0
|
||||
#
|
||||
# Calculated as: [Enchantment lvl] * [multiplier]
|
||||
#
|
||||
# With default values protection 4 would have a value of 4 when
|
||||
# coming from either a book (4 * 1) or an item (4 * 1)
|
||||
enchant_values:
|
||||
minecraft:aqua_affinity:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:bane_of_arthropods:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:binding_curse:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:blast_protection:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:channeling:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:depth_strider:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:efficiency:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:flame:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:feather_falling:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:fire_aspect:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:fire_protection:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:fortune:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:frost_walker:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:impaling:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:infinity:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:knockback:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:looting:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:loyalty:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:luck_of_the_sea:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:lure:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:mending:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:multishot:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:piercing:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:power:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:projectile_protection:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:protection:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:punch:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:quick_charge:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:respiration:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:riptide:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:silk_touch:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:sharpness:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:smite:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:soul_speed:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:swift_sneak:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:sweeping:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:sweeping_edge:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:thorns:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:unbreaking:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:vanishing_curse:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:density:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:breach:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:wind_burst:
|
||||
item: 4
|
||||
book: 2
|
||||
|
||||
# Disable enchantment merging for level above the set value
|
||||
# Enchantment merging is when, for example, 2 unbreaking II book combine to give sharpness III
|
||||
# But Enchantment above this value can still be applied. following the previous example, we could still apply a unbreaking III book to a sword
|
||||
# Even if disable-merge-over of unbreaking is set to 2
|
||||
# -1 mean enchantment merge for this enchantment is not disabled. default to -1 if absent.
|
||||
disable-merge-over:
|
||||
# Sharpness is set to -1. it equivalent to it not being set to anything (and work as vanilla on default configuration)
|
||||
minecraft:sharpness: -1
|
||||
# If uncommented. 2 unbreaking II book would not give an unbreaking III book. but unbreaking III book can still be applied
|
||||
# minecraft:unbreaking: 2
|
||||
|
||||
# The maximum number of enchantment an item can get. -1 for infinity
|
||||
# Use eco enchant enchant_limit if present by default unless "default" is not equal to -1
|
||||
enchantment_count_limit:
|
||||
default: -1
|
||||
# Limit for specific items. example bellow is an example with stick
|
||||
# Per item enchantment limit override eco enchant enchant_limit and default limit
|
||||
items:
|
||||
stick: -1
|
||||
|
||||
# Settings for lore modification
|
||||
lore_edit:
|
||||
book_and_quil:
|
||||
# Permission is ca.lore_edit.book
|
||||
use_permission: true
|
||||
append:
|
||||
# If adding lore using book & quil is enabled
|
||||
enabled: false
|
||||
# Cost used every time
|
||||
fixed_cost: 1
|
||||
# Cost used for every lore line added
|
||||
per_line_cost: 0
|
||||
# Use left item vanilla cost penalty if any
|
||||
shared_increase: false
|
||||
# Increase shared left item cost penalty
|
||||
shared_additive: false
|
||||
# If adding the lore consume the book & quil
|
||||
do_consume: false
|
||||
# Allow using color code and hexadecimal color when editing lore via book & quil
|
||||
#
|
||||
# Color code are prefixed by "&" and hexadecimal color by "#"
|
||||
# Color code will not be applied if it colors nothing. "&&" can be used to write "&"
|
||||
# For minimessage see minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
#
|
||||
# Note that currently minimessage would disable hex code when adding color
|
||||
allow_color_code: true
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: true
|
||||
|
||||
remove:
|
||||
# If removing lore using book & quil is enabled
|
||||
enabled: false
|
||||
# Cost used every time
|
||||
fixed_cost: 1
|
||||
# Cost used for every lore line removed
|
||||
per_line_cost: 0
|
||||
# Use left item vanilla cost penalty if any
|
||||
shared_increase: false
|
||||
# Increase shared left item cost penalty
|
||||
shared_additive: false
|
||||
# If removing the lore consume the book & quil
|
||||
do_consume: false
|
||||
# Cost of replacing colors
|
||||
remove_color_cost: 0
|
||||
# Allowed some color and tags to be reverted to plain text
|
||||
# Custom anvil will prioritise format that result is a smaller resulting text
|
||||
# Note that not allowing certain format will lead to some lost of color or tags.
|
||||
# If configuration are exact as append appending this book should result in the exact same color
|
||||
#
|
||||
# Color code will be prefixed by "&" and hexadecimal color by "#".
|
||||
# If color code is allowed, "&" in the text will get converted to "&&"
|
||||
# For minimessage see minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
allow_color_code: true
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: true
|
||||
|
||||
paper:
|
||||
# Permission is ca.lore_edit.paper
|
||||
use_permission: true
|
||||
# what order should the lines should get added/removed (start/end, if invalid or not present will be end)
|
||||
order: end
|
||||
|
||||
append_line:
|
||||
# If adding lore line using paper is enabled
|
||||
enabled: false
|
||||
# Cost used every time
|
||||
fixed_cost: 1
|
||||
# Use left item vanilla cost penalty if any
|
||||
shared_increase: false
|
||||
# Increase shared left item cost penalty
|
||||
shared_additive: false
|
||||
# If adding the lore line consume the paper
|
||||
do_consume: false
|
||||
# Allow using color code and hexadecimal color when editing lore via book & quil
|
||||
#
|
||||
# Color code are prefixed by "&" and hexadecimal color by "#"
|
||||
# Color code will not be applied if it colors nothing. "&&" can be used to write "&"
|
||||
# For minimessage see minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
#
|
||||
# Note that currently minimessage would disable hex code when adding color
|
||||
allow_color_code: true
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: true
|
||||
color_use_cost: 0
|
||||
|
||||
remove_line:
|
||||
# If removing lore line using paper is enabled
|
||||
enabled: false
|
||||
# Cost used every time
|
||||
fixed_cost: 1
|
||||
# Use left item vanilla cost penalty if any
|
||||
shared_increase: false
|
||||
# Increase shared left item cost penalty
|
||||
shared_additive: false
|
||||
# If removing the lore line consume the paper
|
||||
do_consume: false
|
||||
# Cost of replacing colors
|
||||
remove_color_cost: 0
|
||||
# Allowed some color and tags to be reverted to plain text
|
||||
# Custom anvil will prioritise format that result is a smaller resulting text
|
||||
# Note that not allowing certain format will lead to some lost of color or tags.
|
||||
# If configuration are exact as append appending this paper should result in the exact same color
|
||||
#
|
||||
# Color code will be prefixed by "&" and hexadecimal color by "#".
|
||||
# If color code is allowed, "&" in the text will get converted to "&&"
|
||||
# For minimessage see minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
allow_color_code: true
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: true
|
||||
|
||||
# Allow to replace the xp cost by a monetary cost
|
||||
# If enabled it will not be bound to the experience level limits
|
||||
#
|
||||
# It also requires to enable dialog rename (set "enable_dialog_rename: false" a bit higher)
|
||||
# If dialog rename permission is enabled and player do not have the permission merge will fall back to vanilla xp cost
|
||||
#
|
||||
# If you are using custom craft I recommend using Linear Xp Cost with Exact Linear Xp as normal Xp Cost will act "weird"
|
||||
# But Linear Xp will act as 1$ time global multiplier. In other word: like you expect
|
||||
#
|
||||
# As this feature require dialog rename, it can only be enabled starting with paper 1.21.6 and later
|
||||
monetary_cost:
|
||||
enabled: false
|
||||
# If using vault unlocked this allow to specify what currency should be used for anvil usage
|
||||
# default being the default currency
|
||||
currency: default
|
||||
# multiply the anvil cost by a value to allow to have price a big bigger than like 40
|
||||
multipliers:
|
||||
# global multipliers. all usage type will be multiplied by this value
|
||||
global: 1.0
|
||||
# usage specific type. it will only apply for specific xp "reason"
|
||||
enchantment: 1.0 # related to enchantments level
|
||||
repair: 1.0 # for repairing via unit repair (per unit)
|
||||
rename: 1.0 # for renaming the item
|
||||
lore_edit: 1.0 # for changing the lore of the item (only if lore edit is enabled)
|
||||
work_penalty: 1.0 # for work penalty (aka use penalty)
|
||||
recipe: 1.0 # for custom anvil recipe cost
|
||||
|
||||
# Whether to show debug logging
|
||||
debug_log: false
|
||||
|
||||
# Whether to show verbose debug logging
|
||||
debug_log_verbose: false
|
||||
|
||||
configVersion: 1.11.0
|
||||
lowMinecraftVersion: 1.21.9
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
# ----------------------------------------------------
|
||||
# This config file is to store custom craft
|
||||
# It is recommended to use the in game config editor for this configuration.
|
||||
# /customanvilconfig With ca.config.edit permission
|
||||
# ----------------------------------------------------
|
||||
|
|
@ -1,389 +0,0 @@
|
|||
#
|
||||
# It is recommended that you use /configanvil to edit theses config.
|
||||
# You can still manually edit here if you like to. but if you do, don't forget to /anvilconfigreload after you changes !
|
||||
#
|
||||
|
||||
# material conflicts
|
||||
#
|
||||
# If you want to edit this file:
|
||||
# - A conflict will apply to every item except if in one of the notAffectedGroups group
|
||||
# - the conflict will count only if the user try to combine at least as
|
||||
# many conflicting enchantment as "maxEnchantmentBeforeConflict"
|
||||
#
|
||||
#
|
||||
# ----------------------------------------------------
|
||||
# These restriction are about not allowing enchantment
|
||||
# on illegal items
|
||||
# ----------------------------------------------------
|
||||
|
||||
restriction_aqua_affinity:
|
||||
enchantments:
|
||||
- minecraft:aqua_affinity
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- helmets
|
||||
|
||||
restriction_bane_of_arthropods:
|
||||
enchantments:
|
||||
- minecraft:bane_of_arthropods
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- melee_weapons
|
||||
- mace
|
||||
|
||||
restriction_blast_protection:
|
||||
enchantments:
|
||||
- minecraft:blast_protection
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- armors
|
||||
|
||||
restriction_channeling:
|
||||
enchantments:
|
||||
- minecraft:channeling
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- trident
|
||||
|
||||
restriction_binding_curse:
|
||||
enchantments:
|
||||
- minecraft:binding_curse
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- wearable
|
||||
|
||||
restriction_vanishing_curse:
|
||||
enchantments:
|
||||
- minecraft:vanishing_curse
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- can_vanish
|
||||
|
||||
restriction_depth_strider:
|
||||
enchantments:
|
||||
- minecraft:depth_strider
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- boots
|
||||
|
||||
restriction_efficiency:
|
||||
enchantments:
|
||||
- minecraft:efficiency
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- tools
|
||||
- shears
|
||||
|
||||
restriction_feather_falling:
|
||||
enchantments:
|
||||
- minecraft:feather_falling
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- boots
|
||||
|
||||
restriction_fire_aspect:
|
||||
enchantments:
|
||||
- minecraft:fire_aspect
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- swords
|
||||
- mace
|
||||
|
||||
restriction_fire_protection:
|
||||
enchantments:
|
||||
- minecraft:fire_protection
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- armors
|
||||
|
||||
restriction_flame:
|
||||
enchantments:
|
||||
- minecraft:flame
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- bow
|
||||
|
||||
restriction_fortune:
|
||||
enchantments:
|
||||
- minecraft:fortune
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- tools
|
||||
|
||||
restriction_frost_walker:
|
||||
enchantments:
|
||||
- minecraft:frost_walker
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- boots
|
||||
|
||||
restriction_impaling:
|
||||
enchantments:
|
||||
- minecraft:impaling
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- trident
|
||||
|
||||
restriction_infinity:
|
||||
enchantments:
|
||||
- minecraft:infinity
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- bow
|
||||
|
||||
restriction_knockback:
|
||||
enchantments:
|
||||
- minecraft:knockback
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- swords
|
||||
|
||||
restriction_looting:
|
||||
enchantments:
|
||||
- minecraft:looting
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- swords
|
||||
|
||||
restriction_loyalty:
|
||||
enchantments:
|
||||
- minecraft:loyalty
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- trident
|
||||
|
||||
restriction_luck_of_the_sea:
|
||||
enchantments:
|
||||
- minecraft:luck_of_the_sea
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- fishing_rod
|
||||
|
||||
restriction_lure:
|
||||
enchantments:
|
||||
- minecraft:lure
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- fishing_rod
|
||||
|
||||
restriction_mending:
|
||||
enchantments:
|
||||
- minecraft:mending
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- can_unbreak
|
||||
|
||||
restriction_minecraft_multishot:
|
||||
enchantments:
|
||||
- minecraft:multishot
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- crossbow
|
||||
|
||||
restriction_piercing:
|
||||
enchantments:
|
||||
- minecraft:piercing
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- crossbow
|
||||
|
||||
restriction_power:
|
||||
enchantments:
|
||||
- minecraft:power
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- bow
|
||||
|
||||
restriction_projectile_protection:
|
||||
enchantments:
|
||||
- minecraft:projectile_protection
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- armors
|
||||
|
||||
restriction_protection:
|
||||
enchantments:
|
||||
- minecraft:protection
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- armors
|
||||
|
||||
restriction_punch:
|
||||
enchantments:
|
||||
- minecraft:punch
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- bow
|
||||
|
||||
restriction_quick_charge:
|
||||
enchantments:
|
||||
- minecraft:quick_charge
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- crossbow
|
||||
|
||||
restriction_respiration:
|
||||
enchantments:
|
||||
- minecraft:respiration
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- helmets
|
||||
|
||||
restriction_riptide:
|
||||
enchantments:
|
||||
- minecraft:riptide
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- trident
|
||||
|
||||
restriction_sharpness:
|
||||
enchantments:
|
||||
- minecraft:sharpness
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- melee_weapons
|
||||
|
||||
restriction__silk_touch:
|
||||
enchantments:
|
||||
- minecraft:silk_touch
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- tools
|
||||
|
||||
restriction_smite:
|
||||
enchantments:
|
||||
- minecraft:smite
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- melee_weapons
|
||||
- mace
|
||||
|
||||
restriction_soul_speed:
|
||||
enchantments:
|
||||
- minecraft:soul_speed
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- boots
|
||||
|
||||
restriction_sweeping_edge:
|
||||
enchantments:
|
||||
- minecraft:sweeping
|
||||
- minecraft:sweeping_edge
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- swords
|
||||
|
||||
# Do not exist in 1.18, that mean useInFuture will be set to true
|
||||
# useInFuture set to true also mean it will not warn if there is an issue
|
||||
restriction_swift_sneak:
|
||||
useInFuture: true
|
||||
enchantments:
|
||||
- minecraft:swift_sneak
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- leggings
|
||||
|
||||
restriction_thorns:
|
||||
enchantments:
|
||||
- minecraft:thorns
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- armors
|
||||
|
||||
restriction__unbreaking:
|
||||
enchantments:
|
||||
- minecraft:unbreaking
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- can_unbreak
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Now we have conflicts about enchantment Incompatibility
|
||||
# We just filtered what item enchantments can be applied
|
||||
# notAffectedGroups is empty as we don't want anything to not respect theses rules
|
||||
# maxEnchantmentBeforeConflict is set to 1 to only have 1 on those enchantment available
|
||||
# ----------------------------------------------------
|
||||
|
||||
sword_enchant_conflict:
|
||||
enchantments:
|
||||
- minecraft:bane_of_arthropods
|
||||
- minecraft:smite
|
||||
- minecraft:sharpness
|
||||
- minecraft:density
|
||||
- minecraft:breach
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
protection_enchant_conflict:
|
||||
enchantments:
|
||||
- minecraft:blast_protection
|
||||
- minecraft:fire_protection
|
||||
- minecraft:projectile_protection
|
||||
- minecraft:protection
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
trident_conflict1:
|
||||
enchantments:
|
||||
- minecraft:channeling
|
||||
- minecraft:riptide
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
trident_conflict2:
|
||||
enchantments:
|
||||
- minecraft:loyalty
|
||||
- minecraft:riptide
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
boot_conflict:
|
||||
enchantments:
|
||||
- minecraft:depth_strider
|
||||
- minecraft:frost_walker
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
tool_conflict:
|
||||
enchantments:
|
||||
- minecraft:fortune
|
||||
- minecraft:silk_touch
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
bow_conflict:
|
||||
enchantments:
|
||||
- minecraft:mending
|
||||
- minecraft:infinity
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
crossbow_conflict:
|
||||
enchantments:
|
||||
- minecraft:multishot
|
||||
- minecraft:piercing
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
restriction_density:
|
||||
enchantments:
|
||||
- minecraft:density
|
||||
notAffectedGroups:
|
||||
- mace
|
||||
- enchanted_book
|
||||
restriction_breach:
|
||||
enchantments:
|
||||
- minecraft:breach
|
||||
notAffectedGroups:
|
||||
- mace
|
||||
- enchanted_book
|
||||
restriction_wind_burst:
|
||||
enchantments:
|
||||
- minecraft:wind_burst
|
||||
notAffectedGroups:
|
||||
- mace
|
||||
- enchanted_book
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Bellow is for custom conflicts.
|
||||
# This is also where conflict create from the gui will be placed.
|
||||
# ----------------------------------------------------
|
||||
|
|
@ -1,236 +0,0 @@
|
|||
#
|
||||
# It is recommended that you use /configanvil to edit theses config.
|
||||
# You can still manually edit here if you like to. but if you do, don't forget to /anvilconfigreload after you changes !
|
||||
#
|
||||
|
||||
# Please note this config use spigot material names.
|
||||
# It should match minecraft name in most case, maybe every case, but I can't be sure
|
||||
# In case there an issue with material name, you can found them here:
|
||||
# https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
|
||||
|
||||
# An empty Exclude group exclude nothing, so it contain everything
|
||||
everything:
|
||||
type: exclude
|
||||
|
||||
# An empty include group will include nothing
|
||||
nothing:
|
||||
type: include
|
||||
|
||||
# This group is an example of a group including only stone and polished granite
|
||||
example_include:
|
||||
type: include
|
||||
items:
|
||||
- stone
|
||||
- polished_granite
|
||||
|
||||
# This group contain everything except polished granite and elements of example_include
|
||||
example_exclude:
|
||||
type: exclude
|
||||
items:
|
||||
- polished_granite
|
||||
groups:
|
||||
- example_include
|
||||
|
||||
# Default configuration should be vanilla enchantment conflict group
|
||||
# there may have error, if you find one you can fix it !
|
||||
# https://minecraft.fandom.com/wiki/Enchanting
|
||||
|
||||
swords:
|
||||
type: include
|
||||
items:
|
||||
- wooden_sword
|
||||
- stone_sword
|
||||
- iron_sword
|
||||
- diamond_sword
|
||||
- golden_sword
|
||||
- netherite_sword
|
||||
- copper_sword
|
||||
|
||||
axes:
|
||||
type: include
|
||||
items:
|
||||
- wooden_axe
|
||||
- stone_axe
|
||||
- iron_axe
|
||||
- diamond_axe
|
||||
- golden_axe
|
||||
- netherite_axe
|
||||
- copper_axe
|
||||
|
||||
melee_weapons:
|
||||
type: include
|
||||
groups:
|
||||
- swords
|
||||
- axes
|
||||
|
||||
helmets:
|
||||
type: include
|
||||
items:
|
||||
- leather_helmet
|
||||
- chainmail_helmet
|
||||
- iron_helmet
|
||||
- diamond_helmet
|
||||
- golden_helmet
|
||||
- netherite_helmet
|
||||
- turtle_helmet
|
||||
- copper_helmet
|
||||
|
||||
chestplate:
|
||||
type: include
|
||||
items:
|
||||
- leather_chestplate
|
||||
- chainmail_chestplate
|
||||
- iron_chestplate
|
||||
- diamond_chestplate
|
||||
- golden_chestplate
|
||||
- netherite_chestplate
|
||||
- copper_chestplate
|
||||
|
||||
leggings:
|
||||
type: include
|
||||
items:
|
||||
- leather_leggings
|
||||
- chainmail_leggings
|
||||
- iron_leggings
|
||||
- diamond_leggings
|
||||
- golden_leggings
|
||||
- netherite_leggings
|
||||
- copper_leggings
|
||||
|
||||
boots:
|
||||
type: include
|
||||
items:
|
||||
- leather_boots
|
||||
- chainmail_boots
|
||||
- iron_boots
|
||||
- diamond_boots
|
||||
- golden_boots
|
||||
- netherite_boots
|
||||
- copper_boots
|
||||
|
||||
armors:
|
||||
type: include
|
||||
groups:
|
||||
- helmets
|
||||
- chestplate
|
||||
- leggings
|
||||
- boots
|
||||
|
||||
wearable:
|
||||
type: include
|
||||
items:
|
||||
- elytra
|
||||
- carved_pumpkin
|
||||
- skeleton_skull
|
||||
- wither_skeleton_skull
|
||||
- zombie_head
|
||||
- player_head
|
||||
- creeper_head
|
||||
- dragon_head
|
||||
- piglin_head
|
||||
groups:
|
||||
- armors
|
||||
|
||||
pickaxes:
|
||||
type: include
|
||||
items:
|
||||
- wooden_pickaxe
|
||||
- stone_pickaxe
|
||||
- iron_pickaxe
|
||||
- diamond_pickaxe
|
||||
- golden_pickaxe
|
||||
- netherite_pickaxe
|
||||
- copper_pickaxe
|
||||
|
||||
shovels:
|
||||
type: include
|
||||
items:
|
||||
- wooden_shovel
|
||||
- stone_shovel
|
||||
- iron_shovel
|
||||
- diamond_shovel
|
||||
- golden_shovel
|
||||
- netherite_shovel
|
||||
- copper_shovel
|
||||
|
||||
hoes:
|
||||
type: include
|
||||
items:
|
||||
- wooden_hoe
|
||||
- stone_hoe
|
||||
- iron_hoe
|
||||
- diamond_hoe
|
||||
- golden_hoe
|
||||
- netherite_hoe
|
||||
- copper_hoe
|
||||
|
||||
tools:
|
||||
type: include
|
||||
groups:
|
||||
- pickaxes
|
||||
- shovels
|
||||
- hoes
|
||||
- axes
|
||||
|
||||
enchanted_book:
|
||||
type: include
|
||||
items:
|
||||
- enchanted_book
|
||||
|
||||
trident:
|
||||
type: include
|
||||
items:
|
||||
- trident
|
||||
|
||||
bow:
|
||||
type: include
|
||||
items:
|
||||
- bow
|
||||
|
||||
crossbow:
|
||||
type: include
|
||||
items:
|
||||
- crossbow
|
||||
|
||||
fishing_rod:
|
||||
type: include
|
||||
items:
|
||||
- fishing_rod
|
||||
|
||||
shears:
|
||||
type: include
|
||||
items:
|
||||
- shears
|
||||
|
||||
can_unbreak:
|
||||
type: include
|
||||
items:
|
||||
- elytra
|
||||
- flint_and_steel
|
||||
- shield
|
||||
- carrot_on_a_stick
|
||||
- warped_fungus_on_a_stick
|
||||
- brush
|
||||
groups:
|
||||
- melee_weapons
|
||||
- tools
|
||||
- armors
|
||||
- trident
|
||||
- bow
|
||||
- crossbow
|
||||
- fishing_rod
|
||||
- shears
|
||||
- mace
|
||||
|
||||
can_vanish:
|
||||
type: include
|
||||
items:
|
||||
- compass
|
||||
groups:
|
||||
- wearable
|
||||
- can_unbreak
|
||||
mace:
|
||||
type: include
|
||||
items:
|
||||
- mace
|
||||
|
||||
|
|
@ -1,192 +0,0 @@
|
|||
#
|
||||
# It is recommended that you use /configanvil to edit theses config.
|
||||
# You can still manually edit here if you like to. but if you do, don't forget to /anvilconfigreload after you changes !
|
||||
#
|
||||
|
||||
# Unit repair configuration
|
||||
#
|
||||
# This configuration is to make custom unit repair
|
||||
# A unit repair is, for example, a diamond to repair a diamond sword
|
||||
# In vanilla, a unit repair 25% of object durability
|
||||
# you can make a custom value here
|
||||
#
|
||||
# Item name should NOT combine caps and no caps (example: Stone)
|
||||
|
||||
# Default value if the config is an invalid value (value <= 0 )
|
||||
# If value > 1 it will be treated as being = 1
|
||||
default_repair_amount: 0.25
|
||||
|
||||
# You can add custom unit repair
|
||||
# The example bellow make a shield repaired by 10% by sticks
|
||||
|
||||
# stick:
|
||||
# shield: 0.10
|
||||
|
||||
|
||||
# Vanilla unit repair group is bellow
|
||||
diamond:
|
||||
diamond_helmet: 0.25
|
||||
diamond_chestplate: 0.25
|
||||
diamond_leggings: 0.25
|
||||
diamond_boots: 0.25
|
||||
diamond_sword: 0.25
|
||||
diamond_pickaxe: 0.25
|
||||
diamond_axe: 0.25
|
||||
diamond_shovel: 0.25
|
||||
diamond_hoe: 0.25
|
||||
|
||||
netherite_ingot:
|
||||
netherite_helmet: 0.25
|
||||
netherite_chestplate: 0.25
|
||||
netherite_leggings: 0.25
|
||||
netherite_boots: 0.25
|
||||
netherite_sword: 0.25
|
||||
netherite_pickaxe: 0.25
|
||||
netherite_axe: 0.25
|
||||
netherite_shovel: 0.25
|
||||
netherite_hoe: 0.25
|
||||
|
||||
gold_ingot:
|
||||
golden_helmet: 0.25
|
||||
golden_chestplate: 0.25
|
||||
golden_leggings: 0.25
|
||||
golden_boots: 0.25
|
||||
golden_sword: 0.25
|
||||
golden_pickaxe: 0.25
|
||||
golden_axe: 0.25
|
||||
golden_shovel: 0.25
|
||||
golden_hoe: 0.25
|
||||
|
||||
iron_ingot:
|
||||
iron_helmet: 0.25
|
||||
iron_chestplate: 0.25
|
||||
iron_leggings: 0.25
|
||||
iron_boots: 0.25
|
||||
iron_sword: 0.25
|
||||
iron_pickaxe: 0.25
|
||||
iron_axe: 0.25
|
||||
iron_shovel: 0.25
|
||||
iron_hoe: 0.25
|
||||
|
||||
cobblestone:
|
||||
stone_sword: 0.25
|
||||
stone_pickaxe: 0.25
|
||||
stone_axe: 0.25
|
||||
stone_shovel: 0.25
|
||||
stone_hoe: 0.25
|
||||
|
||||
cobbled_deepslate:
|
||||
stone_sword: 0.25
|
||||
stone_pickaxe: 0.25
|
||||
stone_axe: 0.25
|
||||
stone_shovel: 0.25
|
||||
stone_hoe: 0.25
|
||||
|
||||
blackstone:
|
||||
stone_sword: 0.25
|
||||
stone_pickaxe: 0.25
|
||||
stone_axe: 0.25
|
||||
stone_shovel: 0.25
|
||||
stone_hoe: 0.25
|
||||
|
||||
leather:
|
||||
leather_helmet: 0.25
|
||||
leather_chestplate: 0.25
|
||||
leather_leggings: 0.25
|
||||
leather_boots: 0.25
|
||||
|
||||
phantom_membrane:
|
||||
elytra: 0.25
|
||||
|
||||
scute:
|
||||
turtle_helmet: 0.25
|
||||
|
||||
oak_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
|
||||
spruce_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
|
||||
birch_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
|
||||
jungle_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
|
||||
acacia_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
|
||||
dark_oak_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
|
||||
mangrove_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
|
||||
cherry_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
|
||||
bamboo_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
|
||||
crimson_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
|
||||
warped_planks:
|
||||
wooden_sword: 0.25
|
||||
wooden_pickaxe: 0.25
|
||||
wooden_axe: 0.25
|
||||
wooden_shovel: 0.25
|
||||
wooden_hoe: 0.25
|
||||
shield: 0.25
|
||||
breeze_rod:
|
||||
mace: 0.25
|
||||
|
|
@ -3,19 +3,6 @@
|
|||
# You can still manually edit here if you like to. but if you do, don't forget to /anvilconfigreload after you changes !
|
||||
#
|
||||
|
||||
# What service of metric should custom anvil use
|
||||
# Custom anvil collect generic information like server minecraft version, type, etc...
|
||||
# It can also collect error information if error is happening (currently faststats only)
|
||||
# It can also be disabled
|
||||
# Please refer to README for public metric link
|
||||
# Possible options: auto, bstat, faststats, disabled (auto by default)
|
||||
metric_type: auto
|
||||
|
||||
# Allow to report errors made caused by this plugin (only for faststats)
|
||||
# This allows me to fix potentials issue that I'm not aware of
|
||||
# Accept true or false (true by default)
|
||||
metric_collect_errors: true
|
||||
|
||||
# All anvil cost will be capped to limit_repair_value if enabled.
|
||||
#
|
||||
# In other words:
|
||||
|
|
@ -68,54 +55,10 @@ unit_repair_cost: 1
|
|||
# Valid values include 0 to 1000
|
||||
sacrifice_illegal_enchant_cost: 1
|
||||
|
||||
# Allow using color code and hexadecimal color.
|
||||
# Default limit to apply to any enchants missing from override_limits
|
||||
#
|
||||
# Color code are prefixed by "&" and hexadecimal color by "#".
|
||||
# Color code will not be applied if it colors nothing. "&&" can be used to write "&".
|
||||
# For minimessage search for minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
allow_color_code: false
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: false
|
||||
|
||||
# This enables restricting color code for player having specific permission
|
||||
# It requires allow_color_code enabled for... obvious reasons
|
||||
#
|
||||
# For example: if player want to use "&aHello" it will be required that the player has
|
||||
# the permission "ca.color.code.a" as he used the color code "a"
|
||||
# In general permission to give to the player is "ca.color.code.[code]"
|
||||
# where [code] is the color code you wish to allow the player
|
||||
#
|
||||
# It is kinda of useless when minimessage is supported as players would be able to bypass
|
||||
# that using the equivalent minimessage tag
|
||||
per_color_code_permission: false
|
||||
|
||||
# Toggle if color should only be applicable if the player a certain permission.
|
||||
#
|
||||
# permission are "ca.color.code" for use of color code and "ca.color.hex" for use of hexadecimal color.
|
||||
permission_needed_for_color: true
|
||||
|
||||
# Xp cost if the player use color in the items name on rename.
|
||||
#
|
||||
# Valid values include 0 to 1000.
|
||||
use_of_color_cost: 0
|
||||
|
||||
# Dialogue rename menu make use of dialog menu to allow bigger rename
|
||||
# You can also change the maximum size and set it to -1 or less for maximum
|
||||
#
|
||||
# This feature only work on paper 1.21.7 or later
|
||||
#
|
||||
# At the moment only english is available for this menu... sorry !
|
||||
#
|
||||
# CustomAnvil use "ca.rename.dialog" when permission
|
||||
enable_dialog_rename: false
|
||||
dialog_rename_max_size: 256
|
||||
permission_needed_for_dialog_rename: false
|
||||
|
||||
# This allows custom anvil to not "guess" the text used for rename but store it in the item
|
||||
# It will make item stackable only and only if it had used the same rename text
|
||||
#
|
||||
# For practical reason. this only work when dialog rename is enabled
|
||||
dialog_rename_keep_user_text: true
|
||||
# Valid values include 1 to 1000
|
||||
default_limit: 5
|
||||
|
||||
# Override limits for specific enchants
|
||||
#
|
||||
|
|
@ -123,49 +66,51 @@ dialog_rename_keep_user_text: true
|
|||
#
|
||||
# Overrides provided default from aqua_affinity to depth_strider won't change effect with extra levels
|
||||
#
|
||||
# Valid range of 0 - 255 for each enchantment
|
||||
# -1 mean keep default
|
||||
# Valid range of 1 - 255 for each enchantment
|
||||
enchant_limits:
|
||||
minecraft:aqua_affinity: 1
|
||||
minecraft:binding_curse: 1
|
||||
minecraft:channeling: 1
|
||||
minecraft:flame: 1
|
||||
minecraft:infinity: 1
|
||||
minecraft:mending: 1
|
||||
minecraft:multishot: 1
|
||||
minecraft:silk_touch: 1
|
||||
minecraft:vanishing_curse: 1
|
||||
minecraft:depth_strider: 3 # anything more than 3 is treated as 3 by the game
|
||||
minecraft:protection: 4
|
||||
minecraft:fire_protection: 4
|
||||
minecraft:blast_protection: 4
|
||||
minecraft:projectile_protection: 4
|
||||
minecraft:feather_falling: 4
|
||||
minecraft:thorns: 3
|
||||
minecraft:respiration: 3
|
||||
minecraft:sharpness: 5
|
||||
minecraft:smite: 5
|
||||
minecraft:bane_of_arthropods: 5
|
||||
minecraft:knockback: 2
|
||||
minecraft:fire_aspect: 2
|
||||
minecraft:looting: 3
|
||||
minecraft:sweeping: 3
|
||||
minecraft:sweeping_edge: 3
|
||||
minecraft:efficiency: 5
|
||||
minecraft:unbreaking: 3
|
||||
minecraft:fortune: 3
|
||||
minecraft:power: 5
|
||||
minecraft:punch: 2
|
||||
minecraft:luck_of_the_sea: 3
|
||||
minecraft:lure: 3
|
||||
minecraft:frost_walker: 2
|
||||
minecraft:impaling: 5
|
||||
minecraft:riptide: 3
|
||||
minecraft:loyalty: 3
|
||||
minecraft:piercing: 4
|
||||
minecraft:quick_charge: 3
|
||||
minecraft:soul_speed: 3
|
||||
minecraft:swift_sneak: 3
|
||||
aqua_affinity: 1
|
||||
binding_curse: 1
|
||||
channeling: 1
|
||||
flame: 1
|
||||
infinity: 1
|
||||
mending: 1
|
||||
multishot: 1
|
||||
silk_touch: 1
|
||||
vanishing_curse: 1
|
||||
depth_strider: 3 # anything more than 3 is treated as 3 by the game
|
||||
protection: 4
|
||||
fire_protection: 4
|
||||
blast_protection: 4
|
||||
projectile_protection: 4
|
||||
feather_falling: 4
|
||||
thorns: 3
|
||||
respiration: 3
|
||||
sharpness: 5
|
||||
smite: 5
|
||||
bane_of_arthropods: 5
|
||||
knockback: 2
|
||||
fire_aspect: 2
|
||||
looting: 3
|
||||
sweeping: 3
|
||||
sweeping_edge: 3
|
||||
efficiency: 5
|
||||
unbreaking: 3
|
||||
fortune: 3
|
||||
power: 5
|
||||
punch: 2
|
||||
luck_of_the_sea: 3
|
||||
lure: 3
|
||||
frost_walker: 2
|
||||
impaling: 5
|
||||
riptide: 3
|
||||
loyalty: 3
|
||||
piercing: 4
|
||||
quick_charge: 3
|
||||
soul_speed: 3
|
||||
swift_sneak: 3
|
||||
density: 5
|
||||
breach: 4
|
||||
wind_burst: 3
|
||||
|
||||
# Multipliers used to calculate the enchantment's value in repair/combining
|
||||
#
|
||||
|
|
@ -179,283 +124,135 @@ enchant_limits:
|
|||
# With default values protection 4 would have a value of 4 when
|
||||
# coming from either a book (4 * 1) or an item (4 * 1)
|
||||
enchant_values:
|
||||
minecraft:aqua_affinity:
|
||||
aqua_affinity:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:bane_of_arthropods:
|
||||
bane_of_arthropods:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:binding_curse:
|
||||
binding_curse:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:blast_protection:
|
||||
blast_protection:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:channeling:
|
||||
channeling:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:depth_strider:
|
||||
depth_strider:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:efficiency:
|
||||
efficiency:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:flame:
|
||||
flame:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:feather_falling:
|
||||
feather_falling:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:fire_aspect:
|
||||
fire_aspect:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:fire_protection:
|
||||
fire_protection:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:fortune:
|
||||
fortune:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:frost_walker:
|
||||
frost_walker:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:impaling:
|
||||
impaling:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:infinity:
|
||||
infinity:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:knockback:
|
||||
knockback:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:looting:
|
||||
looting:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:loyalty:
|
||||
loyalty:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:luck_of_the_sea:
|
||||
luck_of_the_sea:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:lure:
|
||||
lure:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:mending:
|
||||
mending:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:multishot:
|
||||
multishot:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:piercing:
|
||||
piercing:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:power:
|
||||
power:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:projectile_protection:
|
||||
projectile_protection:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:protection:
|
||||
protection:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:punch:
|
||||
punch:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:quick_charge:
|
||||
quick_charge:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:respiration:
|
||||
respiration:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:riptide:
|
||||
riptide:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:silk_touch:
|
||||
silk_touch:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:sharpness:
|
||||
sharpness:
|
||||
item: 1
|
||||
book: 1
|
||||
minecraft:smite:
|
||||
smite:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:soul_speed:
|
||||
soul_speed:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:swift_sneak:
|
||||
swift_sneak:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:sweeping:
|
||||
sweeping:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:sweeping_edge:
|
||||
sweeping_edge:
|
||||
item: 4
|
||||
book: 2
|
||||
minecraft:thorns:
|
||||
thorns:
|
||||
item: 8
|
||||
book: 4
|
||||
minecraft:unbreaking:
|
||||
unbreaking:
|
||||
item: 2
|
||||
book: 1
|
||||
minecraft:vanishing_curse:
|
||||
vanishing_curse:
|
||||
item: 8
|
||||
book: 4
|
||||
|
||||
# Disable enchantment merging for level above the set value
|
||||
# Enchantment merging is when, for example, 2 unbreaking II book combine to give sharpness III
|
||||
# But Enchantment above this value can still be applied. following the previous example, we could still apply a unbreaking III book to a sword
|
||||
# Even if disable-merge-over of unbreaking is set to 2
|
||||
# -1 mean enchantment merge for this enchantment is not disabled. default to -1 if absent.
|
||||
disable-merge-over:
|
||||
# Sharpness is set to -1. it equivalent to it not being set to anything (and work as vanilla on default configuration)
|
||||
minecraft:sharpness: -1
|
||||
# If uncommented. 2 unbreaking II book would not give an unbreaking III book. but unbreaking III book can still be applied
|
||||
# minecraft:unbreaking: 2
|
||||
|
||||
# The maximum number of enchantment an item can get. -1 for infinity
|
||||
# Use eco enchant enchant_limit if present by default unless "default" is not equal to -1
|
||||
enchantment_count_limit:
|
||||
default: -1
|
||||
# Limit for specific items. example bellow is an example with stick
|
||||
# Per item enchantment limit override eco enchant enchant_limit and default limit
|
||||
items:
|
||||
stick: -1
|
||||
|
||||
# Settings for lore modification
|
||||
lore_edit:
|
||||
book_and_quil:
|
||||
# Permission is ca.lore_edit.book
|
||||
use_permission: true
|
||||
append:
|
||||
# If adding lore using book & quil is enabled
|
||||
enabled: false
|
||||
# Cost used every time
|
||||
fixed_cost: 1
|
||||
# Cost used for every lore line added
|
||||
per_line_cost: 0
|
||||
# Use left item vanilla cost penalty if any
|
||||
shared_increase: false
|
||||
# Increase shared left item cost penalty
|
||||
shared_additive: false
|
||||
# If adding the lore consume the book & quil
|
||||
do_consume: false
|
||||
# Allow using color code and hexadecimal color when editing lore via book & quil
|
||||
#
|
||||
# Color code are prefixed by "&" and hexadecimal color by "#"
|
||||
# Color code will not be applied if it colors nothing. "&&" can be used to write "&"
|
||||
# For minimessage see minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
#
|
||||
# Note that currently minimessage would disable hex code when adding color
|
||||
allow_color_code: true
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: true
|
||||
|
||||
remove:
|
||||
# If removing lore using book & quil is enabled
|
||||
enabled: false
|
||||
# Cost used every time
|
||||
fixed_cost: 1
|
||||
# Cost used for every lore line removed
|
||||
per_line_cost: 0
|
||||
# Use left item vanilla cost penalty if any
|
||||
shared_increase: false
|
||||
# Increase shared left item cost penalty
|
||||
shared_additive: false
|
||||
# If removing the lore consume the book & quil
|
||||
do_consume: false
|
||||
# Cost of replacing colors
|
||||
remove_color_cost: 0
|
||||
# Allowed some color and tags to be reverted to plain text
|
||||
# Custom anvil will prioritise format that result is a smaller resulting text
|
||||
# Note that not allowing certain format will lead to some lost of color or tags.
|
||||
# If configuration are exact as append appending this book should result in the exact same color
|
||||
#
|
||||
# Color code will be prefixed by "&" and hexadecimal color by "#".
|
||||
# If color code is allowed, "&" in the text will get converted to "&&"
|
||||
# For minimessage see minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
allow_color_code: true
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: true
|
||||
|
||||
paper:
|
||||
# Permission is ca.lore_edit.paper
|
||||
use_permission: true
|
||||
# what order should the lines should get added/removed (start/end, if invalid or not present will be end)
|
||||
order: end
|
||||
|
||||
append_line:
|
||||
# If adding lore line using paper is enabled
|
||||
enabled: false
|
||||
# Cost used every time
|
||||
fixed_cost: 1
|
||||
# Use left item vanilla cost penalty if any
|
||||
shared_increase: false
|
||||
# Increase shared left item cost penalty
|
||||
shared_additive: false
|
||||
# If adding the lore line consume the paper
|
||||
do_consume: false
|
||||
# Allow using color code and hexadecimal color when editing lore via book & quil
|
||||
#
|
||||
# Color code are prefixed by "&" and hexadecimal color by "#"
|
||||
# Color code will not be applied if it colors nothing. "&&" can be used to write "&"
|
||||
# For minimessage see minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
#
|
||||
# Note that currently minimessage would disable hex code when adding color
|
||||
allow_color_code: true
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: true
|
||||
color_use_cost: 0
|
||||
|
||||
remove_line:
|
||||
# If removing lore line using paper is enabled
|
||||
enabled: false
|
||||
# Cost used every time
|
||||
fixed_cost: 1
|
||||
# Use left item vanilla cost penalty if any
|
||||
shared_increase: false
|
||||
# Increase shared left item cost penalty
|
||||
shared_additive: false
|
||||
# If removing the lore line consume the paper
|
||||
do_consume: false
|
||||
# Cost of replacing colors
|
||||
remove_color_cost: 0
|
||||
# Allowed some color and tags to be reverted to plain text
|
||||
# Custom anvil will prioritise format that result is a smaller resulting text
|
||||
# Note that not allowing certain format will lead to some lost of color or tags.
|
||||
# If configuration are exact as append appending this paper should result in the exact same color
|
||||
#
|
||||
# Color code will be prefixed by "&" and hexadecimal color by "#".
|
||||
# If color code is allowed, "&" in the text will get converted to "&&"
|
||||
# For minimessage see minimessage formating https://docs.papermc.io/adventure/minimessage/format/
|
||||
allow_color_code: true
|
||||
allow_hexadecimal_color: false
|
||||
allow_minimessage: true
|
||||
|
||||
# Allow to replace the xp cost by a monetary cost
|
||||
# If enabled it will not be bound to the experience level limits
|
||||
#
|
||||
# It also requires to enable dialog rename (set "enable_dialog_rename: false" a bit higher)
|
||||
# If dialog rename permission is enabled and player do not have the permission merge will fall back to vanilla xp cost
|
||||
#
|
||||
# If you are using custom craft I recommend using Linear Xp Cost with Exact Linear Xp as normal Xp Cost will act "weird"
|
||||
# But Linear Xp will act as 1$ time global multiplier. In other word: like you expect
|
||||
#
|
||||
# As this feature require dialog rename, it can only be enabled starting with paper 1.21.6 and later
|
||||
monetary_cost:
|
||||
enabled: false
|
||||
# If using vault unlocked this allow to specify what currency should be used for anvil usage
|
||||
# default being the default currency
|
||||
currency: default
|
||||
# multiply the anvil cost by a value to allow to have price a big bigger than like 40
|
||||
multipliers:
|
||||
# global multipliers. all usage type will be multiplied by this value
|
||||
global: 1.0
|
||||
# usage specific type. it will only apply for specific xp "reason"
|
||||
enchantment: 1.0 # related to enchantments level
|
||||
repair: 1.0 # for repairing via unit repair (per unit)
|
||||
rename: 1.0 # for renaming the item
|
||||
lore_edit: 1.0 # for changing the lore of the item (only if lore edit is enabled)
|
||||
work_penalty: 1.0 # for work penalty (aka use penalty)
|
||||
recipe: 1.0 # for custom anvil recipe cost
|
||||
density:
|
||||
item: 1
|
||||
book: 1
|
||||
breach:
|
||||
item: 4
|
||||
book: 2
|
||||
wind_burst:
|
||||
item: 4
|
||||
book: 2
|
||||
|
||||
# Whether to show debug logging
|
||||
debug_log: false
|
||||
|
|
@ -463,4 +260,5 @@ debug_log: false
|
|||
# Whether to show verbose debug logging
|
||||
debug_log_verbose: false
|
||||
|
||||
configVersion: 1.11.0
|
||||
configVersion: 1.4.5
|
||||
lowMinecraftVersion: 1.21
|
||||
|
|
|
|||
|
|
@ -17,163 +17,278 @@
|
|||
# ----------------------------------------------------
|
||||
|
||||
restriction_aqua_affinity:
|
||||
enchantments: [ minecraft:aqua_affinity ]
|
||||
notAffectedGroups: [ enchanted_book, helmets ]
|
||||
enchantments:
|
||||
- aqua_affinity
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- helmets
|
||||
|
||||
restriction_bane_of_arthropods:
|
||||
enchantments: [ minecraft:bane_of_arthropods ]
|
||||
notAffectedGroups: [ enchanted_book, melee_weapons ]
|
||||
enchantments:
|
||||
- bane_of_arthropods
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- melee_weapons
|
||||
- mace
|
||||
|
||||
restriction_blast_protection:
|
||||
enchantments: [ minecraft:blast_protection ]
|
||||
notAffectedGroups: [ enchanted_book, armors ]
|
||||
enchantments:
|
||||
- blast_protection
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- armors
|
||||
|
||||
restriction_channeling:
|
||||
enchantments: [ minecraft:channeling ]
|
||||
notAffectedGroups: [ enchanted_book, trident ]
|
||||
enchantments:
|
||||
- channeling
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- trident
|
||||
|
||||
restriction_binding_curse:
|
||||
enchantments: [ minecraft:binding_curse ]
|
||||
notAffectedGroups: [ enchanted_book, wearable ]
|
||||
enchantments:
|
||||
- binding_curse
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- wearable
|
||||
|
||||
restriction_vanishing_curse:
|
||||
enchantments: [ minecraft:vanishing_curse ]
|
||||
notAffectedGroups: [ enchanted_book, can_vanish ]
|
||||
enchantments:
|
||||
- vanishing_curse
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- can_vanish
|
||||
|
||||
restriction_depth_strider:
|
||||
enchantments: [ minecraft:depth_strider ]
|
||||
notAffectedGroups: [ enchanted_book, boots ]
|
||||
enchantments:
|
||||
- depth_strider
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- boots
|
||||
|
||||
restriction_efficiency:
|
||||
enchantments: [ minecraft:efficiency ]
|
||||
notAffectedGroups: [ enchanted_book, tools, shears ]
|
||||
enchantments:
|
||||
- efficiency
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- tools
|
||||
- shears
|
||||
|
||||
restriction_feather_falling:
|
||||
enchantments: [ minecraft:feather_falling ]
|
||||
notAffectedGroups: [ enchanted_book, boots ]
|
||||
enchantments:
|
||||
- feather_falling
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- boots
|
||||
|
||||
restriction_fire_aspect:
|
||||
enchantments: [ minecraft:fire_aspect ]
|
||||
notAffectedGroups: [ enchanted_book, swords ]
|
||||
enchantments:
|
||||
- fire_aspect
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- swords
|
||||
- mace
|
||||
|
||||
restriction_fire_protection:
|
||||
enchantments: [ minecraft:fire_protection ]
|
||||
notAffectedGroups: [ enchanted_book, armors ]
|
||||
enchantments:
|
||||
- fire_protection
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- armors
|
||||
|
||||
restriction_flame:
|
||||
enchantments: [ minecraft:flame ]
|
||||
notAffectedGroups: [ enchanted_book, bow ]
|
||||
enchantments:
|
||||
- flame
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- bow
|
||||
|
||||
restriction_fortune:
|
||||
enchantments: [ minecraft:fortune ]
|
||||
notAffectedGroups: [ enchanted_book, tools ]
|
||||
enchantments:
|
||||
- fortune
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- tools
|
||||
|
||||
restriction_frost_walker:
|
||||
enchantments: [ minecraft:frost_walker ]
|
||||
notAffectedGroups: [ enchanted_book, boots ]
|
||||
enchantments:
|
||||
- frost_walker
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- boots
|
||||
|
||||
restriction_impaling:
|
||||
enchantments: [ minecraft:impaling ]
|
||||
notAffectedGroups: [ enchanted_book, trident ]
|
||||
enchantments:
|
||||
- impaling
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- trident
|
||||
|
||||
restriction_infinity:
|
||||
enchantments: [ minecraft:infinity ]
|
||||
notAffectedGroups: [ enchanted_book, bow ]
|
||||
enchantments:
|
||||
- infinity
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- bow
|
||||
|
||||
restriction_knockback:
|
||||
enchantments: [ minecraft:knockback ]
|
||||
notAffectedGroups: [ enchanted_book, swords ]
|
||||
enchantments:
|
||||
- knockback
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- swords
|
||||
|
||||
restriction_looting:
|
||||
enchantments: [ minecraft:looting ]
|
||||
notAffectedGroups: [ enchanted_book, swords ]
|
||||
enchantments:
|
||||
- looting
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- swords
|
||||
|
||||
restriction_loyalty:
|
||||
enchantments: [ minecraft:loyalty ]
|
||||
notAffectedGroups: [ enchanted_book, trident ]
|
||||
|
||||
restriction_luck_of_the_sea:
|
||||
enchantments: [ minecraft:luck_of_the_sea ]
|
||||
notAffectedGroups: [ enchanted_book, fishing_rod ]
|
||||
enchantments:
|
||||
- loyalty
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- trident
|
||||
|
||||
restriction_lure:
|
||||
enchantments: [ minecraft:lure ]
|
||||
notAffectedGroups: [ enchanted_book, fishing_rod ]
|
||||
enchantments:
|
||||
- lure
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- fishing_rod
|
||||
|
||||
restriction_mending:
|
||||
enchantments: [ minecraft:mending ]
|
||||
notAffectedGroups: [ enchanted_book, can_unbreak ]
|
||||
enchantments:
|
||||
- mending
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- can_unbreak
|
||||
|
||||
restriction_minecraft_multishot:
|
||||
enchantments: [ minecraft:multishot ]
|
||||
notAffectedGroups: [ enchanted_book, crossbow ]
|
||||
restriction_multishot:
|
||||
enchantments:
|
||||
- multishot
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- crossbow
|
||||
|
||||
restriction_piercing:
|
||||
enchantments: [ minecraft:piercing ]
|
||||
notAffectedGroups: [ enchanted_book, crossbow ]
|
||||
enchantments:
|
||||
- piercing
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- crossbow
|
||||
|
||||
restriction_power:
|
||||
enchantments: [ minecraft:power ]
|
||||
notAffectedGroups: [ enchanted_book, bow ]
|
||||
enchantments:
|
||||
- power
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- bow
|
||||
|
||||
restriction_projectile_protection:
|
||||
enchantments: [ minecraft:projectile_protection ]
|
||||
notAffectedGroups: [ enchanted_book, armors ]
|
||||
enchantments:
|
||||
- projectile_protection
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- armors
|
||||
|
||||
restriction_protection:
|
||||
enchantments: [ minecraft:protection ]
|
||||
notAffectedGroups: [ enchanted_book, armors ]
|
||||
enchantments:
|
||||
- protection
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- armors
|
||||
|
||||
restriction_punch:
|
||||
enchantments: [ minecraft:punch ]
|
||||
notAffectedGroups: [ enchanted_book, bow ]
|
||||
enchantments:
|
||||
- punch
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- bow
|
||||
|
||||
restriction_quick_charge:
|
||||
enchantments: [ minecraft:quick_charge ]
|
||||
notAffectedGroups: [ enchanted_book, crossbow ]
|
||||
enchantments:
|
||||
- quick_charge
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- crossbow
|
||||
|
||||
restriction_respiration:
|
||||
enchantments: [ minecraft:respiration ]
|
||||
notAffectedGroups: [ enchanted_book, helmets ]
|
||||
enchantments:
|
||||
- respiration
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- helmets
|
||||
|
||||
restriction_riptide:
|
||||
enchantments: [ minecraft:riptide ]
|
||||
notAffectedGroups: [ enchanted_book, trident ]
|
||||
enchantments:
|
||||
- riptide
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- trident
|
||||
|
||||
restriction_sharpness:
|
||||
enchantments: [ minecraft:sharpness ]
|
||||
notAffectedGroups: [ enchanted_book, melee_weapons ]
|
||||
enchantments:
|
||||
- sharpness
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- melee_weapons
|
||||
|
||||
restriction__silk_touch:
|
||||
enchantments: [ minecraft:silk_touch ]
|
||||
notAffectedGroups: [ enchanted_book, tools ]
|
||||
restriction_silk_touch:
|
||||
enchantments:
|
||||
- silk_touch
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- tools
|
||||
|
||||
restriction_smite:
|
||||
enchantments: [ minecraft:smite ]
|
||||
notAffectedGroups: [ enchanted_book, melee_weapons ]
|
||||
enchantments:
|
||||
- smite
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- melee_weapons
|
||||
- mace
|
||||
|
||||
restriction_soul_speed:
|
||||
enchantments: [ minecraft:soul_speed ]
|
||||
notAffectedGroups: [ enchanted_book, boots ]
|
||||
enchantments:
|
||||
- soul_speed
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- boots
|
||||
|
||||
restriction_sweeping_edge:
|
||||
enchantments: [ minecraft:sweeping, minecraft:sweeping_edge ]
|
||||
notAffectedGroups: [ enchanted_book, swords ]
|
||||
enchantments:
|
||||
- sweeping
|
||||
- sweeping_edge
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- swords
|
||||
|
||||
# Do not exist in 1.18, that mean useInFuture will be set to true
|
||||
# useInFuture set to true also mean it will not warn if there is an issue
|
||||
restriction_swift_sneak:
|
||||
useInFuture: true
|
||||
enchantments: [ minecraft:swift_sneak ]
|
||||
notAffectedGroups: [ enchanted_book, leggings ]
|
||||
enchantments:
|
||||
- swift_sneak
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- leggings
|
||||
|
||||
restriction_thorns:
|
||||
enchantments: [ minecraft:thorns ]
|
||||
notAffectedGroups: [ enchanted_book, armors ]
|
||||
enchantments:
|
||||
- thorns
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- armors
|
||||
|
||||
restriction__unbreaking:
|
||||
enchantments: [ minecraft:unbreaking ]
|
||||
notAffectedGroups: [ enchanted_book, can_unbreak ]
|
||||
restriction_unbreaking:
|
||||
enchantments:
|
||||
- unbreaking
|
||||
notAffectedGroups:
|
||||
- enchanted_book
|
||||
- can_unbreak
|
||||
|
||||
# ----------------------------------------------------
|
||||
# Now we have conflicts about enchantment Incompatibility
|
||||
|
|
@ -184,61 +299,83 @@ restriction__unbreaking:
|
|||
|
||||
sword_enchant_conflict:
|
||||
enchantments:
|
||||
- minecraft:bane_of_arthropods
|
||||
- minecraft:smite
|
||||
- minecraft:sharpness
|
||||
notAffectedGroups: [ ]
|
||||
- bane_of_arthropods
|
||||
- smite
|
||||
- sharpness
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
protection_enchant_conflict:
|
||||
enchantments:
|
||||
- minecraft:blast_protection
|
||||
- minecraft:fire_protection
|
||||
- minecraft:projectile_protection
|
||||
- minecraft:protection
|
||||
notAffectedGroups: [ ]
|
||||
- blast_protection
|
||||
- fire_protection
|
||||
- projectile_protection
|
||||
- protection
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
trident_conflict1:
|
||||
enchantments:
|
||||
- minecraft:channeling
|
||||
- minecraft:riptide
|
||||
notAffectedGroups: [ ]
|
||||
- channeling
|
||||
- riptide
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
trident_conflict2:
|
||||
enchantments:
|
||||
- minecraft:loyalty
|
||||
- minecraft:riptide
|
||||
notAffectedGroups: [ ]
|
||||
- loyalty
|
||||
- riptide
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
boot_conflict:
|
||||
enchantments:
|
||||
- minecraft:depth_strider
|
||||
- minecraft:frost_walker
|
||||
notAffectedGroups: [ ]
|
||||
- depth_strider
|
||||
- frost_walker
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
tool_conflict:
|
||||
enchantments:
|
||||
- minecraft:fortune
|
||||
- minecraft:silk_touch
|
||||
notAffectedGroups: [ ]
|
||||
- fortune
|
||||
- silk_touch
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
bow_conflict:
|
||||
enchantments:
|
||||
- minecraft:mending
|
||||
- minecraft:infinity
|
||||
notAffectedGroups: [ ]
|
||||
- mending
|
||||
- infinity
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
crossbow_conflict:
|
||||
enchantments:
|
||||
- minecraft:multishot
|
||||
- minecraft:piercing
|
||||
notAffectedGroups: [ ]
|
||||
- multishot
|
||||
- piercing
|
||||
notAffectedGroups: []
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
restriction_density:
|
||||
enchantments:
|
||||
- density
|
||||
notAffectedGroups:
|
||||
- mace
|
||||
restriction_breach:
|
||||
enchantments:
|
||||
- breach
|
||||
notAffectedGroups:
|
||||
- mace
|
||||
restriction_wind_burst:
|
||||
enchantments:
|
||||
- wind_burst
|
||||
notAffectedGroups:
|
||||
- mace
|
||||
mace_enchant_conflict:
|
||||
enchantments:
|
||||
- density
|
||||
- breach
|
||||
- smite
|
||||
- bane_of_arthropods
|
||||
maxEnchantmentBeforeConflict: 1
|
||||
|
||||
# ----------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -20,16 +20,16 @@ nothing:
|
|||
example_include:
|
||||
type: include
|
||||
items:
|
||||
- stone
|
||||
- polished_granite
|
||||
- stone
|
||||
- polished_granite
|
||||
|
||||
# This group contain everything except polished granite and elements of example_include
|
||||
example_exclude:
|
||||
type: exclude
|
||||
items:
|
||||
- polished_granite
|
||||
- polished_granite
|
||||
groups:
|
||||
- example_include
|
||||
- example_include
|
||||
|
||||
# Default configuration should be vanilla enchantment conflict group
|
||||
# there may have error, if you find one you can fix it !
|
||||
|
|
@ -38,173 +38,176 @@ example_exclude:
|
|||
swords:
|
||||
type: include
|
||||
items:
|
||||
- wooden_sword
|
||||
- stone_sword
|
||||
- iron_sword
|
||||
- diamond_sword
|
||||
- golden_sword
|
||||
- netherite_sword
|
||||
- wooden_sword
|
||||
- stone_sword
|
||||
- iron_sword
|
||||
- diamond_sword
|
||||
- golden_sword
|
||||
- netherite_sword
|
||||
|
||||
axes:
|
||||
type: include
|
||||
items:
|
||||
- wooden_axe
|
||||
- stone_axe
|
||||
- iron_axe
|
||||
- diamond_axe
|
||||
- golden_axe
|
||||
- netherite_axe
|
||||
- wooden_axe
|
||||
- stone_axe
|
||||
- iron_axe
|
||||
- diamond_axe
|
||||
- golden_axe
|
||||
- netherite_axe
|
||||
|
||||
melee_weapons:
|
||||
type: include
|
||||
groups:
|
||||
- swords
|
||||
- axes
|
||||
- swords
|
||||
- axes
|
||||
|
||||
helmets:
|
||||
type: include
|
||||
items:
|
||||
- leather_helmet
|
||||
- chainmail_helmet
|
||||
- iron_helmet
|
||||
- diamond_helmet
|
||||
- golden_helmet
|
||||
- netherite_helmet
|
||||
- turtle_helmet
|
||||
- leather_helmet
|
||||
- chainmail_helmet
|
||||
- iron_helmet
|
||||
- diamond_helmet
|
||||
- golden_helmet
|
||||
- netherite_helmet
|
||||
- turtle_helmet
|
||||
|
||||
chestplate:
|
||||
type: include
|
||||
items:
|
||||
- leather_chestplate
|
||||
- chainmail_chestplate
|
||||
- iron_chestplate
|
||||
- diamond_chestplate
|
||||
- golden_chestplate
|
||||
- netherite_chestplate
|
||||
- leather_chestplate
|
||||
- chainmail_chestplate
|
||||
- iron_chestplate
|
||||
- diamond_chestplate
|
||||
- golden_chestplate
|
||||
- netherite_chestplate
|
||||
|
||||
leggings:
|
||||
type: include
|
||||
items:
|
||||
- leather_leggings
|
||||
- chainmail_leggings
|
||||
- iron_leggings
|
||||
- diamond_leggings
|
||||
- golden_leggings
|
||||
- netherite_leggings
|
||||
- leather_leggings
|
||||
- chainmail_leggings
|
||||
- iron_leggings
|
||||
- diamond_leggings
|
||||
- golden_leggings
|
||||
- netherite_leggings
|
||||
|
||||
boots:
|
||||
type: include
|
||||
items:
|
||||
- leather_boots
|
||||
- chainmail_boots
|
||||
- iron_boots
|
||||
- diamond_boots
|
||||
- golden_boots
|
||||
- netherite_boots
|
||||
- leather_boots
|
||||
- chainmail_boots
|
||||
- iron_boots
|
||||
- diamond_boots
|
||||
- golden_boots
|
||||
- netherite_boots
|
||||
|
||||
armors:
|
||||
type: include
|
||||
groups:
|
||||
- helmets
|
||||
- chestplate
|
||||
- leggings
|
||||
- boots
|
||||
- helmets
|
||||
- chestplate
|
||||
- leggings
|
||||
- boots
|
||||
|
||||
wearable:
|
||||
type: include
|
||||
items:
|
||||
- elytra
|
||||
- carved_pumpkin
|
||||
- skeleton_skull
|
||||
- wither_skeleton_skull
|
||||
- zombie_head
|
||||
- player_head
|
||||
- creeper_head
|
||||
- dragon_head
|
||||
# do not exist in 1.18 but exist in future update
|
||||
- piglin_head
|
||||
- elytra
|
||||
- carved_pumpkin
|
||||
- skeleton_skull
|
||||
- wither_skeleton_skull
|
||||
- zombie_head
|
||||
- player_head
|
||||
- creeper_head
|
||||
- dragon_head
|
||||
- piglin_head
|
||||
groups:
|
||||
- armors
|
||||
- armors
|
||||
|
||||
tools:
|
||||
type: include
|
||||
items:
|
||||
- wooden_pickaxe
|
||||
- stone_pickaxe
|
||||
- iron_pickaxe
|
||||
- diamond_pickaxe
|
||||
- golden_pickaxe
|
||||
- netherite_pickaxe
|
||||
- wooden_shovel
|
||||
- stone_shovel
|
||||
- iron_shovel
|
||||
- diamond_shovel
|
||||
- golden_shovel
|
||||
- netherite_shovel
|
||||
- wooden_hoe
|
||||
- stone_hoe
|
||||
- iron_hoe
|
||||
- diamond_hoe
|
||||
- golden_hoe
|
||||
- netherite_hoe
|
||||
- wooden_pickaxe
|
||||
- stone_pickaxe
|
||||
- iron_pickaxe
|
||||
- diamond_pickaxe
|
||||
- golden_pickaxe
|
||||
- netherite_pickaxe
|
||||
- wooden_shovel
|
||||
- stone_shovel
|
||||
- iron_shovel
|
||||
- diamond_shovel
|
||||
- golden_shovel
|
||||
- netherite_shovel
|
||||
- wooden_hoe
|
||||
- stone_hoe
|
||||
- iron_hoe
|
||||
- diamond_hoe
|
||||
- golden_hoe
|
||||
- netherite_hoe
|
||||
groups:
|
||||
- axes
|
||||
- axes
|
||||
|
||||
enchanted_book:
|
||||
type: include
|
||||
items:
|
||||
- enchanted_book
|
||||
- enchanted_book
|
||||
|
||||
trident:
|
||||
type: include
|
||||
items:
|
||||
- trident
|
||||
- trident
|
||||
|
||||
bow:
|
||||
type: include
|
||||
items:
|
||||
- bow
|
||||
- bow
|
||||
|
||||
crossbow:
|
||||
type: include
|
||||
items:
|
||||
- crossbow
|
||||
- crossbow
|
||||
|
||||
fishing_rod:
|
||||
type: include
|
||||
items:
|
||||
- fishing_rod
|
||||
- fishing_rod
|
||||
|
||||
shears:
|
||||
type: include
|
||||
items:
|
||||
- shears
|
||||
- shears
|
||||
|
||||
can_unbreak:
|
||||
type: include
|
||||
items:
|
||||
- elytra
|
||||
- flint_and_steel
|
||||
- shield
|
||||
- carrot_on_a_stick
|
||||
- warped_fungus_on_a_stick
|
||||
# do not exist in 1.18 but exist in future update
|
||||
- brush
|
||||
- elytra
|
||||
- flint_and_steel
|
||||
- shield
|
||||
- carrot_on_a_stick
|
||||
- warped_fungus_on_a_stick
|
||||
- brush
|
||||
groups:
|
||||
- melee_weapons
|
||||
- tools
|
||||
- armors
|
||||
- trident
|
||||
- bow
|
||||
- crossbow
|
||||
- fishing_rod
|
||||
- shears
|
||||
- melee_weapons
|
||||
- tools
|
||||
- armors
|
||||
- trident
|
||||
- bow
|
||||
- crossbow
|
||||
- fishing_rod
|
||||
- shears
|
||||
- mace
|
||||
|
||||
can_vanish:
|
||||
type: include
|
||||
items:
|
||||
- compass
|
||||
- compass
|
||||
groups:
|
||||
- wearable
|
||||
- can_unbreak
|
||||
- wearable
|
||||
- can_unbreak
|
||||
mace:
|
||||
type: include
|
||||
items:
|
||||
- mace
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,3 @@
|
|||
### Default Plugin's Configurations
|
||||
From 1.18 to 1.20.6 use [1.18 configurations](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs/1.18) \
|
||||
From 1.21 to 1.21.8 use [1.21 configurations](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs/1.21) \
|
||||
From 1.21.9 to 1.21.10 use [1.21.9 configurations](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs/1.21.9) \
|
||||
From 1.21.11 use [1.21.11 configurations](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs/1.21.11)
|
||||
For 1.18 to 1.20.6 use [1.18 configurations](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs/1.18) \
|
||||
For 1.21 use [1.21 configurations](https://github.com/alexcrea/CustomAnvil/tree/master/defaultconfigs/1.21)
|
||||
|
|
@ -1,13 +1,6 @@
|
|||
kotlin.code.style=official
|
||||
|
||||
# Signing
|
||||
signing.secretKeyRingFile=~/.gnupg/secring.gpg
|
||||
|
||||
kotlin.daemon.jvmargs=-Xmx8G
|
||||
|
||||
# list of nms
|
||||
subprojects.reobfnms=v1_17R1,v1_18R1,v1_18R2,v1_19R1,v1_19R2,v1_19R3,v1_20R1,v1_20R2,v1_20R3,v1_20R4,v1_21R1,v1_21R2,v1_21R3,v1_21R4,v1_21R5,v1_21R6,v1_21R7
|
||||
|
||||
# list of version for hangar release
|
||||
paperVersion=1.18-26.2
|
||||
|
||||
signing.gnupg.executable=gpg
|
||||
signing.gnupg.useLegacyGpg=true
|
||||
signing.gnupg.keyName=B0DBF91F
|
||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
|
|
@ -1,5 +1,5 @@
|
|||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
|
|
|||
0
gradlew
vendored
Executable file → Normal file
0
gradlew
vendored
Executable file → Normal file
|
|
@ -1,17 +0,0 @@
|
|||
group = rootProject.group
|
||||
version = rootProject.version
|
||||
|
||||
plugins {
|
||||
kotlin("jvm") version "2.3.0"
|
||||
}
|
||||
|
||||
repositories {
|
||||
// ExcellentEnchants
|
||||
maven(url = "https://repo.nightexpressdev.com/releases")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// Excellent Enchant
|
||||
compileOnly("su.nightexpress.excellentenchants:Core:5.4.3")
|
||||
compileOnly("su.nightexpress.nightcore:main:2.16.2")
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
package xyz.alexcrea.cuanvil.dependency.plugins;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import su.nightexpress.excellentenchants.api.enchantment.CustomEnchantment;
|
||||
import su.nightexpress.excellentenchants.enchantment.EnchantRegistry;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
public class ExcellentEnchant5_3Registry {
|
||||
|
||||
public static @NotNull Set<CustomEnchantment> getRegistered(){
|
||||
return EnchantRegistry.getRegistered();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
package xyz.alexcrea.cuanvil.dependency.plugins;
|
||||
|
||||
import su.nightexpress.excellentenchants.EnchantsAPI;
|
||||
|
||||
public class ExcellentEnchant5_4EnchantSettings {
|
||||
|
||||
|
||||
public static int anvilLimit() {
|
||||
return EnchantsAPI.getEnchantManager().getSettings().getAnvilEnchantsLimit();
|
||||
}
|
||||
|
||||
}
|
||||
1
impl/LegacyEcoEnchant/.gitignore
vendored
1
impl/LegacyEcoEnchant/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
group = rootProject.group
|
||||
version = rootProject.version
|
||||
|
||||
plugins {
|
||||
kotlin("jvm") version "2.3.0"
|
||||
}
|
||||
|
||||
// Imitate needed class and method to support legacy version of EcoEnchant
|
||||
dependencies {
|
||||
// Spigot api
|
||||
compileOnly("org.spigotmc:spigot-api:1.18-R0.1-SNAPSHOT")
|
||||
|
||||
}
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
package com.willfp.ecoenchants.enchantments;
|
||||
|
||||
import com.willfp.ecoenchants.enchantments.meta.EnchantmentTarget;
|
||||
import com.willfp.ecoenchants.enchantments.meta.EnchantmentType;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Mock class for legacy package of eco enchants
|
||||
*/
|
||||
public class EcoEnchant {
|
||||
|
||||
public boolean conflictsWith(@NotNull Enchantment enchant) {
|
||||
return false;
|
||||
}
|
||||
|
||||
public Set<EnchantmentTarget> getTargets() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public EnchantmentType getType() {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
package com.willfp.ecoenchants.enchantments;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Mock class for legacy package of eco enchants
|
||||
*/
|
||||
public class EcoEnchants {
|
||||
|
||||
public static List<EcoEnchant> values(){
|
||||
return null; // We don't care here.
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
package com.willfp.ecoenchants.enchantments.meta;
|
||||
|
||||
import org.bukkit.Material;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Mock class for legacy package of eco enchants
|
||||
*/
|
||||
public class EnchantmentTarget {
|
||||
|
||||
public Set<Material> getMaterials() {
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
package com.willfp.ecoenchants.enchantments.meta;
|
||||
|
||||
public class EnchantmentType {
|
||||
|
||||
public boolean isSingular() {
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1
nms/nms-common/.gitignore
vendored
1
nms/nms-common/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -1,35 +1,16 @@
|
|||
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||
|
||||
group = rootProject.group
|
||||
version = rootProject.version
|
||||
|
||||
plugins {
|
||||
id("io.papermc.paperweight.userdev")
|
||||
repositories {
|
||||
// ProtocoLib
|
||||
maven (url = "https://repo.dmulloy2.net/repository/public/" )
|
||||
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// Used for nms
|
||||
paperweight.paperDevBundle("1.21.10-R0.1-SNAPSHOT")
|
||||
// Spigot api
|
||||
compileOnly("org.spigotmc:spigot-api:1.18-R0.1-SNAPSHOT")
|
||||
|
||||
// Protocolib
|
||||
compileOnly("net.dmulloy2:ProtocolLib:5.4.0")
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven("https://repo.papermc.io/repository/maven-public/")
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility = "16"
|
||||
targetCompatibility = "16"
|
||||
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2)
|
||||
jvmTarget.set(JvmTarget.JVM_16)
|
||||
}
|
||||
}
|
||||
compileOnly("com.comphenix.protocol:ProtocolLib:5.1.0")
|
||||
}
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
package xyz.alexcrea.cuanvil.dependency.scheduler
|
||||
|
||||
import org.bukkit.entity.Entity
|
||||
import org.bukkit.plugin.Plugin
|
||||
|
||||
interface TaskScheduler {
|
||||
|
||||
fun scheduleGlobally(plugin: Plugin, task: Runnable, time: Long): Any?
|
||||
fun scheduleGlobally(plugin: Plugin, task: Runnable): Any?{
|
||||
return scheduleGlobally(plugin, task, 0L)
|
||||
}
|
||||
|
||||
fun scheduleOnEntity(plugin: Plugin, entity: Entity, task: Runnable, time: Long): Any?
|
||||
fun scheduleOnEntity(plugin: Plugin, entity: Entity, task: Runnable): Any?{
|
||||
return scheduleOnEntity(plugin, entity, task, 0L)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,102 +0,0 @@
|
|||
package xyz.alexcrea.cuanvil.dependency.util
|
||||
|
||||
import net.kyori.adventure.text.Component
|
||||
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer
|
||||
import org.bukkit.inventory.ItemStack
|
||||
import org.bukkit.inventory.meta.ItemMeta
|
||||
|
||||
// Mostly made for paper, spigot and folia support
|
||||
@Suppress("DEPRECATION")
|
||||
object PlatformUtil {
|
||||
|
||||
private fun hasClass(className: String): Boolean {
|
||||
try {
|
||||
Class.forName(className)
|
||||
return true
|
||||
} catch (_: ClassNotFoundException) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
private fun hasMethod(clazz: Class<*>, name: String, vararg parameterTypes: Class<*>): Boolean {
|
||||
try {
|
||||
clazz.getDeclaredMethod(name, *parameterTypes)
|
||||
return true
|
||||
} catch (_: NoSuchMethodException) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
val isPaper = hasClass("com.destroystokyo.paper.PaperConfig") ||
|
||||
hasClass("io.papermc.paper.configuration.Configuration")
|
||||
|
||||
val isFolia = hasClass("io.papermc.paper.threadedregions.RegionizedServer")
|
||||
|
||||
private val legacy_mm = LegacyComponentSerializer.legacySection()
|
||||
|
||||
// Lore
|
||||
fun ItemMeta.componentLore(): MutableList<Component> {
|
||||
val lore: List<Component>?
|
||||
if(isPaper){
|
||||
lore = this.lore()
|
||||
} else {
|
||||
val legacyLores = this.lore ?: return ArrayList()
|
||||
|
||||
lore = ArrayList(legacyLores.size)
|
||||
for (legacyLore in legacyLores) {
|
||||
lore.add(legacy_mm.deserialize(legacyLore))
|
||||
}
|
||||
}
|
||||
|
||||
return lore ?: ArrayList()
|
||||
}
|
||||
|
||||
fun ItemMeta.setComponentLore(lore: List<Component?>) {
|
||||
if(isPaper){
|
||||
this.lore(lore)
|
||||
} else {
|
||||
val legacyLore = ArrayList<String?>(lore.size)
|
||||
for (component in lore) {
|
||||
legacyLore.add(if(component == null) null
|
||||
else legacy_mm.serialize(component))
|
||||
}
|
||||
|
||||
this.lore = legacyLore
|
||||
}
|
||||
}
|
||||
|
||||
// Display name
|
||||
private val useCustomName = hasMethod(ItemStack::class.java, "customName")
|
||||
|
||||
fun ItemMeta.componentDisplayName(): Component? {
|
||||
if(useCustomName){
|
||||
if(!this.hasCustomName()) return null
|
||||
return this.customName()
|
||||
}else if(isPaper){
|
||||
if(!this.hasDisplayName()) return null
|
||||
return this.displayName()
|
||||
} else {
|
||||
if(!this.hasDisplayName()) return null
|
||||
|
||||
val legacy = this.displayName
|
||||
return legacy_mm.deserialize(legacy)
|
||||
}
|
||||
}
|
||||
|
||||
fun ItemMeta.setComponentDisplayName(component: Component?) {
|
||||
if(useCustomName){
|
||||
this.customName(component)
|
||||
}else if(isPaper){
|
||||
this.displayName(component)
|
||||
} else {
|
||||
if(component == null){
|
||||
this.setDisplayName(null)
|
||||
return
|
||||
}
|
||||
|
||||
val legacy = legacy_mm.serialize(component)
|
||||
this.setDisplayName(legacy)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,23 +0,0 @@
|
|||
package xyz.alexcrea.cuanvil.dialog
|
||||
|
||||
import org.bukkit.NamespacedKey
|
||||
import org.bukkit.entity.HumanEntity
|
||||
import org.bukkit.event.inventory.PrepareAnvilEvent
|
||||
|
||||
interface AnvilRenameDialog {
|
||||
|
||||
companion object {
|
||||
val PCD_KEEP_RENAME_TEXT_KEY = NamespacedKey.fromString("customanvil:last_rename_text")!!
|
||||
}
|
||||
|
||||
fun canSendDialog(): Boolean
|
||||
|
||||
fun tryShowDialog(player: HumanEntity, event: PrepareAnvilEvent)
|
||||
|
||||
fun closeInventory(player: HumanEntity)
|
||||
|
||||
fun currentText(player: HumanEntity): String?
|
||||
|
||||
fun isOpenFor(player: HumanEntity): Boolean
|
||||
|
||||
}
|
||||
1
nms/nms-paper/.gitignore
vendored
1
nms/nms-paper/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||
|
||||
group = rootProject.group
|
||||
version = rootProject.version
|
||||
|
||||
plugins {
|
||||
id("io.papermc.paperweight.userdev")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(project(":nms:nms-common"))
|
||||
|
||||
// Used for nms
|
||||
paperweight.paperDevBundle("1.21.7-R0.1-SNAPSHOT")
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven("https://repo.papermc.io/repository/maven-public/")
|
||||
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility = "18"
|
||||
targetCompatibility = "18"
|
||||
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2)
|
||||
jvmTarget.set(JvmTarget.JVM_18)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
package xyz.alexcrea.cuanvil.dependency.datapack
|
||||
|
||||
import io.papermc.paper.datapack.Datapack
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.packs.DataPack
|
||||
import java.util.*
|
||||
|
||||
object DataPackTester {
|
||||
val legacyNames: List<String>
|
||||
get() = Bukkit.getDataPackManager().dataPacks
|
||||
.stream().filter { obj -> obj.isEnabled }
|
||||
.map { pack -> pack.key.key }
|
||||
.toList()
|
||||
|
||||
val enabledPacks: List<String>
|
||||
get() {
|
||||
try {
|
||||
// will throw error if do not exist
|
||||
Bukkit::class.java.getDeclaredMethod("getDatapackManager")
|
||||
|
||||
return Bukkit.getDatapackManager().enabledPacks
|
||||
.stream().map { obj: Datapack -> obj.name }
|
||||
.toList()
|
||||
} catch (e: NoSuchMethodException) {
|
||||
try {
|
||||
DataPack::class.java.getDeclaredMethod("getKey")
|
||||
} catch (e: NoSuchMethodException) {
|
||||
System.err.println("Could not find compatible datapack manager")
|
||||
System.err.println("If you are using a datapack that should be compatible with CustomAnvil. It will not get detected...")
|
||||
return emptyList()
|
||||
}
|
||||
return legacyNames
|
||||
} catch (e: Exception){
|
||||
// Assume cause UnimplementedOperationException on mock server
|
||||
return Collections.emptyList()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
package xyz.alexcrea.cuanvil.dependency.packet.versions
|
||||
|
||||
import net.minecraft.network.protocol.game.ClientboundPlayerAbilitiesPacket
|
||||
import net.minecraft.world.entity.player.Abilities
|
||||
import org.bukkit.craftbukkit.entity.CraftPlayer
|
||||
import org.bukkit.entity.Player
|
||||
import xyz.alexcrea.cuanvil.dependency.packet.PacketManager
|
||||
import xyz.alexcrea.cuanvil.dependency.packet.PacketManagerBase
|
||||
|
||||
class PaperPacketManager : PacketManagerBase(), PacketManager {
|
||||
override val canSetInstantBuild: Boolean
|
||||
get() = true
|
||||
|
||||
override fun setInstantBuild(player: Player, instantBuild: Boolean) {
|
||||
val nmsPlayer = (player as CraftPlayer).handle
|
||||
val playerAbilities = nmsPlayer.abilities
|
||||
val sendedAbilities: Abilities
|
||||
if (playerAbilities.instabuild == instantBuild) {
|
||||
sendedAbilities = playerAbilities
|
||||
} else {
|
||||
sendedAbilities = Abilities()
|
||||
sendedAbilities.invulnerable = playerAbilities.invulnerable
|
||||
sendedAbilities.flying = playerAbilities.flying
|
||||
sendedAbilities.mayfly = playerAbilities.mayfly
|
||||
sendedAbilities.instabuild = instantBuild
|
||||
sendedAbilities.mayBuild = playerAbilities.mayBuild
|
||||
sendedAbilities.setFlyingSpeed(playerAbilities.getFlyingSpeed())
|
||||
sendedAbilities.setWalkingSpeed(playerAbilities.getWalkingSpeed())
|
||||
}
|
||||
val packet = ClientboundPlayerAbilitiesPacket(sendedAbilities)
|
||||
nmsPlayer.connection.send(packet)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,40 +0,0 @@
|
|||
package xyz.alexcrea.cuanvil.dependency.scheduler
|
||||
|
||||
import io.papermc.paper.threadedregions.scheduler.ScheduledTask
|
||||
import org.bukkit.Bukkit
|
||||
import org.bukkit.entity.Entity
|
||||
import org.bukkit.plugin.Plugin
|
||||
import java.util.function.Consumer
|
||||
|
||||
class FoliaScheduler : TaskScheduler {
|
||||
override fun scheduleGlobally(plugin: Plugin, task: Runnable, time: Long): Any? {
|
||||
if(time < 1){
|
||||
return Bukkit.getGlobalRegionScheduler().run(
|
||||
plugin
|
||||
) { scheduledTask: ScheduledTask? -> task.run() }
|
||||
}
|
||||
return Bukkit.getGlobalRegionScheduler().runDelayed(
|
||||
plugin,
|
||||
{ scheduledTask: ScheduledTask? -> task.run() },
|
||||
time
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
override fun scheduleOnEntity(plugin: Plugin, entity: Entity, task: Runnable, time: Long): Any? {
|
||||
if(time < 1){
|
||||
return entity.scheduler.run(
|
||||
plugin,
|
||||
{ scheduledTask: ScheduledTask? -> task.run() },
|
||||
{}
|
||||
)
|
||||
}
|
||||
return entity.scheduler.runDelayed(
|
||||
plugin,
|
||||
{ scheduledTask: ScheduledTask? -> task.run() },
|
||||
{},
|
||||
time
|
||||
)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,236 +0,0 @@
|
|||
package xyz.alexcrea.cuanvil.dialog
|
||||
|
||||
import io.papermc.paper.dialog.Dialog
|
||||
import io.papermc.paper.registry.data.dialog.ActionButton
|
||||
import io.papermc.paper.registry.data.dialog.DialogBase
|
||||
import io.papermc.paper.registry.data.dialog.action.DialogAction
|
||||
import io.papermc.paper.registry.data.dialog.body.DialogBody
|
||||
import io.papermc.paper.registry.data.dialog.input.DialogInput
|
||||
import io.papermc.paper.registry.data.dialog.type.DialogType
|
||||
import io.papermc.paper.threadedregions.scheduler.ScheduledTask
|
||||
import net.kyori.adventure.text.Component
|
||||
import net.kyori.adventure.text.event.ClickCallback
|
||||
import net.kyori.adventure.text.format.TextColor
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer
|
||||
import net.minecraft.world.inventory.AnvilMenu
|
||||
import org.bukkit.craftbukkit.event.CraftEventFactory
|
||||
import org.bukkit.craftbukkit.inventory.CraftInventoryView
|
||||
import org.bukkit.craftbukkit.inventory.view.CraftAnvilView
|
||||
import org.bukkit.entity.HumanEntity
|
||||
import org.bukkit.event.inventory.PrepareAnvilEvent
|
||||
import org.bukkit.inventory.InventoryView
|
||||
import org.bukkit.inventory.ItemStack
|
||||
import org.bukkit.persistence.PersistentDataType
|
||||
import org.bukkit.plugin.Plugin
|
||||
import java.util.*
|
||||
import java.util.function.BiFunction
|
||||
import java.util.function.Consumer
|
||||
import java.util.function.Supplier
|
||||
|
||||
@Suppress("UnstableApiUsage")
|
||||
class AnvilRenameDialogImpl(
|
||||
val fromFormated: BiFunction<HumanEntity, Component?, String?>,
|
||||
val keepUserPreviousDialog: Supplier<Boolean>,
|
||||
val maxLength: Supplier<Int>,
|
||||
val plugin: Plugin,
|
||||
) : AnvilRenameDialog {
|
||||
|
||||
companion object {
|
||||
private const val RENAME_TEXT_KEY = "rename"
|
||||
|
||||
private const val MAX_WIDTH = 512
|
||||
|
||||
private val PLAIN_TEXT_SERIALIZER = PlainTextComponentSerializer.plainText()
|
||||
|
||||
// Need to be able to translate it later !
|
||||
private val USER_FACING_RENAME_TITLE = Component.text("Rename Your Item")
|
||||
private val USER_FACING_WARNING = Component.text(
|
||||
"Note that the repair text will appear blank after Confirm\n" +
|
||||
"But the name will be correctly applied"
|
||||
)
|
||||
private val USER_FACING_CONFIRM = Component.text("Confirm").color(TextColor.fromHexString("#40FF40"))
|
||||
private val USER_FACING_CANCEL = Component.text("Cancel").color(TextColor.fromHexString("#FF4040"))
|
||||
|
||||
fun itemDefaultName(item: ItemStack?): String? {
|
||||
return PLAIN_TEXT_SERIALIZER.serializeOrNull(item?.effectiveName())
|
||||
}
|
||||
}
|
||||
|
||||
private val lastNames = HashMap<UUID, String>()
|
||||
private val lastRenames = HashMap<UUID, String>()
|
||||
|
||||
|
||||
private val lastLeftItem = HashMap<UUID, String>()
|
||||
private val runTaskMap = HashMap<UUID, ScheduledTask>()
|
||||
|
||||
// For monetary cost
|
||||
val hasUiOpen = HashSet<UUID>()
|
||||
|
||||
private val containerField = CraftInventoryView::class.java.getDeclaredField("container")
|
||||
|
||||
init {
|
||||
containerField.setAccessible(true)
|
||||
}
|
||||
|
||||
override fun canSendDialog(): Boolean {
|
||||
return true
|
||||
}
|
||||
|
||||
fun makeDialog(playerID: UUID, initial: String?, callback: Consumer<String?>): Dialog {
|
||||
val maxLength = this.maxLength.get()
|
||||
val initialFinal = initial?.take(maxLength)
|
||||
|
||||
val baseBuilder = DialogBase.builder(USER_FACING_RENAME_TITLE)
|
||||
.canCloseWithEscape(true)
|
||||
.afterAction(DialogBase.DialogAfterAction.CLOSE)
|
||||
.inputs(
|
||||
listOf(
|
||||
DialogInput.text(RENAME_TEXT_KEY, Component.text("Rename text"))
|
||||
.maxLength(maxLength)
|
||||
.initial(initialFinal ?: "")
|
||||
.labelVisible(false)
|
||||
.width(MAX_WIDTH)
|
||||
.build(),
|
||||
),
|
||||
)
|
||||
baseBuilder.body(
|
||||
listOf(
|
||||
DialogBody.plainMessage(USER_FACING_WARNING, MAX_WIDTH)
|
||||
)
|
||||
)
|
||||
|
||||
return Dialog.create { builder ->
|
||||
builder.empty()
|
||||
.base(baseBuilder.build())
|
||||
.type(
|
||||
DialogType.confirmation(
|
||||
ActionButton.builder(USER_FACING_CONFIRM)
|
||||
.action(DialogAction.customClick({ response, _ ->
|
||||
hasUiOpen.remove(playerID)
|
||||
val text = response.getText(RENAME_TEXT_KEY)!!
|
||||
callback.accept(text)
|
||||
}, ClickCallback.Options.builder().build()))
|
||||
.build(),
|
||||
ActionButton.builder(USER_FACING_CANCEL)
|
||||
.action(DialogAction.customClick({ response, _ ->
|
||||
hasUiOpen.remove(playerID)
|
||||
}, ClickCallback.Options.builder().build()))
|
||||
.build(),
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun setResult(player: HumanEntity, view: InventoryView, result: String?) {
|
||||
val defaultName = itemDefaultName(view.getItem(0))
|
||||
if (defaultName == result) {
|
||||
setName(player, view, "", null)
|
||||
if (defaultName != null) lastNames[player.uniqueId] = defaultName
|
||||
} else setName(player, view, result, result)
|
||||
}
|
||||
|
||||
private fun setName(player: HumanEntity, view: InventoryView, name: String?, rename: String?) {
|
||||
val menu = (containerField.get(view) as AnvilMenu)
|
||||
val isSameName = menu.itemName == name
|
||||
menu.itemName = rename
|
||||
|
||||
if (name == null)
|
||||
lastNames.remove(player.uniqueId)
|
||||
else
|
||||
lastNames[player.uniqueId] = name
|
||||
|
||||
if (rename == null)
|
||||
lastRenames.remove(player.uniqueId)
|
||||
else
|
||||
lastRenames[player.uniqueId] = rename
|
||||
|
||||
if (!isSameName)
|
||||
CraftEventFactory.callPrepareResultEvent(menu, 2);
|
||||
}
|
||||
|
||||
private fun nameFromItem(player: HumanEntity, item: ItemStack?): String? {
|
||||
// Already has text
|
||||
if (item?.hasItemMeta() != true || !item.itemMeta.hasCustomName())
|
||||
return PLAIN_TEXT_SERIALIZER.serializeOrNull(item?.effectiveName())
|
||||
|
||||
if (keepUserPreviousDialog.get() && item.hasItemMeta()) {
|
||||
val lastName = item.itemMeta.persistentDataContainer.get(
|
||||
AnvilRenameDialog.PCD_KEEP_RENAME_TEXT_KEY,
|
||||
PersistentDataType.STRING
|
||||
)
|
||||
|
||||
if (lastName != null) return lastName
|
||||
}
|
||||
|
||||
return fromFormated.apply(player, item.effectiveName())
|
||||
}
|
||||
|
||||
private fun tryShowDialogScheduled(player: HumanEntity, event: PrepareAnvilEvent) {
|
||||
val view = event.view
|
||||
if (view !is CraftAnvilView) return
|
||||
|
||||
val renameText = view.renameText
|
||||
val leftItem = view.getItem(0)
|
||||
val leftItemStr = leftItem?.toString()
|
||||
|
||||
val lastName = lastNames.getOrDefault(player.uniqueId, null)
|
||||
val lastRename = lastRenames.getOrDefault(player.uniqueId, null)
|
||||
|
||||
if (lastLeftItem.getOrDefault(player.uniqueId, null) != leftItemStr) {
|
||||
if (leftItemStr == null)
|
||||
lastLeftItem.remove(player.uniqueId)
|
||||
else lastLeftItem[player.uniqueId] = leftItemStr
|
||||
|
||||
setName(player, view, renameText, nameFromItem(player, leftItem))
|
||||
return
|
||||
}
|
||||
|
||||
if (lastName == renameText || lastRename == renameText)
|
||||
return
|
||||
|
||||
if (renameText?.isBlank() == true || renameText == itemDefaultName(leftItem)) {
|
||||
setName(player, view, lastName, lastRename)
|
||||
return
|
||||
}
|
||||
|
||||
val dialog = makeDialog(player.uniqueId, lastRename)
|
||||
{ result -> setResult(player, view, result) }
|
||||
player.showDialog(dialog)
|
||||
|
||||
hasUiOpen.add(player.uniqueId)
|
||||
}
|
||||
|
||||
// We need to wait for a short time as changing item will change the name BEFORE the item change
|
||||
// no guaranty both of them came in the same tick too so let's wait 2 tick....
|
||||
override fun tryShowDialog(player: HumanEntity, event: PrepareAnvilEvent) {
|
||||
runTaskMap.remove(player.uniqueId)?.cancel()
|
||||
|
||||
val task = player.scheduler.runDelayed(
|
||||
plugin,
|
||||
{ _ ->
|
||||
run { tryShowDialogScheduled(player, event) }
|
||||
},
|
||||
{},
|
||||
2
|
||||
)
|
||||
if (task == null) return
|
||||
|
||||
runTaskMap[player.uniqueId] = task
|
||||
}
|
||||
|
||||
override fun closeInventory(player: HumanEntity) {
|
||||
lastNames.remove(player.uniqueId)
|
||||
lastRenames.remove(player.uniqueId)
|
||||
lastLeftItem.remove(player.uniqueId)
|
||||
runTaskMap.remove(player.uniqueId)?.cancel()
|
||||
}
|
||||
|
||||
override fun currentText(player: HumanEntity): String? {
|
||||
return lastNames[player.uniqueId]
|
||||
}
|
||||
|
||||
override fun isOpenFor(player: HumanEntity): Boolean {
|
||||
return hasUiOpen.contains(player.uniqueId)
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,45 +0,0 @@
|
|||
package xyz.alexcrea.cuanvil.util
|
||||
|
||||
import io.papermc.paper.threadedregions.scheduler.ScheduledTask
|
||||
import org.bukkit.entity.HumanEntity
|
||||
import org.bukkit.inventory.InventoryView
|
||||
import org.bukkit.plugin.Plugin
|
||||
import xyz.alexcrea.cuanvil.dialog.AnvilRenameDialog
|
||||
import java.util.HashMap
|
||||
import java.util.UUID
|
||||
|
||||
object AnvilTitleUtil {
|
||||
|
||||
private val runTaskMap = HashMap<UUID, ScheduledTask>()
|
||||
|
||||
private fun actualRename(view: InventoryView, name: String, player: HumanEntity, anvilDialog: AnvilRenameDialog) {
|
||||
runTaskMap.remove(player.uniqueId)
|
||||
if (view.title == name) return
|
||||
|
||||
// We assume rename impl is used
|
||||
if (anvilDialog.isOpenFor(player)) return
|
||||
|
||||
view.title = name
|
||||
}
|
||||
|
||||
// We don't want to rename instantly it is causing issue with rename text
|
||||
// especially as it can "override" current ui when it is rename ui time but rename ui also need some delay
|
||||
fun rename(view: InventoryView, name: String, player: HumanEntity, anvilDialog: AnvilRenameDialog, plugin: Plugin) {
|
||||
runTaskMap.remove(player.uniqueId)?.cancel()
|
||||
|
||||
val task = player.scheduler.runDelayed(
|
||||
plugin,
|
||||
{ _ ->
|
||||
run { actualRename(view, name, player, anvilDialog) }
|
||||
},
|
||||
{
|
||||
runTaskMap.remove(player.uniqueId)
|
||||
},
|
||||
2
|
||||
)
|
||||
|
||||
if (task == null) return
|
||||
runTaskMap[player.uniqueId] = task
|
||||
}
|
||||
|
||||
}
|
||||
1
nms/v1_17R1/.gitignore
vendored
1
nms/v1_17R1/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -19,6 +19,14 @@ repositories {
|
|||
|
||||
}
|
||||
|
||||
// As minecraft 1.17 recommended java version is 1.16. we set language version to 1.16
|
||||
|
||||
// Configure used version of kotlin and java
|
||||
java {
|
||||
disableAutoTargetJvm()
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(16))
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility = "16"
|
||||
|
|
@ -29,7 +37,7 @@ tasks.withType<JavaCompile>().configureEach {
|
|||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2)
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0)
|
||||
jvmTarget.set(JvmTarget.JVM_16)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
1
nms/v1_18R1/.gitignore
vendored
1
nms/v1_18R1/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -19,6 +19,14 @@ repositories {
|
|||
|
||||
}
|
||||
|
||||
// As minecraft 1.18 work with java 1.17 or above. we set language version to 1.17
|
||||
|
||||
// Configure used version of kotlin and java
|
||||
java {
|
||||
disableAutoTargetJvm()
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility = "17"
|
||||
|
|
@ -29,7 +37,7 @@ tasks.withType<JavaCompile>().configureEach {
|
|||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2)
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0)
|
||||
jvmTarget.set(JvmTarget.JVM_17)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
1
nms/v1_18R2/.gitignore
vendored
1
nms/v1_18R2/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -19,6 +19,14 @@ repositories {
|
|||
|
||||
}
|
||||
|
||||
// As minecraft 1.18 work with java 1.17 or above. we set language version to 1.17
|
||||
|
||||
// Configure used version of kotlin and java
|
||||
java {
|
||||
disableAutoTargetJvm()
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility = "17"
|
||||
|
|
@ -29,7 +37,7 @@ tasks.withType<JavaCompile>().configureEach {
|
|||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2)
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0)
|
||||
jvmTarget.set(JvmTarget.JVM_17)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
1
nms/v1_19R1/.gitignore
vendored
1
nms/v1_19R1/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -19,6 +19,14 @@ repositories {
|
|||
|
||||
}
|
||||
|
||||
// I do not know minecraft 1.19 recommended java version. assumed 17 is good enough
|
||||
|
||||
// Configure used version of kotlin and java
|
||||
java {
|
||||
disableAutoTargetJvm()
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility = "17"
|
||||
|
|
@ -29,7 +37,7 @@ tasks.withType<JavaCompile>().configureEach {
|
|||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2)
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0)
|
||||
jvmTarget.set(JvmTarget.JVM_17)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
1
nms/v1_19R2/.gitignore
vendored
1
nms/v1_19R2/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -19,6 +19,14 @@ repositories {
|
|||
|
||||
}
|
||||
|
||||
// I do not know minecraft 1.19 recommended java version. assumed 17 is good enough
|
||||
|
||||
// Configure used version of kotlin and java
|
||||
java {
|
||||
disableAutoTargetJvm()
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility = "17"
|
||||
|
|
@ -29,7 +37,7 @@ tasks.withType<JavaCompile>().configureEach {
|
|||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2)
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0)
|
||||
jvmTarget.set(JvmTarget.JVM_17)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
1
nms/v1_19R3/.gitignore
vendored
1
nms/v1_19R3/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -19,6 +19,14 @@ repositories {
|
|||
|
||||
}
|
||||
|
||||
// I do not know minecraft 1.19 recommended java version. assumed 17 is good enough
|
||||
|
||||
// Configure used version of kotlin and java
|
||||
java {
|
||||
disableAutoTargetJvm()
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility = "17"
|
||||
|
|
@ -29,7 +37,7 @@ tasks.withType<JavaCompile>().configureEach {
|
|||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2)
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0)
|
||||
jvmTarget.set(JvmTarget.JVM_17)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
1
nms/v1_20R1/.gitignore
vendored
1
nms/v1_20R1/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -19,17 +19,25 @@ repositories {
|
|||
|
||||
}
|
||||
|
||||
// minecraft 1.20 recommended java version is 18. but we assume 17 is good enough as lts
|
||||
|
||||
// Configure used version of kotlin and java
|
||||
java {
|
||||
disableAutoTargetJvm()
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility = "18"
|
||||
targetCompatibility = "18"
|
||||
sourceCompatibility = "17"
|
||||
targetCompatibility = "17"
|
||||
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2)
|
||||
jvmTarget.set(JvmTarget.JVM_18)
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0)
|
||||
jvmTarget.set(JvmTarget.JVM_17)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
1
nms/v1_20R2/.gitignore
vendored
1
nms/v1_20R2/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -19,17 +19,25 @@ repositories {
|
|||
|
||||
}
|
||||
|
||||
// minecraft 1.20 recommended java version is 18. but we assume 17 is good enough as lts
|
||||
|
||||
// Configure used version of kotlin and java
|
||||
java {
|
||||
disableAutoTargetJvm()
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility = "18"
|
||||
targetCompatibility = "18"
|
||||
sourceCompatibility = "17"
|
||||
targetCompatibility = "17"
|
||||
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2)
|
||||
jvmTarget.set(JvmTarget.JVM_18)
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0)
|
||||
jvmTarget.set(JvmTarget.JVM_17)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
1
nms/v1_20R3/.gitignore
vendored
1
nms/v1_20R3/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -19,17 +19,25 @@ repositories {
|
|||
|
||||
}
|
||||
|
||||
// minecraft 1.20 recommended java version is 18. but we assume 17 is good enough as lts
|
||||
|
||||
// Configure used version of kotlin and java
|
||||
java {
|
||||
disableAutoTargetJvm()
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility = "18"
|
||||
targetCompatibility = "18"
|
||||
sourceCompatibility = "17"
|
||||
targetCompatibility = "17"
|
||||
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2)
|
||||
jvmTarget.set(JvmTarget.JVM_18)
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0)
|
||||
jvmTarget.set(JvmTarget.JVM_17)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
1
nms/v1_20R4/.gitignore
vendored
1
nms/v1_20R4/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -19,10 +19,18 @@ repositories {
|
|||
|
||||
}
|
||||
|
||||
// minecraft 1.20 recommended java version is 18. but we assume 17 is good enough as lts
|
||||
|
||||
// Configure used version of kotlin and java
|
||||
java {
|
||||
disableAutoTargetJvm()
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility = "18"
|
||||
targetCompatibility = "18"
|
||||
sourceCompatibility = "17"
|
||||
targetCompatibility = "17"
|
||||
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
|
@ -30,6 +38,6 @@ tasks.withType<JavaCompile>().configureEach {
|
|||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0)
|
||||
jvmTarget.set(JvmTarget.JVM_18)
|
||||
jvmTarget.set(JvmTarget.JVM_17)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,18 +0,0 @@
|
|||
package xyz.alexcrea.cuanvil.util
|
||||
|
||||
import org.bukkit.inventory.meta.Damageable
|
||||
|
||||
// I LOVE support of old versions and needing to do modules like that
|
||||
// That truly is my favorite activity
|
||||
// TODO clean this one of legacy removal branch
|
||||
object MaxDamageCheckerUtil {
|
||||
|
||||
/**
|
||||
* @return max damage or int max if not set
|
||||
*/
|
||||
fun getMaxDamage(meta: Damageable): Int {
|
||||
if(!meta.hasMaxDamage()) return Integer.MAX_VALUE
|
||||
return meta.maxDamage
|
||||
}
|
||||
|
||||
}
|
||||
1
nms/v1_21R1/.gitignore
vendored
1
nms/v1_21R1/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -11,7 +11,7 @@ dependencies {
|
|||
implementation(project(":nms:nms-common"))
|
||||
|
||||
// Used for nms
|
||||
paperweight.paperDevBundle("1.21.1-R0.1-SNAPSHOT")
|
||||
paperweight.paperDevBundle("1.21-R0.1-SNAPSHOT") // 1.21.1 userdev did not release yet but still use R1
|
||||
}
|
||||
|
||||
repositories {
|
||||
|
|
@ -19,6 +19,14 @@ repositories {
|
|||
|
||||
}
|
||||
|
||||
// minecraft 1.21 java version is 21.
|
||||
|
||||
// Configure used version of kotlin and java
|
||||
java {
|
||||
disableAutoTargetJvm()
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility = "21"
|
||||
|
|
@ -29,7 +37,7 @@ tasks.withType<JavaCompile>().configureEach {
|
|||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2)
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_0)
|
||||
jvmTarget.set(JvmTarget.JVM_21)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
1
nms/v1_21R2/.gitignore
vendored
1
nms/v1_21R2/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||
|
||||
group = rootProject.group
|
||||
version = rootProject.version
|
||||
|
||||
plugins {
|
||||
id("io.papermc.paperweight.userdev")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(project(":nms:nms-common"))
|
||||
|
||||
// Used for nms
|
||||
paperweight.paperDevBundle("1.21.3-R0.1-SNAPSHOT")
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven("https://repo.papermc.io/repository/maven-public/")
|
||||
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility = "21"
|
||||
targetCompatibility = "21"
|
||||
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2)
|
||||
jvmTarget.set(JvmTarget.JVM_21)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
package xyz.alexcrea.cuanvil.dependency.packet.versions
|
||||
|
||||
import net.minecraft.network.protocol.game.ClientboundPlayerAbilitiesPacket
|
||||
import net.minecraft.world.entity.player.Abilities
|
||||
import org.bukkit.craftbukkit.entity.CraftPlayer
|
||||
import org.bukkit.entity.Player
|
||||
import xyz.alexcrea.cuanvil.dependency.packet.PacketManager
|
||||
import xyz.alexcrea.cuanvil.dependency.packet.PacketManagerBase
|
||||
|
||||
class V1_21R2_PacketManager : PacketManagerBase(), PacketManager {
|
||||
override val canSetInstantBuild: Boolean
|
||||
get() = true
|
||||
|
||||
override fun setInstantBuild(player: Player, instantBuild: Boolean) {
|
||||
val nmsPlayer = (player as CraftPlayer).handle
|
||||
val playerAbilities = nmsPlayer.abilities
|
||||
val sendedAbilities: Abilities
|
||||
if (playerAbilities.instabuild == instantBuild) {
|
||||
sendedAbilities = playerAbilities
|
||||
} else {
|
||||
sendedAbilities = Abilities()
|
||||
sendedAbilities.invulnerable = playerAbilities.invulnerable
|
||||
sendedAbilities.flying = playerAbilities.flying
|
||||
sendedAbilities.mayfly = playerAbilities.mayfly
|
||||
sendedAbilities.instabuild = instantBuild
|
||||
sendedAbilities.mayBuild = playerAbilities.mayBuild
|
||||
sendedAbilities.flyingSpeed = playerAbilities.flyingSpeed
|
||||
sendedAbilities.walkingSpeed = playerAbilities.walkingSpeed
|
||||
}
|
||||
val packet = ClientboundPlayerAbilitiesPacket(sendedAbilities)
|
||||
nmsPlayer.connection.send(packet)
|
||||
}
|
||||
}
|
||||
1
nms/v1_21R3/.gitignore
vendored
1
nms/v1_21R3/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -1,35 +0,0 @@
|
|||
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||
|
||||
group = rootProject.group
|
||||
version = rootProject.version
|
||||
|
||||
plugins {
|
||||
id("io.papermc.paperweight.userdev")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(project(":nms:nms-common"))
|
||||
|
||||
// Used for nms
|
||||
paperweight.paperDevBundle("1.21.4-R0.1-SNAPSHOT")
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven("https://repo.papermc.io/repository/maven-public/")
|
||||
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility = "21"
|
||||
targetCompatibility = "21"
|
||||
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2)
|
||||
jvmTarget.set(JvmTarget.JVM_21)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
package xyz.alexcrea.cuanvil.dependency.packet.versions
|
||||
|
||||
import net.minecraft.network.protocol.game.ClientboundPlayerAbilitiesPacket
|
||||
import net.minecraft.world.entity.player.Abilities
|
||||
import org.bukkit.craftbukkit.entity.CraftPlayer
|
||||
import org.bukkit.entity.Player
|
||||
import xyz.alexcrea.cuanvil.dependency.packet.PacketManager
|
||||
import xyz.alexcrea.cuanvil.dependency.packet.PacketManagerBase
|
||||
|
||||
class V1_21R3_PacketManager : PacketManagerBase(), PacketManager {
|
||||
override val canSetInstantBuild: Boolean
|
||||
get() = true
|
||||
|
||||
override fun setInstantBuild(player: Player, instantBuild: Boolean) {
|
||||
val nmsPlayer = (player as CraftPlayer).handle
|
||||
val playerAbilities = nmsPlayer.abilities
|
||||
val sendedAbilities: Abilities
|
||||
if (playerAbilities.instabuild == instantBuild) {
|
||||
sendedAbilities = playerAbilities
|
||||
} else {
|
||||
sendedAbilities = Abilities()
|
||||
sendedAbilities.invulnerable = playerAbilities.invulnerable
|
||||
sendedAbilities.flying = playerAbilities.flying
|
||||
sendedAbilities.mayfly = playerAbilities.mayfly
|
||||
sendedAbilities.instabuild = instantBuild
|
||||
sendedAbilities.mayBuild = playerAbilities.mayBuild
|
||||
sendedAbilities.flyingSpeed = playerAbilities.flyingSpeed
|
||||
sendedAbilities.walkingSpeed = playerAbilities.walkingSpeed
|
||||
}
|
||||
val packet = ClientboundPlayerAbilitiesPacket(sendedAbilities)
|
||||
nmsPlayer.connection.send(packet)
|
||||
}
|
||||
}
|
||||
1
nms/v1_21R4/.gitignore
vendored
1
nms/v1_21R4/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||
|
||||
group = rootProject.group
|
||||
version = rootProject.version
|
||||
|
||||
plugins {
|
||||
id("io.papermc.paperweight.userdev")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(project(":nms:nms-common"))
|
||||
|
||||
// Used for nms
|
||||
paperweight.paperDevBundle("1.21.5-R0.1-SNAPSHOT")
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven("https://repo.papermc.io/repository/maven-public/")
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility = "21"
|
||||
targetCompatibility = "21"
|
||||
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2)
|
||||
jvmTarget.set(JvmTarget.JVM_21)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
package xyz.alexcrea.cuanvil.dependency.packet.versions
|
||||
|
||||
import net.minecraft.network.protocol.game.ClientboundPlayerAbilitiesPacket
|
||||
import net.minecraft.world.entity.player.Abilities
|
||||
import org.bukkit.craftbukkit.entity.CraftPlayer
|
||||
import org.bukkit.entity.Player
|
||||
import xyz.alexcrea.cuanvil.dependency.packet.PacketManager
|
||||
import xyz.alexcrea.cuanvil.dependency.packet.PacketManagerBase
|
||||
|
||||
class V1_21R4_PacketManager : PacketManagerBase(), PacketManager {
|
||||
override val canSetInstantBuild: Boolean
|
||||
get() = true
|
||||
|
||||
override fun setInstantBuild(player: Player, instantBuild: Boolean) {
|
||||
val nmsPlayer = (player as CraftPlayer).handle
|
||||
val playerAbilities = nmsPlayer.abilities
|
||||
val sendedAbilities: Abilities
|
||||
if (playerAbilities.instabuild == instantBuild) {
|
||||
sendedAbilities = playerAbilities
|
||||
} else {
|
||||
sendedAbilities = Abilities()
|
||||
sendedAbilities.invulnerable = playerAbilities.invulnerable
|
||||
sendedAbilities.flying = playerAbilities.flying
|
||||
sendedAbilities.mayfly = playerAbilities.mayfly
|
||||
sendedAbilities.instabuild = instantBuild
|
||||
sendedAbilities.mayBuild = playerAbilities.mayBuild
|
||||
sendedAbilities.flyingSpeed = playerAbilities.flyingSpeed
|
||||
sendedAbilities.walkingSpeed = playerAbilities.walkingSpeed
|
||||
}
|
||||
val packet = ClientboundPlayerAbilitiesPacket(sendedAbilities)
|
||||
nmsPlayer.connection.send(packet)
|
||||
}
|
||||
}
|
||||
1
nms/v1_21R5/.gitignore
vendored
1
nms/v1_21R5/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||
|
||||
group = rootProject.group
|
||||
version = rootProject.version
|
||||
|
||||
plugins {
|
||||
id("io.papermc.paperweight.userdev")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(project(":nms:nms-common"))
|
||||
|
||||
// Used for nms
|
||||
paperweight.paperDevBundle("1.21.6-R0.1-SNAPSHOT")
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven("https://repo.papermc.io/repository/maven-public/")
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility = "21"
|
||||
targetCompatibility = "21"
|
||||
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2)
|
||||
jvmTarget.set(JvmTarget.JVM_21)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
package xyz.alexcrea.cuanvil.dependency.packet.versions
|
||||
|
||||
import net.minecraft.network.protocol.game.ClientboundPlayerAbilitiesPacket
|
||||
import net.minecraft.world.entity.player.Abilities
|
||||
import org.bukkit.craftbukkit.entity.CraftPlayer
|
||||
import org.bukkit.entity.Player
|
||||
import xyz.alexcrea.cuanvil.dependency.packet.PacketManager
|
||||
import xyz.alexcrea.cuanvil.dependency.packet.PacketManagerBase
|
||||
|
||||
class V1_21R5_PacketManager : PacketManagerBase(), PacketManager {
|
||||
override val canSetInstantBuild: Boolean
|
||||
get() = true
|
||||
|
||||
override fun setInstantBuild(player: Player, instantBuild: Boolean) {
|
||||
val nmsPlayer = (player as CraftPlayer).handle
|
||||
val playerAbilities = nmsPlayer.abilities
|
||||
val sendedAbilities: Abilities
|
||||
if (playerAbilities.instabuild == instantBuild) {
|
||||
sendedAbilities = playerAbilities
|
||||
} else {
|
||||
sendedAbilities = Abilities()
|
||||
sendedAbilities.invulnerable = playerAbilities.invulnerable
|
||||
sendedAbilities.flying = playerAbilities.flying
|
||||
sendedAbilities.mayfly = playerAbilities.mayfly
|
||||
sendedAbilities.instabuild = instantBuild
|
||||
sendedAbilities.mayBuild = playerAbilities.mayBuild
|
||||
sendedAbilities.flyingSpeed = playerAbilities.flyingSpeed
|
||||
sendedAbilities.walkingSpeed = playerAbilities.walkingSpeed
|
||||
}
|
||||
val packet = ClientboundPlayerAbilitiesPacket(sendedAbilities)
|
||||
nmsPlayer.connection.send(packet)
|
||||
}
|
||||
}
|
||||
1
nms/v1_21R6/.gitignore
vendored
1
nms/v1_21R6/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
|
||||
|
||||
group = rootProject.group
|
||||
version = rootProject.version
|
||||
|
||||
plugins {
|
||||
id("io.papermc.paperweight.userdev")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
implementation(project(":nms:nms-common"))
|
||||
|
||||
// Used for nms
|
||||
paperweight.paperDevBundle("1.21.10-R0.1-SNAPSHOT")
|
||||
}
|
||||
|
||||
repositories {
|
||||
maven("https://repo.papermc.io/repository/maven-public/")
|
||||
}
|
||||
|
||||
// Set target version
|
||||
tasks.withType<JavaCompile>().configureEach {
|
||||
sourceCompatibility = "21"
|
||||
targetCompatibility = "21"
|
||||
|
||||
options.encoding = "UTF-8"
|
||||
}
|
||||
|
||||
kotlin {
|
||||
compilerOptions {
|
||||
apiVersion.set(org.jetbrains.kotlin.gradle.dsl.KotlinVersion.KOTLIN_2_2)
|
||||
jvmTarget.set(JvmTarget.JVM_21)
|
||||
}
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
package xyz.alexcrea.cuanvil.dependency.packet.versions
|
||||
|
||||
import net.minecraft.network.protocol.game.ClientboundPlayerAbilitiesPacket
|
||||
import net.minecraft.world.entity.player.Abilities
|
||||
import org.bukkit.craftbukkit.entity.CraftPlayer
|
||||
import org.bukkit.entity.Player
|
||||
import xyz.alexcrea.cuanvil.dependency.packet.PacketManager
|
||||
import xyz.alexcrea.cuanvil.dependency.packet.PacketManagerBase
|
||||
|
||||
class V1_21R6_PacketManager : PacketManagerBase(), PacketManager {
|
||||
override val canSetInstantBuild: Boolean
|
||||
get() = true
|
||||
|
||||
override fun setInstantBuild(player: Player, instantBuild: Boolean) {
|
||||
val nmsPlayer = (player as CraftPlayer).handle
|
||||
val playerAbilities = nmsPlayer.abilities
|
||||
val sendedAbilities: Abilities
|
||||
if (playerAbilities.instabuild == instantBuild) {
|
||||
sendedAbilities = playerAbilities
|
||||
} else {
|
||||
sendedAbilities = Abilities()
|
||||
sendedAbilities.invulnerable = playerAbilities.invulnerable
|
||||
sendedAbilities.flying = playerAbilities.flying
|
||||
sendedAbilities.mayfly = playerAbilities.mayfly
|
||||
sendedAbilities.instabuild = instantBuild
|
||||
sendedAbilities.mayBuild = playerAbilities.mayBuild
|
||||
sendedAbilities.flyingSpeed = playerAbilities.flyingSpeed
|
||||
sendedAbilities.walkingSpeed = playerAbilities.walkingSpeed
|
||||
}
|
||||
val packet = ClientboundPlayerAbilitiesPacket(sendedAbilities)
|
||||
nmsPlayer.connection.send(packet)
|
||||
}
|
||||
}
|
||||
1
nms/v1_21R7/.gitignore
vendored
1
nms/v1_21R7/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
|||
.lastDeploymentsId
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue