Writes a lot of code necessary for the scrapper

Adds the classes necessary for the new scrapper
Partly implements some scrapper functionality
Restructures some classes to reduce code duplication
Moves some classes to make some classes easier to find
Adds a bunch of TODOs where things have an unfinished implementation
This commit is contained in:
2023-11-14 16:04:48 +01:00
parent 1938a690c6
commit f3f3f66c38
40 changed files with 1788 additions and 594 deletions

View File

@ -11,21 +11,21 @@ blacksmith:
basePrice:
# You can add, for example "diamond-sword: 15.3" to change the base cost for a specific item
default: 10.0
# The additional cost for each durability point missing (natural cost) or present (not natural cost)
pricePerDurabilityPoint:
# You can add, for example "diamond-sword: 0.09" to change the base cost for a specific item
default: 0.005
# The additional cost for each enchantment level present on an item
enchantmentCost:
# You can add, for example "arrow-infinite: 0.09" to change the enchantment cost for a specific enchantment
default: 5
# Natural cost makes re-forging more expensive the more damaged the item is. Disabling this will enable the legacy
# blacksmith behavior instead
useNaturalCost: true
# Exact time displays the exact number of seconds and minutes remaining as part of the reforging cool-down and
# reforging delay messages, instead of just vaguely hinting at the remaining time.
showExactTime: false
@ -41,76 +41,76 @@ blacksmith:
defaults:
# Whether the item will drop a reforged item on the ground, instead of putting it into the user's inventory
dropItem: true
# The items a blacksmith is able to reforge. Setting this only allows NPCs to repair the listed items. This should be
# set for each individual NPC, and should not be set here, unless you want to restrict NPCs which have not been set
# up yet.
reforgeAbleItems: [ ]
# The enchantments a blacksmith is denied from applying to an item. Disable anything you find too op or annoying.
enchantmentBlocklist: [ "binding_curse", "mending", "vanishing_curse" ]
# The chance to fail reforging an item, which only repairs the item a tiny bit or not at all (0-100)
failReforgeChance: 10 # Default = 10%
# Whether failed reforging should remove or downgrade the item's enchantments
failReforgeRemovesEnchantments: false # Default = false
# The chance that an enchantment will be added to the reforged item (0-100)
extraEnchantmentChance: 5 # Default = 5%
# The maximum number of enchantments the blacksmith will try to add
maxEnchantments: 3
# Whether the blacksmith will reforge anvils as a special case
reforgeAnvils: false
# All settable delays
delaysInSeconds:
# The maximum time for a reforging to finish
maximum: 30
# The minimum time for a reforging to finish
minimum: 5
# The cool-down period between each reforge
reforgeCoolDown: 60
# The title describing the blacksmith's usage/speciality
blacksmithTitle: "blacksmith"
# The title describing the blacksmith's usage/speciality
blacksmithTitle: "blacksmith"
# All messages used by the NPC
messages:
# The message to display when another player is using the blacksmith
busyPlayerMessage: "&cI'm busy at the moment. Come back later!"
# The message to display when the blacksmith is working on the reforging
busyReforgeMessage: "&cI'm working on it. Be patient! I'll finish {time}!"
# The message to display when the blacksmith is still on a cool-down from the previous re-forging
coolDownUnexpiredMessage: "&cYou've already had your chance! Give me a break! I'll be ready {time}!"
# The message to display when informing a player about the reforging cost
costMessage: "&eIt will cost &a{cost}&e to reforge that &a{item}&e! Click again to reforge!"
# The message to display when the blacksmith fails to reforge an item
failReforgeMessage: "&cWhoops! Didn't mean to do that! Maybe next time?"
# The message to display when a player cannot pay for the reforging
insufficientFundsMessage: "&cYou don't have enough money to reforge that item!"
# The message to display when holding an item the blacksmith is unable to reforge
invalidItemMessage: "&cI'm sorry, but I'm a/an {title}, I don't know how to reforge that!"
# The message to display when presenting a different item than the one just evaluated
itemChangedMessage: "&cThat's not the item you wanted to reforge before!"
# The message to display once the blacksmith starts re-forging
startReforgeMessage: "&eOk, let's see what I can do..."
# The message to display once the reforging has successfully finished
successMessage: "There you go! All better!"
# The message to display if a player is trying to reforge an item with full durability
notDamagedMessage: "&cThat item is not in need of repair"
@ -137,30 +137,41 @@ scrapper:
# set for each individual NPC, and should not be set here, unless you want to restrict NPCs which have not been set
# up yet.
salvageAbleItems: [ ]
messages:
# The message to display when another player is using the scrapper
busyPlayerMessage: "&cI'm busy at the moment. Come back later!"
# The message to display when the blacksmith is working on the salvaging
busySalvageMessage: "&cI'm working on it. Be patient! I'll finish {time}!"
# The message to display when the blacksmith is still on a cool-down from the previous re-forging
coolDownUnexpiredMessage: "&cYou've already had your chance! Give me a break! I'll be ready {time}!"
# The message to display if the player tries to salvage an item the blacksmith cannot salvage
cannotSalvageMessage: "&cI'm unable to salvage that item"
# All settable delays
delaysInSeconds:
# The maximum time for a salvaging to finish
maximum: 30
# The message to display if reforging the player's item would result in no salvage
tooDamagedForSalvageMessage: "&cThat item is too damaged to be salvaged into anything useful"
# The minimum time for a salvaging to finish
minimum: 5
# The message to display when an item is successfully salvaged
successSalvagedMessage: "&cThere you go!"
# The message to display when the blacksmith fails to reforge an item
failSalvageMessage: "&cWhoops! The item broke! Maybe next time?"
# The message to display when presenting a different item than the one just evaluated
itemChangedMessage: "&cThat's not the item you wanted to salvage before!"
# The message to display once the blacksmith starts re-forging
startSalvageMessage: "&eOk, let's see what I can do..."
# The cool-down period between each salvage
salvageCoolDown: 60
messages:
# The message to display when another player is using the scrapper
busyPlayerMessage: "&cI'm busy at the moment. Come back later!"
# The message to display when the blacksmith is working on the salvaging
busySalvageMessage: "&cI'm working on it. Be patient! I'll finish {time}!"
# The message to display when the blacksmith is still on a cool-down from the previous re-forging
coolDownUnexpiredMessage: "&cYou've already had your chance! Give me a break! I'll be ready {time}!"
# The message to display if the player tries to salvage an item the blacksmith cannot salvage
cannotSalvageMessage: "&cI'm unable to salvage that item"
# The message to display if reforging the player's item would result in no salvage
tooDamagedForSalvageMessage: "&cThat item is too damaged to be salvaged into anything useful"
# The message to display when an item is successfully salvaged
successSalvagedMessage: "&cThere you go!"
# The message to display when the blacksmith fails to reforge an item
failSalvageMessage: "&cWhoops! The item broke! Maybe next time?"
# The message to display when presenting a different item than the one just evaluated
itemChangedMessage: "&cThat's not the item you wanted to salvage before!"
# The message to display once the blacksmith starts re-forging
startSalvageMessage: "&eOk, let's see what I can do..."