Implements enchantment salvage toggle #23
All checks were successful
EpicKnarvik97/Blacksmith/pipeline/head This commit looks good
All checks were successful
EpicKnarvik97/Blacksmith/pipeline/head This commit looks good
This commit is contained in:
parent
d7bac6d08f
commit
d405c0dcff
@ -188,7 +188,7 @@ public class ScrapperNPCSettings implements TraitSettings<ScrapperSetting> {
|
|||||||
* @return <p>Whether to drop reforged items on the ground</p>
|
* @return <p>Whether to drop reforged items on the ground</p>
|
||||||
*/
|
*/
|
||||||
public boolean getDropItem() {
|
public boolean getDropItem() {
|
||||||
return ConfigHelper.asBoolean(getValue(ScrapperSetting.DROP_ITEM));
|
return asBoolean(ScrapperSetting.DROP_ITEM);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -228,6 +228,16 @@ public class ScrapperNPCSettings implements TraitSettings<ScrapperSetting> {
|
|||||||
return getValue(setting).toString();
|
return getValue(setting).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the boolean value of the given setting
|
||||||
|
*
|
||||||
|
* @param setting <p>The setting to get the value of</p>
|
||||||
|
* @return <p>The value of the given setting as a boolean</p>
|
||||||
|
*/
|
||||||
|
private boolean asBoolean(@NotNull ScrapperSetting setting) {
|
||||||
|
return ConfigHelper.asBoolean(getValue(setting));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the value of a setting, using the default if not set
|
* Gets the value of a setting, using the default if not set
|
||||||
*
|
*
|
||||||
@ -275,7 +285,16 @@ public class ScrapperNPCSettings implements TraitSettings<ScrapperSetting> {
|
|||||||
* @return <p>True if extended salvaging is enabled</p>
|
* @return <p>True if extended salvaging is enabled</p>
|
||||||
*/
|
*/
|
||||||
public boolean extendedSalvageEnabled() {
|
public boolean extendedSalvageEnabled() {
|
||||||
return ConfigHelper.asBoolean(getValue(ScrapperSetting.EXTENDED_SALVAGE_ENABLED));
|
return asBoolean(ScrapperSetting.EXTENDED_SALVAGE_ENABLED);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether salvage of enchanted items is enabled
|
||||||
|
*
|
||||||
|
* @return <p>True of this scrapper can salvage enchanted items</p>
|
||||||
|
*/
|
||||||
|
public boolean salvageEnchanted() {
|
||||||
|
return asBoolean(ScrapperSetting.SALVAGE_ENCHANTED);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -341,4 +360,15 @@ public class ScrapperNPCSettings implements TraitSettings<ScrapperSetting> {
|
|||||||
return asString(ScrapperSetting.PARTIAL_SALVAGE_MESSAGE);
|
return asString(ScrapperSetting.PARTIAL_SALVAGE_MESSAGE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the message to display when explaining that this scrapper is unable to salvage enchanted items
|
||||||
|
*
|
||||||
|
* @return <p>The cannot salvage enchanted message</p>
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
public String getCannotSalvageEnchantedMessage() {
|
||||||
|
return asString(ScrapperSetting.CANNOT_SALVAGE_ENCHANTED_MESSAGE);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -72,6 +72,13 @@ public enum ScrapperSetting implements Setting {
|
|||||||
*/
|
*/
|
||||||
EXTENDED_SALVAGE_ENABLED("extendedSalvageEnabled", SettingValueType.BOOLEAN, false,
|
EXTENDED_SALVAGE_ENABLED("extendedSalvageEnabled", SettingValueType.BOOLEAN, false,
|
||||||
"Whether to enable salvaging of non-repairable items, such as planks", true, false),
|
"Whether to enable salvaging of non-repairable items, such as planks", true, false),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The setting for whether the NPC should allow salvaging of enchanted items
|
||||||
|
*/
|
||||||
|
SALVAGE_ENCHANTED("salvageEnchanted", SettingValueType.BOOLEAN, false,
|
||||||
|
"Whether to enable salvaging of enchanted items. This is disabled by default because it's " +
|
||||||
|
"possible to accidentally salvage items with very good enchantments.", true, false),
|
||||||
|
|
||||||
/*-----------
|
/*-----------
|
||||||
| Messages |
|
| Messages |
|
||||||
@ -168,6 +175,10 @@ public enum ScrapperSetting implements Setting {
|
|||||||
"&cI cannot extract all components from that damaged item.&r",
|
"&cI cannot extract all components from that damaged item.&r",
|
||||||
"The message to display when explaining expected partial yield as part of the cost message", true, true),
|
"The message to display when explaining expected partial yield as part of the cost message", true, true),
|
||||||
|
|
||||||
|
CANNOT_SALVAGE_ENCHANTED_MESSAGE("cannotSalvageEnchantedMessage", SettingValueType.STRING,
|
||||||
|
"&cI'm sorry, but I'm unable to salvage enchanted items!",
|
||||||
|
"The message to display when asked to salvage an enchanted item, and that option is disabled", true, true),
|
||||||
|
|
||||||
/*------------------
|
/*------------------
|
||||||
| Global settings |
|
| Global settings |
|
||||||
------------------*/
|
------------------*/
|
||||||
|
@ -45,7 +45,6 @@ public class ScrapperTrait extends CustomTrait<ScrapperSetting> {
|
|||||||
*
|
*
|
||||||
* @return <p>The current settings for this NPC</p>
|
* @return <p>The current settings for this NPC</p>
|
||||||
*/
|
*/
|
||||||
@SuppressWarnings("unused")
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public ScrapperNPCSettings getSettings() {
|
public ScrapperNPCSettings getSettings() {
|
||||||
return config;
|
return config;
|
||||||
@ -58,7 +57,7 @@ public class ScrapperTrait extends CustomTrait<ScrapperSetting> {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void load(@NotNull DataKey key) {
|
public void load(@NotNull DataKey key) {
|
||||||
config.loadVariables(key);
|
getSettings().loadVariables(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -68,7 +67,7 @@ public class ScrapperTrait extends CustomTrait<ScrapperSetting> {
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void save(@NotNull DataKey key) {
|
public void save(@NotNull DataKey key) {
|
||||||
config.saveVariables(key);
|
getSettings().saveVariables(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -78,38 +77,44 @@ public class ScrapperTrait extends CustomTrait<ScrapperSetting> {
|
|||||||
*/
|
*/
|
||||||
public void startSession(@NotNull Player player) {
|
public void startSession(@NotNull Player player) {
|
||||||
ItemStack itemInHand = player.getInventory().getItemInMainHand();
|
ItemStack itemInHand = player.getInventory().getItemInMainHand();
|
||||||
List<Material> salvageAbleItems = this.config.getSalvageAbleItems();
|
List<Material> salvageAbleItems = getSettings().getSalvageAbleItems();
|
||||||
boolean extended = this.config.extendedSalvageEnabled();
|
boolean extended = getSettings().extendedSalvageEnabled();
|
||||||
|
|
||||||
|
// Check if the item can be salvaged
|
||||||
if (!canBeSalvaged(player.getServer(), itemInHand, salvageAbleItems, extended)) {
|
if (!canBeSalvaged(player.getServer(), itemInHand, salvageAbleItems, extended)) {
|
||||||
sendNPCMessage(this.npc, player, StringFormatter.replacePlaceholder(config.getInvalidItemMessage(),
|
sendNPCMessage(this.npc, player, StringFormatter.replacePlaceholder(getSettings().getInvalidItemMessage(),
|
||||||
"{title}", config.getScrapperTitle()));
|
"{title}", getSettings().getScrapperTitle()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<ItemStack> salvage = getSalvage(itemInHand, extended);
|
// Check if the item is enchanted, and whether this blacksmith can salvage it
|
||||||
|
if (!itemInHand.getEnchantments().isEmpty() && !getSettings().salvageEnchanted()) {
|
||||||
|
sendNPCMessage(this.npc, player, getSettings().getCannotSalvageEnchantedMessage());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// If extended mode is disabled, only allow repairable items to be salvaged
|
// Check if any salvage will be produced
|
||||||
|
List<ItemStack> salvage = getSalvage(itemInHand, extended);
|
||||||
boolean noUsefulSalvage = salvage == null || salvage.isEmpty();
|
boolean noUsefulSalvage = salvage == null || salvage.isEmpty();
|
||||||
if (noUsefulSalvage) {
|
if (noUsefulSalvage) {
|
||||||
sendNPCMessage(this.npc, player, config.getTooDamagedMessage());
|
sendNPCMessage(this.npc, player, getSettings().getTooDamagedMessage());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//Start a new scrapper session for the player
|
//Start a new scrapper session for the player
|
||||||
currentSessionStartTime = System.currentTimeMillis();
|
currentSessionStartTime = System.currentTimeMillis();
|
||||||
session = new SalvageSession(this, player, npc, config, salvage);
|
session = new SalvageSession(this, player, npc, getSettings(), salvage);
|
||||||
//Tell the player the cost of repairing the item
|
//Tell the player the cost of repairing the item
|
||||||
String cost = EconomyManager.formatScrapperCost();
|
String cost = EconomyManager.formatScrapperCost();
|
||||||
|
|
||||||
String expectedYield;
|
String expectedYield;
|
||||||
if (ItemHelper.getDamage(itemInHand) <= 0) {
|
if (ItemHelper.getDamage(itemInHand) <= 0) {
|
||||||
expectedYield = config.getFullSalvageMessage();
|
expectedYield = getSettings().getFullSalvageMessage();
|
||||||
} else {
|
} else {
|
||||||
expectedYield = config.getPartialSalvageMessage();
|
expectedYield = getSettings().getPartialSalvageMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
sendNPCMessage(this.npc, player, StringFormatter.replacePlaceholders(config.getCostMessage(),
|
sendNPCMessage(this.npc, player, StringFormatter.replacePlaceholders(getSettings().getCostMessage(),
|
||||||
List.of("{cost}", "{yield}"), List.of(cost, expectedYield)));
|
List.of("{cost}", "{yield}"), List.of(cost, expectedYield)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -163,6 +163,10 @@ scrapper:
|
|||||||
# Whether to enable salvaging of non-repairable items, such as planks
|
# Whether to enable salvaging of non-repairable items, such as planks
|
||||||
extendedSalvageEnabled: false
|
extendedSalvageEnabled: false
|
||||||
|
|
||||||
|
# Whether to enable salvaging of enchanted items. This is disabled by default because it's possible to accidentally
|
||||||
|
# salvage items with very good enchantments.
|
||||||
|
salvageEnchanted: false
|
||||||
|
|
||||||
# Default values for messages used by NPCs
|
# Default values for messages used by NPCs
|
||||||
messages:
|
messages:
|
||||||
# The message to display when another player is using the scrapper
|
# The message to display when another player is using the scrapper
|
||||||
@ -202,4 +206,7 @@ scrapper:
|
|||||||
fullSalvageMessage: "&aI should be able to extract all components from that pristine item.&r"
|
fullSalvageMessage: "&aI should be able to extract all components from that pristine item.&r"
|
||||||
|
|
||||||
# The yield message to display if trying to salvage a damaged item
|
# The yield message to display if trying to salvage a damaged item
|
||||||
partialSalvageMessage: "&cI cannot extract all components from that damaged item.&r"
|
partialSalvageMessage: "&cI cannot extract all components from that damaged item.&r"
|
||||||
|
|
||||||
|
# The message to display when asked to salvage an enchanted item, and that option is disabled
|
||||||
|
cannotSalvageEnchantedMessage: "&cI'm sorry, but I'm unable to salvage enchanted items!"
|
Loading…
Reference in New Issue
Block a user