custom craft linear cost config values

This commit is contained in:
alexcrea 2025-07-04 15:24:35 +02:00
parent 0baa1b8b28
commit ec4351e70d
Signed by: alexcrea
GPG key ID: E346CD16413450E3
5 changed files with 57 additions and 31 deletions

View file

@ -63,7 +63,7 @@ public class CustomRecipeConfigGui extends MappedGuiListConfigGui<AnvilCustomRec
meta.setLore(Arrays.asList(
"§7Should work: §" + (shouldWork ? "aYes" : "cNo"),
"§7Exact count: §" + (recipe.getExactCount() ? "aYes" : "cNo"),
"§7Recipe Xp Cost: §e" + recipe.getXpCostPerCraft()
"§7Recipe Xp Cost: §e" + recipe.levelCostPerCraft()
));
@ -87,7 +87,7 @@ public class CustomRecipeConfigGui extends MappedGuiListConfigGui<AnvilCustomRec
AnvilCustomRecipe recipe = new AnvilCustomRecipe(
name,
AnvilCustomRecipe.DEFAULT_EXACT_COUNT_CONFIG,
AnvilCustomRecipe.DEFAULT_XP_COST_CONFIG,
AnvilCustomRecipe.DEFAULT_XP_LEVEL_COST_CONFIG,
AnvilCustomRecipe.Companion.getDEFAULT_LEFT_ITEM_CONFIG(),
AnvilCustomRecipe.Companion.getDEFAULT_RIGHT_ITEM_CONFIG(),
AnvilCustomRecipe.Companion.getDEFAULT_RESULT_ITEM_CONFIG());

View file

@ -81,10 +81,10 @@ public class CustomRecipeSubSettingGui extends MappedToListSubSettingGui {
this.anvilRecipe + "." + AnvilCustomRecipe.EXACT_COUNT_CONFIG, AnvilCustomRecipe.DEFAULT_EXACT_COUNT_CONFIG);
this.xpCostFactory = new IntSettingsGui.IntSettingFactory("§8Recipe Xp Cost", this,
this.anvilRecipe +"."+AnvilCustomRecipe.XP_COST_CONFIG,
this.anvilRecipe +"."+AnvilCustomRecipe.XP_LEVEL_COST_CONFIG,
ConfigHolder.CUSTOM_RECIPE_HOLDER,
null,
costRange.getFirst(), costRange.getLast(), AnvilCustomRecipe.DEFAULT_XP_COST_CONFIG, 1, 5, 10);
costRange.getFirst(), costRange.getLast(), AnvilCustomRecipe.DEFAULT_XP_LEVEL_COST_CONFIG, 1, 5, 10);
this.leftItemFactory = new ItemSettingGui.ItemSettingFactory("§eRecipe Left §8Item", this,

View file

@ -130,7 +130,7 @@ class AnvilResultListener : Listener {
if (recipe.leftItem == null) return // in case it changed
val amount = CustomRecipeUtil.getCustomRecipeAmount(recipe, leftItem, rightItem)
val xpCost = amount * recipe.xpCostPerCraft
val xpCost = amount * recipe.levelCostPerCraft
CustomAnvil.log("gamemode: ${player.gameMode != GameMode.CREATIVE}, cost: $xpCost, level: ${player.level}, result: ${player.level < xpCost}")
if ((player.gameMode != GameMode.CREATIVE) && (player.level < xpCost)) return

View file

@ -137,7 +137,7 @@ class PrepareAnvilListener : Listener {
if (DependencyManager.tryTreatAnvilResult(event, resultItem)) return true
// Maybe add an option on custom craft to ignore/not ignore penalty ??
var xpCost = recipe.xpCostPerCraft * amount
var xpCost = recipe.levelCostPerCraft * amount
xpCost += AnvilXpUtil.calculatePenalty(first, null, resultItem, AnvilUseType.CUSTOM_CRAFT)
AnvilXpUtil.setAnvilInvXp(inventory, event.view, player, xpCost, true)

View file

@ -12,7 +12,10 @@ class AnvilCustomRecipe(
//var exactLeft: Boolean,
//var exactRight: Boolean,
var xpCostPerCraft: Int,
var levelCostPerCraft: Int,
var XpCostPerCraft: Int,
var removeExactXp: Boolean,
var leftItem: ItemStack?,
var rightItem: ItemStack?,
@ -25,7 +28,9 @@ class AnvilCustomRecipe(
//const val EXACT_LEFT_CONFIG = "exact_left"
//const val EXACT_RIGHT_CONFIG = "exact_right"
const val XP_COST_CONFIG = "xp_cost"
const val XP_LEVEL_COST_CONFIG = "xp_cost"
const val LINEAR_XP_COST_CONFIG = "linear_xp_cost"
const val REMOVE_EXACT_XP_CONFIG = "remove_exact_linear_xp"
const val LEFT_ITEM_CONFIG = "left_item"
const val RIGHT_ITEM_CONFIG = "right_item"
@ -36,7 +41,9 @@ class AnvilCustomRecipe(
//val DEFAULT_EXACT_LEFT_CONFIG = true
//val DEFAULT_EXACT_RIGHT_CONFIG = true
const val DEFAULT_XP_COST_CONFIG = 1
const val DEFAULT_XP_LEVEL_COST_CONFIG = 1
const val DEFAULT_LINEAR_XP_COST_CONFIG = 0
const val DEFAULT_REMOVE_EXACT_XP_CONFIG = false
val DEFAULT_LEFT_ITEM_CONFIG: ItemStack? = null
val DEFAULT_RIGHT_ITEM_CONFIG: ItemStack? = null
@ -52,9 +59,13 @@ class AnvilCustomRecipe(
//configSection.getBoolean(EXACT_LEFT_CONFIG, true),
//configSection.getBoolean(EXACT_RIGHT_CONFIG, true),
configSection.getInt(XP_COST_CONFIG, DEFAULT_XP_COST_CONFIG),
configSection.getInt(XP_LEVEL_COST_CONFIG, DEFAULT_XP_LEVEL_COST_CONFIG),
configSection.getInt(LINEAR_XP_COST_CONFIG, DEFAULT_LINEAR_XP_COST_CONFIG),
configSection.getBoolean(REMOVE_EXACT_XP_CONFIG, DEFAULT_REMOVE_EXACT_XP_CONFIG),
configSection.getItemStack(LEFT_ITEM_CONFIG, DEFAULT_LEFT_ITEM_CONFIG),
configSection.getItemStack(RIGHT_ITEM_CONFIG, DEFAULT_RIGHT_ITEM_CONFIG),
configSection.getItemStack(RESULT_ITEM_CONFIG, DEFAULT_RESULT_ITEM_CONFIG),
@ -81,7 +92,9 @@ class AnvilCustomRecipe(
//fileConfig.set("$name.$EXACT_LEFT_CONFIG", exactLeft)
//fileConfig.set("$name.$EXACT_RIGHT_CONFIG", exactRight)
fileConfig["$name.$XP_COST_CONFIG"] = xpCostPerCraft
fileConfig["$name.$XP_LEVEL_COST_CONFIG"] = levelCostPerCraft
fileConfig["$name.$LINEAR_XP_COST_CONFIG"] = XpCostPerCraft
fileConfig["$name.$REMOVE_EXACT_XP_CONFIG"] = removeExactXp
fileConfig["$name.$LEFT_ITEM_CONFIG"] = leftItem
fileConfig["$name.$RIGHT_ITEM_CONFIG"] = rightItem
@ -95,7 +108,10 @@ class AnvilCustomRecipe(
@Deprecated("Should use saveToFile(Boolean, Boolean) instead") //TODO determine when an where to save/do backup and remove use of variable like TEMPORARY_DO_SAVE_TO_DISK_EVERY_CHANGE
fun saveToFile() {
saveToFile(GuiSharedConstant.TEMPORARY_DO_SAVE_TO_DISK_EVERY_CHANGE, GuiSharedConstant.TEMPORARY_DO_BACKUP_EVERY_SAVE)
saveToFile(
GuiSharedConstant.TEMPORARY_DO_SAVE_TO_DISK_EVERY_CHANGE,
GuiSharedConstant.TEMPORARY_DO_BACKUP_EVERY_SAVE
)
}
fun updateFromFile() {
@ -104,9 +120,19 @@ class AnvilCustomRecipe(
DEFAULT_EXACT_COUNT_CONFIG
)
this.xpCostPerCraft = ConfigHolder.CUSTOM_RECIPE_HOLDER.config.getInt(
"$name.$XP_COST_CONFIG",
DEFAULT_XP_COST_CONFIG
this.levelCostPerCraft = ConfigHolder.CUSTOM_RECIPE_HOLDER.config.getInt(
"$name.$XP_LEVEL_COST_CONFIG",
DEFAULT_XP_LEVEL_COST_CONFIG
)
this.XpCostPerCraft = ConfigHolder.CUSTOM_RECIPE_HOLDER.config.getInt(
"$name.$LINEAR_XP_COST_CONFIG",
DEFAULT_LINEAR_XP_COST_CONFIG
)
this.removeExactXp = ConfigHolder.CUSTOM_RECIPE_HOLDER.config.getBoolean(
"$name.$REMOVE_EXACT_XP_CONFIG",
DEFAULT_REMOVE_EXACT_XP_CONFIG
)
// Update items