add/change item of basic config menu.

This commit is contained in:
alexcrea 2024-03-01 15:09:06 +01:00 committed by alexcrea
parent 065a3a13d8
commit 321a2b1cc8
5 changed files with 165 additions and 46 deletions

View file

@ -9,8 +9,11 @@ import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import xyz.alexcrea.cuanvil.gui.config.BasicConfigGui;
import xyz.alexcrea.cuanvil.gui.utils.GuiGlobalActions;
import xyz.alexcrea.cuanvil.gui.utils.GuiGlobalItems;
import java.util.Collections;
public class MainConfigGui extends ChestGui {
public final static MainConfigGui INSTANCE = new MainConfigGui();
@ -19,14 +22,14 @@ public class MainConfigGui extends ChestGui {
INSTANCE.init();
}
private MainConfigGui() {
super(3, "\u00A7cAnvil Config", CustomAnvil.instance);
super(3, "\u00A78Anvil Config", CustomAnvil.instance);
}
private void init(){
Pattern pattern = new Pattern(
"000000000",
"001234500",
"012304560",
"Q00000000"
);
PatternPane pane = new PatternPane(0, 0, 9, 3, pattern);
@ -34,20 +37,35 @@ public class MainConfigGui extends ChestGui {
GuiGlobalItems.addBackgroundItem(pane);
// Basic config item
ItemStack basicConfigItemstack = new ItemStack(Material.COMMAND_BLOCK);
ItemMeta basicConfigMeta = basicConfigItemstack.getItemMeta();
ItemStack stonePlaceholder = new ItemStack(Material.STONE);
GuiItem placeholder1 = GuiGlobalItems.toGuiItem(stonePlaceholder, BasicConfigGui.INSTANCE);
GuiItem placeholder2 = new GuiItem(stonePlaceholder,CustomAnvil.instance);
GuiItem placeholder3 = new GuiItem(stonePlaceholder,CustomAnvil.instance);
GuiItem placeholder4 = new GuiItem(stonePlaceholder,CustomAnvil.instance);
GuiItem placeholder5 = new GuiItem(stonePlaceholder,CustomAnvil.instance);
basicConfigMeta.setDisplayName("\u00A7aBasic Config Menu");
basicConfigMeta.setLore(Collections.singletonList("\u00A77Click here to open basic config menu"));
basicConfigItemstack.setItemMeta(basicConfigMeta);
GuiItem placeholder1 = GuiGlobalItems.goToGuiItem(basicConfigItemstack, BasicConfigGui.INSTANCE);
pane.bindItem('1', placeholder1);
pane.bindItem('2', placeholder2);
pane.bindItem('3', placeholder3);
pane.bindItem('4', placeholder4);
pane.bindItem('5', placeholder5);
// WIP configuration items
ItemStack wipItemstack = new ItemStack(Material.BARRIER);
ItemMeta wipMeta = wipItemstack.getItemMeta();
wipMeta.setDisplayName("\u00A7cWIP");
wipItemstack.setItemMeta(wipMeta);
GuiItem wip2 = new GuiItem(wipItemstack, GuiGlobalActions.stayInPlace, CustomAnvil.instance);
GuiItem wip3 = new GuiItem(wipItemstack, GuiGlobalActions.stayInPlace, CustomAnvil.instance);
GuiItem wip4 = new GuiItem(wipItemstack, GuiGlobalActions.stayInPlace, CustomAnvil.instance);
GuiItem wip5 = new GuiItem(wipItemstack, GuiGlobalActions.stayInPlace, CustomAnvil.instance);
GuiItem wip6 = new GuiItem(wipItemstack, GuiGlobalActions.stayInPlace, CustomAnvil.instance);
pane.bindItem('2', wip2);
pane.bindItem('3', wip3);
pane.bindItem('4', wip4);
pane.bindItem('5', wip5);
pane.bindItem('6', wip6);
// quit item
ItemStack quitItemstack = new ItemStack(Material.BARRIER);

View file

@ -4,14 +4,21 @@ import com.github.stefvanschie.inventoryframework.gui.GuiItem;
import com.github.stefvanschie.inventoryframework.pane.PatternPane;
import com.github.stefvanschie.inventoryframework.pane.util.Pattern;
import io.delilaheve.CustomAnvil;
import io.delilaheve.util.ConfigOptions;
import kotlin.ranges.IntRange;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import xyz.alexcrea.cuanvil.config.ConfigHolder;
import xyz.alexcrea.cuanvil.gui.MainConfigGui;
import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui;
import xyz.alexcrea.cuanvil.gui.config.settings.BoolSettingsGui;
import xyz.alexcrea.cuanvil.gui.config.settings.IntSettingsGui;
import xyz.alexcrea.cuanvil.gui.utils.GuiGlobalActions;
import xyz.alexcrea.cuanvil.gui.utils.GuiGlobalItems;
import java.util.Collections;
public class BasicConfigGui extends ValueUpdatableGui {
public final static BasicConfigGui INSTANCE = new BasicConfigGui();
@ -21,7 +28,7 @@ public class BasicConfigGui extends ValueUpdatableGui {
}
private BasicConfigGui(){
super(3, "\u00A7cBasic Config GUI", CustomAnvil.instance);
super(3, "\u00A78Basic Config GUI", CustomAnvil.instance);
}
@ -29,7 +36,7 @@ public class BasicConfigGui extends ValueUpdatableGui {
private void init(){
Pattern pattern = new Pattern(
"000000000",
"012000000",
"012345670",
"B00000000"
);
pane = new PatternPane(0, 0, 9, 3, pattern);
@ -38,19 +45,108 @@ public class BasicConfigGui extends ValueUpdatableGui {
GuiGlobalItems.addBackItem(pane, MainConfigGui.INSTANCE);
GuiGlobalItems.addBackgroundItem(pane);
prepareValues();
updateGuiValues();
}
private BoolSettingsGui.BoolSettingFactory limitRepairFactory;
private IntSettingsGui.IntSettingFactory repairCostFactory;
private GuiItem notNeededLimitValueItem;
private BoolSettingsGui.BoolSettingFactory removeRepairLimit;
private IntSettingsGui.IntSettingFactory itemRepairCost;
private IntSettingsGui.IntSettingFactory unitRepairCost;
private IntSettingsGui.IntSettingFactory itemRenameCost;
private IntSettingsGui.IntSettingFactory sacrificeIllegalEnchantCost;
protected void prepareValues(){
// limit repair item
this.limitRepairFactory = BoolSettingsGui.factory("\u00A78Limit Repair Cost ?",this,
ConfigOptions.LIMIT_REPAIR_COST, ConfigHolder.DEFAULT_CONFIG, ConfigOptions.DEFAULT_LIMIT_REPAIR);
// rename cost item
IntRange range = ConfigOptions.REPAIR_LIMIT_RANGE;
this.repairCostFactory = IntSettingsGui.factory("\u00A78Repair Cost Limit", this,
ConfigOptions.LIMIT_REPAIR_VALUE, ConfigHolder.DEFAULT_CONFIG, range.getFirst(),range.getLast(),
ConfigOptions.DEFAULT_LIMIT_REPAIR_VALUE,
1, 5, 10, 50, 100);
// rename cost not needed
ItemStack item = new ItemStack(Material.BARRIER);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName("\u00A7cRepair Cost Limit");
meta.setLore(Collections.singletonList("\u00A77Please, enable repair cost limit for this variable to be editable."));
item.setItemMeta(meta);
this.notNeededLimitValueItem = new GuiItem(item, GuiGlobalActions.stayInPlace, CustomAnvil.instance);
// remove repair limit item
this.removeRepairLimit = BoolSettingsGui.factory("\u00A78Remove Repair Limit ?",this,
ConfigOptions.REMOVE_REPAIR_LIMIT, ConfigHolder.DEFAULT_CONFIG, ConfigOptions.DEFAULT_REMOVE_LIMIT);
// item repair cost
range = ConfigOptions.REPAIR_COST_RANGE;
this.itemRepairCost = IntSettingsGui.factory("\u00A78Item repair cost", this,
ConfigOptions.ITEM_REPAIR_COST, ConfigHolder.DEFAULT_CONFIG, range.getFirst(),range.getLast(),
ConfigOptions.DEFAULT_ITEM_REPAIR_COST,
1, 5, 10);
// unit repair cost
this.unitRepairCost = IntSettingsGui.factory("\u00A78Unit repair cost", this,
ConfigOptions.UNIT_REPAIR_COST, ConfigHolder.DEFAULT_CONFIG, range.getFirst(),range.getLast(),
ConfigOptions.DEFAULT_UNIT_REPAIR_COST,
1, 5, 10, 50, 100);
// item rename cost
range = ConfigOptions.ITEM_RENAME_COST_RANGE;
this.itemRenameCost = IntSettingsGui.factory("\u00A78Rename Cost", this,
ConfigOptions.ITEM_RENAME_COST, ConfigHolder.DEFAULT_CONFIG, range.getFirst(),range.getLast(),
ConfigOptions.DEFAULT_ITEM_RENAME_COST,
1, 5, 10, 50, 100);
// sacrifice illegal enchant cost
range = ConfigOptions.SACRIFICE_ILLEGAL_COST_RANGE;
this.sacrificeIllegalEnchantCost = IntSettingsGui.factory("\u00A78Sacrifice Illegal enchant Cost", this,
ConfigOptions.SACRIFICE_ILLEGAL_COST, ConfigHolder.DEFAULT_CONFIG, range.getFirst(),range.getLast(),
ConfigOptions.DEFAULT_SACRIFICE_ILLEGAL_COST,
1, 5, 10, 50, 100);
}
@Override
public void updateGuiValues() {
// Update item with value
IntSettingsGui.IntSettingFactory factory1 = IntSettingsGui.factory( "Test GUI", this, "test", ConfigHolder.DEFAULT_CONFIG, 0,255,2,1, 5, 10, 50, 100);
GuiItem setting1 = GuiGlobalItems.intSettingGuiItem(factory1, Material.COMMAND_BLOCK);
pane.bindItem('1', setting1);
// limit repair item
GuiItem limitRepairItem = GuiGlobalItems.boolSettingGuiItem(this.limitRepairFactory);
pane.bindItem('1', limitRepairItem);
BoolSettingsGui.BoolSettingFactory factory2 = BoolSettingsGui.factory("Test Gui bool",this, "test2", ConfigHolder.DEFAULT_CONFIG, false);
GuiItem setting2 = GuiGlobalItems.boolSettingGuiItem(factory2);
pane.bindItem('2', setting2);
// rename cost item
GuiItem limitRepairValueItem;
if(this.limitRepairFactory.getConfiguredValue()){
limitRepairValueItem = GuiGlobalItems.intSettingGuiItem(this.repairCostFactory, Material.EXPERIENCE_BOTTLE);
}else{
limitRepairValueItem = this.notNeededLimitValueItem;
}
pane.bindItem('2', limitRepairValueItem);
// remove repair limit item
GuiItem removeRepairLimitItem = GuiGlobalItems.boolSettingGuiItem(this.removeRepairLimit);
pane.bindItem('3', removeRepairLimitItem);
// item repair cost
GuiItem itemRepairCostItem = GuiGlobalItems.intSettingGuiItem(this.itemRepairCost, Material.ANVIL);
pane.bindItem('4', itemRepairCostItem);
// unit repair cost
GuiItem unitRepairCostItem = GuiGlobalItems.intSettingGuiItem(this.unitRepairCost, Material.DIAMOND);
pane.bindItem('5', unitRepairCostItem);
// item rename cost
GuiItem itemRenameCost = GuiGlobalItems.intSettingGuiItem(this.itemRenameCost, Material.NAME_TAG);
pane.bindItem('6', itemRenameCost);
// sacrifice illegal enchant cost
GuiItem illegalCostItem = GuiGlobalItems.intSettingGuiItem(this.sacrificeIllegalEnchantCost, Material.ENCHANTED_BOOK);
pane.bindItem('7', illegalCostItem);
update();
}

View file

@ -19,7 +19,7 @@ import java.util.Collections;
public class GuiGlobalItems {
// return
public static GuiItem toGuiItem(@NotNull ItemStack item, @NotNull Gui goal){
public static GuiItem goToGuiItem(@NotNull ItemStack item, @NotNull Gui goal){
return new GuiItem(item, GuiGlobalActions.openGuiAction(goal), CustomAnvil.instance);
}
@ -33,7 +33,7 @@ public class GuiGlobalItems {
}
public static GuiItem backItem(@NotNull Gui goal){
// simple go back item
return toGuiItem(BACK_ITEM, goal);
return goToGuiItem(BACK_ITEM, goal);
}
public static void addBackItem(@NotNull PatternPane target,
@NotNull Gui goal){

View file

@ -13,19 +13,19 @@ object ConfigOptions {
// Path for default enchantment limits
private const val DEFAULT_LIMIT_PATH = "default_limit"
// Path for limiting repair cost
private const val LIMIT_REPAIR_COST = "limit_repair_cost"
const val LIMIT_REPAIR_COST = "limit_repair_cost"
// Path for repair value limit
private const val LIMIT_REPAIR_VALUE = "limit_repair_value"
const val LIMIT_REPAIR_VALUE = "limit_repair_value"
// Path for level cost on item repair
private const val ITEM_REPAIR_COST = "item_repair_cost"
const val ITEM_REPAIR_COST = "item_repair_cost"
// Path for level cost on unit repair
private const val UNIT_REPAIR_COST = "unit_repair_cost"
const val UNIT_REPAIR_COST = "unit_repair_cost"
// Path for level cost on item renaming
private const val ITEM_RENAME_COST = "item_rename_cost"
const val ITEM_RENAME_COST = "item_rename_cost"
// Path for level cost on illegal enchantment on sacrifice
private const val SACRIFICE_ILLEGAL_COST = "sacrifice_illegal_enchant_cost"
const val SACRIFICE_ILLEGAL_COST = "sacrifice_illegal_enchant_cost"
// Path for removing repair cost limits
private const val REMOVE_REPAIR_LIMIT = "remove_repair_limit"
const val REMOVE_REPAIR_LIMIT = "remove_repair_limit"
// Root path for enchantment limits
const val ENCHANT_LIMIT_ROOT = "enchant_limits"
// Root path for enchantment values
@ -39,29 +39,34 @@ object ConfigOptions {
// Default value for enchantment limits
private const val DEFAULT_ENCHANT_LIMIT = 5
// Default value for limiting repair cost
private const val DEFAULT_LIMIT_REPAIR = true
const val DEFAULT_LIMIT_REPAIR = true
// Default value for repair cost limit
private const val DEFAULT_LIMIT_REPAIR_VALUE = 39
const val DEFAULT_LIMIT_REPAIR_VALUE = 39
// Default value for level cost on item repair
private const val DEFAULT_ITEM_REPAIR_COST = 2
const val DEFAULT_ITEM_REPAIR_COST = 2
// Default value for level cost per unit repair
private const val DEFAULT_UNIT_REPAIR_COST = 1
const val DEFAULT_UNIT_REPAIR_COST = 1
// Default value for level cost on item renaming
private const val DEFAULT_ITEM_RENAME_COST = 1
const val DEFAULT_ITEM_RENAME_COST = 1
// Default value for level cost on illegal enchantment on sacrifice
private const val DEFAULT_SACRIFICE_ILLEGAL_COST = 1
const val DEFAULT_SACRIFICE_ILLEGAL_COST = 1
// Valid range for repair cost limit
private val REPAIR_LIMIT_RANGE = 1..39
@JvmField
val REPAIR_LIMIT_RANGE = 1..39
// Valid range for repair cost
private val REPAIR_COST_RANGE = 0..255
@JvmField
val REPAIR_COST_RANGE = 0..255
// Valid range for rename cost
private val ITEM_RENAME_COST_RANGE = 0..255
@JvmField
val ITEM_RENAME_COST_RANGE = 0..255
// Valid range for illegal enchantment conflict cost
private val SACRIFICE_ILLEGAL_COST_RANGE = 0..255
@JvmField
val SACRIFICE_ILLEGAL_COST_RANGE = 0..255
// Default for removing repair cost limits
private const val DEFAULT_REMOVE_LIMIT = false
const val DEFAULT_REMOVE_LIMIT = false
// Valid range for an enchantment limit
private val ENCHANT_LIMIT_RANGE = 1..255
@JvmField
val ENCHANT_LIMIT_RANGE = 1..255
// Default value for an enchantment multiplier
private const val DEFAULT_ENCHANT_VALUE = 0
// Default value for debug logging

View file

@ -32,11 +32,11 @@ class ReloadExecutor : CommandExecutor {
*/
private fun commandBody(hardfail: Boolean): Boolean{
try {
if(!ConfigHolder.reloadAllFromDisk(hardfail)) return false;
if(!ConfigHolder.reloadAllFromDisk(hardfail)) return false
// Then update all global gui containing value from config
BasicConfigGui.INSTANCE.updateGuiValues();
return true;
BasicConfigGui.INSTANCE.updateGuiValues()
return true
}catch (e: Exception){
e.printStackTrace()
return false