mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 16:16:17 +02:00
Finish global gui for group config.
This commit is contained in:
parent
2c6349735b
commit
d5b7e5dbfd
7 changed files with 56 additions and 27 deletions
|
|
@ -6,6 +6,7 @@ import com.github.stefvanschie.inventoryframework.pane.PatternPane;
|
||||||
import com.github.stefvanschie.inventoryframework.pane.util.Pattern;
|
import com.github.stefvanschie.inventoryframework.pane.util.Pattern;
|
||||||
import io.delilaheve.CustomAnvil;
|
import io.delilaheve.CustomAnvil;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.ItemFlag;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import xyz.alexcrea.cuanvil.gui.config.global.*;
|
import xyz.alexcrea.cuanvil.gui.config.global.*;
|
||||||
|
|
@ -83,12 +84,14 @@ public class MainConfigGui extends ChestGui {
|
||||||
pane.bindItem('4', enchantConflictItem);
|
pane.bindItem('4', enchantConflictItem);
|
||||||
|
|
||||||
// Group config items
|
// Group config items
|
||||||
ItemStack wipItemstack = new ItemStack(Material.BARRIER);
|
ItemStack groupItemstack = new ItemStack(Material.CHEST);
|
||||||
ItemMeta wipMeta = wipItemstack.getItemMeta();
|
|
||||||
wipMeta.setDisplayName("\u00A7cWIP");
|
|
||||||
wipItemstack.setItemMeta(wipMeta);
|
|
||||||
|
|
||||||
GuiItem groupConfigItem = GuiGlobalItems.goToGuiItem(wipItemstack, GroupConfigGui.INSTANCE);
|
ItemMeta groupMeta = groupItemstack.getItemMeta();
|
||||||
|
groupMeta.setDisplayName("\u00A7aMaterial Groups");
|
||||||
|
groupMeta.setLore(Collections.singletonList("\u00A77Click here to open material group menu"));
|
||||||
|
groupItemstack.setItemMeta(groupMeta);
|
||||||
|
|
||||||
|
GuiItem groupConfigItem = GuiGlobalItems.goToGuiItem(groupItemstack, GroupConfigGui.INSTANCE);
|
||||||
|
|
||||||
pane.bindItem('5', groupConfigItem);
|
pane.bindItem('5', groupConfigItem);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ package xyz.alexcrea.cuanvil.gui.config.global;
|
||||||
|
|
||||||
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
|
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
import org.bukkit.inventory.ItemFlag;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import xyz.alexcrea.cuanvil.config.ConfigHolder;
|
import xyz.alexcrea.cuanvil.config.ConfigHolder;
|
||||||
|
|
@ -58,6 +59,7 @@ public class EnchantConflictGui extends MappedGuiListConfigGui<EnchantConflictGr
|
||||||
|
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
|
||||||
|
meta.addItemFlags(ItemFlag.values());
|
||||||
meta.setDisplayName("\u00A7e" + CasedStringUtil.snakeToUpperSpacedCase(conflict.toString()) + " \u00A7fConflict");
|
meta.setDisplayName("\u00A7e" + CasedStringUtil.snakeToUpperSpacedCase(conflict.toString()) + " \u00A7fConflict");
|
||||||
meta.setLore(Arrays.asList(
|
meta.setLore(Arrays.asList(
|
||||||
"\u00A77Enchantment count: \u00A7e" + conflict.getEnchants().size(),
|
"\u00A77Enchantment count: \u00A7e" + conflict.getEnchants().size(),
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,24 @@
|
||||||
package xyz.alexcrea.cuanvil.gui.config.global;
|
package xyz.alexcrea.cuanvil.gui.config.global;
|
||||||
|
|
||||||
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
|
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import org.bukkit.inventory.ItemFlag;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
import xyz.alexcrea.cuanvil.config.ConfigHolder;
|
import xyz.alexcrea.cuanvil.config.ConfigHolder;
|
||||||
import xyz.alexcrea.cuanvil.group.AbstractMaterialGroup;
|
import xyz.alexcrea.cuanvil.group.AbstractMaterialGroup;
|
||||||
|
import xyz.alexcrea.cuanvil.group.GroupType;
|
||||||
import xyz.alexcrea.cuanvil.group.IncludeGroup;
|
import xyz.alexcrea.cuanvil.group.IncludeGroup;
|
||||||
|
import xyz.alexcrea.cuanvil.group.ItemGroupManager;
|
||||||
import xyz.alexcrea.cuanvil.gui.config.list.MappedGuiListConfigGui;
|
import xyz.alexcrea.cuanvil.gui.config.list.MappedGuiListConfigGui;
|
||||||
import xyz.alexcrea.cuanvil.gui.config.list.elements.ConflictSubSettingGui;
|
import xyz.alexcrea.cuanvil.gui.config.list.elements.GroupConfigSubSettingGui;
|
||||||
|
import xyz.alexcrea.cuanvil.util.CasedStringUtil;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class GroupConfigGui extends MappedGuiListConfigGui<AbstractMaterialGroup, ConflictSubSettingGui> {
|
public class GroupConfigGui extends MappedGuiListConfigGui<AbstractMaterialGroup, GroupConfigSubSettingGui> {
|
||||||
|
|
||||||
public final static GroupConfigGui INSTANCE = new GroupConfigGui();
|
public final static GroupConfigGui INSTANCE = new GroupConfigGui();
|
||||||
|
|
||||||
|
|
@ -30,7 +35,13 @@ public class GroupConfigGui extends MappedGuiListConfigGui<AbstractMaterialGroup
|
||||||
ItemStack item = new ItemStack(group.getRepresentativeMaterial());
|
ItemStack item = new ItemStack(group.getRepresentativeMaterial());
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
|
||||||
meta.setDisplayName(group.getName());
|
meta.addItemFlags(ItemFlag.values());
|
||||||
|
meta.setDisplayName("\u00A7e" + CasedStringUtil.snakeToUpperSpacedCase(group.getName())+ " \u00A7rGroup");
|
||||||
|
meta.setLore(Arrays.asList(
|
||||||
|
"\u00A77Number of selected groups : " + group.getGroups().size(),
|
||||||
|
"\u00A77Number of selected material: " + group.getNonGroupInheritedMaterials().size(),
|
||||||
|
"",
|
||||||
|
"\u00A77Total number of included material "+group.getMaterials().size()));
|
||||||
|
|
||||||
item.setItemMeta(meta);
|
item.setItemMeta(meta);
|
||||||
return item;
|
return item;
|
||||||
|
|
@ -49,8 +60,8 @@ public class GroupConfigGui extends MappedGuiListConfigGui<AbstractMaterialGroup
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected ConflictSubSettingGui newInstanceOfGui(AbstractMaterialGroup group, GuiItem item) {
|
protected GroupConfigSubSettingGui newInstanceOfGui(AbstractMaterialGroup group, GuiItem item) {
|
||||||
return new ConflictSubSettingGui(this, group, item);
|
return new GroupConfigSubSettingGui(this, group, item);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
@ -60,8 +71,13 @@ public class GroupConfigGui extends MappedGuiListConfigGui<AbstractMaterialGroup
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected AbstractMaterialGroup createAndSaveNewEmptyGeneric(String name) {
|
protected AbstractMaterialGroup createAndSaveNewEmptyGeneric(String name) {
|
||||||
|
ItemGroupManager manager = ConfigHolder.ITEM_GROUP_HOLDER.getItemGroupsManager();
|
||||||
|
if(manager.getGroupMap().containsKey(name)) return null;
|
||||||
|
|
||||||
return null;
|
ConfigurationSection config = ConfigHolder.ITEM_GROUP_HOLDER.getConfig();
|
||||||
|
config.set(name+"."+ItemGroupManager.GROUP_TYPE_PATH, GroupType.INCLUDE.getGroupID());
|
||||||
|
|
||||||
|
return manager.createGroup(config, name);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -81,7 +81,10 @@ public abstract class MappedGuiListConfigGui< T, S extends ElementMappedToListGu
|
||||||
}
|
}
|
||||||
|
|
||||||
T generic = createAndSaveNewEmptyGeneric(message);
|
T generic = createAndSaveNewEmptyGeneric(message);
|
||||||
if(generic == null) return;// we don't know what to do
|
if(generic == null) {// we don't know what to do. so we back up by opening this gui.
|
||||||
|
this.show(player);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
updateValueForGeneric(generic, true);
|
updateValueForGeneric(generic, true);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,6 @@
|
||||||
package xyz.alexcrea.cuanvil.gui.config.list.elements;
|
package xyz.alexcrea.cuanvil.gui.config.list.elements;
|
||||||
|
|
||||||
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
|
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
|
||||||
import com.github.stefvanschie.inventoryframework.gui.type.util.Gui;
|
|
||||||
import com.github.stefvanschie.inventoryframework.pane.PatternPane;
|
import com.github.stefvanschie.inventoryframework.pane.PatternPane;
|
||||||
import com.github.stefvanschie.inventoryframework.pane.util.Pattern;
|
import com.github.stefvanschie.inventoryframework.pane.util.Pattern;
|
||||||
import io.delilaheve.CustomAnvil;
|
import io.delilaheve.CustomAnvil;
|
||||||
|
|
@ -20,20 +19,19 @@ import xyz.alexcrea.cuanvil.gui.config.global.GroupConfigGui;
|
||||||
import xyz.alexcrea.cuanvil.gui.util.GuiGlobalActions;
|
import xyz.alexcrea.cuanvil.gui.util.GuiGlobalActions;
|
||||||
import xyz.alexcrea.cuanvil.gui.util.GuiGlobalItems;
|
import xyz.alexcrea.cuanvil.gui.util.GuiGlobalItems;
|
||||||
import xyz.alexcrea.cuanvil.gui.util.GuiSharedConstant;
|
import xyz.alexcrea.cuanvil.gui.util.GuiSharedConstant;
|
||||||
import xyz.alexcrea.cuanvil.recipe.CustomAnvilRecipeManager;
|
|
||||||
import xyz.alexcrea.cuanvil.util.CasedStringUtil;
|
import xyz.alexcrea.cuanvil.util.CasedStringUtil;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
public class ConflictSubSettingGui extends MappedToListSubSettingGui {
|
public class GroupConfigSubSettingGui extends MappedToListSubSettingGui {
|
||||||
|
|
||||||
private final GroupConfigGui parent;
|
private final GroupConfigGui parent;
|
||||||
private final AbstractMaterialGroup group;
|
private final AbstractMaterialGroup group;
|
||||||
private final PatternPane pane;
|
private final PatternPane pane;
|
||||||
|
|
||||||
public ConflictSubSettingGui(
|
public GroupConfigSubSettingGui(
|
||||||
@NotNull GroupConfigGui parent,
|
@NotNull GroupConfigGui parent,
|
||||||
@NotNull AbstractMaterialGroup group,
|
@NotNull AbstractMaterialGroup group,
|
||||||
@NotNull GuiItem item) {
|
@NotNull GuiItem item) {
|
||||||
|
|
@ -5,11 +5,7 @@ import org.bukkit.command.Command
|
||||||
import org.bukkit.command.CommandExecutor
|
import org.bukkit.command.CommandExecutor
|
||||||
import org.bukkit.command.CommandSender
|
import org.bukkit.command.CommandSender
|
||||||
import xyz.alexcrea.cuanvil.config.ConfigHolder
|
import xyz.alexcrea.cuanvil.config.ConfigHolder
|
||||||
import xyz.alexcrea.cuanvil.gui.config.global.BasicConfigGui
|
import xyz.alexcrea.cuanvil.gui.config.global.*
|
||||||
import xyz.alexcrea.cuanvil.gui.config.global.EnchantConflictGui
|
|
||||||
import xyz.alexcrea.cuanvil.gui.config.global.EnchantCostConfigGui
|
|
||||||
import xyz.alexcrea.cuanvil.gui.config.global.EnchantLimitConfigGui
|
|
||||||
import xyz.alexcrea.cuanvil.gui.config.global.UnitRepairConfigGui
|
|
||||||
import xyz.alexcrea.cuanvil.util.MetricsUtil
|
import xyz.alexcrea.cuanvil.util.MetricsUtil
|
||||||
|
|
||||||
class ReloadExecutor : CommandExecutor {
|
class ReloadExecutor : CommandExecutor {
|
||||||
|
|
@ -43,7 +39,9 @@ class ReloadExecutor : CommandExecutor {
|
||||||
BasicConfigGui.INSTANCE.updateGuiValues()
|
BasicConfigGui.INSTANCE.updateGuiValues()
|
||||||
EnchantCostConfigGui.INSTANCE.updateGuiValues()
|
EnchantCostConfigGui.INSTANCE.updateGuiValues()
|
||||||
EnchantLimitConfigGui.INSTANCE.updateGuiValues()
|
EnchantLimitConfigGui.INSTANCE.updateGuiValues()
|
||||||
|
|
||||||
EnchantConflictGui.INSTANCE.reloadValues()
|
EnchantConflictGui.INSTANCE.reloadValues()
|
||||||
|
GroupConfigGui.INSTANCE.reloadValues()
|
||||||
UnitRepairConfigGui.INSTANCE.reloadValues()
|
UnitRepairConfigGui.INSTANCE.reloadValues()
|
||||||
|
|
||||||
// & update metric
|
// & update metric
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,13 @@ class ItemGroupManager {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
// Path for group type
|
// Path for group type
|
||||||
private const val GROUP_TYPE_PATH = "type"
|
const val GROUP_TYPE_PATH = "type"
|
||||||
|
|
||||||
// Path for included items list
|
// Path for included items list
|
||||||
private const val MATERIAL_LIST_PATH = "items"
|
const val MATERIAL_LIST_PATH = "items"
|
||||||
|
|
||||||
// Path for included groups list
|
// Path for included groups list
|
||||||
private const val GROUP_LIST_PATH = "groups"
|
const val GROUP_LIST_PATH = "groups"
|
||||||
|
|
||||||
// Temporary list of elements in default config that are use in future
|
// Temporary list of elements in default config that are use in future
|
||||||
private val FUTURE_MATERIAL = setOf("PIGLIN_HEAD", "BRUSH")
|
private val FUTURE_MATERIAL = setOf("PIGLIN_HEAD", "BRUSH")
|
||||||
|
|
@ -35,6 +35,15 @@ class ItemGroupManager {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Create group with existing groups
|
||||||
|
fun createGroup(
|
||||||
|
config: ConfigurationSection,
|
||||||
|
name: String
|
||||||
|
): AbstractMaterialGroup{
|
||||||
|
return createGroup(config, groupMap.keys, name)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Create group by key
|
// Create group by key
|
||||||
private fun createGroup(
|
private fun createGroup(
|
||||||
config: ConfigurationSection,
|
config: ConfigurationSection,
|
||||||
|
|
@ -46,7 +55,7 @@ class ItemGroupManager {
|
||||||
|
|
||||||
// Create Material group according to the group type
|
// Create Material group according to the group type
|
||||||
val group: AbstractMaterialGroup
|
val group: AbstractMaterialGroup
|
||||||
if (GroupType.EXCLUDE.equal(groupType)) {
|
if (groupType != null && GroupType.EXCLUDE.equal(groupType)) {
|
||||||
group = ExcludeGroup(key)
|
group = ExcludeGroup(key)
|
||||||
} else {
|
} else {
|
||||||
group = IncludeGroup(key)
|
group = IncludeGroup(key)
|
||||||
|
|
@ -124,7 +133,7 @@ class ItemGroupManager {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class GroupType(private val groupID: String) {
|
enum class GroupType(val groupID: String) {
|
||||||
|
|
||||||
INCLUDE("include"),
|
INCLUDE("include"),
|
||||||
EXCLUDE("exclude")
|
EXCLUDE("exclude")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue