diff --git a/src/main/java/xyz/alexcrea/cuanvil/api/ConflictBuilder.java b/src/main/java/xyz/alexcrea/cuanvil/api/ConflictBuilder.java index f662140..6e1bb58 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/api/ConflictBuilder.java +++ b/src/main/java/xyz/alexcrea/cuanvil/api/ConflictBuilder.java @@ -276,7 +276,7 @@ public class ConflictBuilder { * @return this conflict builder instance. */ @NotNull - public ConflictBuilder addExcludedGroup(@NotNull AbstractMaterialGroup group) { + public ConflictBuilder addExcludedGroup(@NotNull AbstractItemTypeGroup group) { return addExcludedGroup(group.getName()); } @@ -315,7 +315,7 @@ public class ConflictBuilder { * @return This conflict builder instance. */ @NotNull - public ConflictBuilder removeExcludedGroup(@NotNull AbstractMaterialGroup group) { + public ConflictBuilder removeExcludedGroup(@NotNull AbstractItemTypeGroup group) { return removeExcludedGroup(group.getName()); } @@ -352,7 +352,7 @@ public class ConflictBuilder { * @return An Enchant conflict group with this builder parameters. */ public EnchantConflictGroup build() { - AbstractMaterialGroup materials = extractGroups(); + AbstractItemTypeGroup materials = extractGroups(); EnchantConflictGroup conflict = new EnchantConflictGroup(getName(), materials, getMaxBeforeConflict()); appendEnchantments(conflict); @@ -436,12 +436,12 @@ public class ConflictBuilder { * * @return The abstract material group from the builder. */ - protected AbstractMaterialGroup extractGroups() { + protected AbstractItemTypeGroup extractGroups() { ItemGroupManager itemGroupManager = ConfigHolder.ITEM_GROUP_HOLDER.getItemGroupsManager(); - IncludeGroup group = new IncludeGroup(EnchantConflictManager.DEFAULT_GROUP_NAME); + IncludeItemTypeGroup group = new IncludeItemTypeGroup(EnchantConflictManager.DEFAULT_GROUP_NAME); for (String groupName : getExcludedGroupNames()) { - AbstractMaterialGroup materialGroup = itemGroupManager.get(groupName); + AbstractItemTypeGroup materialGroup = itemGroupManager.get(groupName); if (materialGroup == null) { CustomAnvil.instance.getLogger().warning("Material group " + groupName + " do not exist but is ask by conflict " + getName()); diff --git a/src/main/java/xyz/alexcrea/cuanvil/api/MaterialGroupApi.java b/src/main/java/xyz/alexcrea/cuanvil/api/MaterialGroupApi.java index 27381de..3318fe2 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/api/MaterialGroupApi.java +++ b/src/main/java/xyz/alexcrea/cuanvil/api/MaterialGroupApi.java @@ -8,9 +8,9 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import xyz.alexcrea.cuanvil.config.ConfigHolder; import xyz.alexcrea.cuanvil.dependency.DependencyManager; -import xyz.alexcrea.cuanvil.group.AbstractMaterialGroup; -import xyz.alexcrea.cuanvil.group.ExcludeGroup; -import xyz.alexcrea.cuanvil.group.IncludeGroup; +import xyz.alexcrea.cuanvil.group.AbstractItemTypeGroup; +import xyz.alexcrea.cuanvil.group.ExcludeItemTypeGroup; +import xyz.alexcrea.cuanvil.group.IncludeItemTypeGroup; import xyz.alexcrea.cuanvil.group.ItemGroupManager; import xyz.alexcrea.cuanvil.gui.config.global.GroupConfigGui; @@ -36,7 +36,7 @@ public class MaterialGroupApi { * @param group The group to add * @return true if successful. */ - public static boolean addMaterialGroup(@NotNull AbstractMaterialGroup group) { + public static boolean addMaterialGroup(@NotNull AbstractItemTypeGroup group) { return addMaterialGroup(group, false); } @@ -49,7 +49,7 @@ public class MaterialGroupApi { * @param overrideDeleted If we should write even if the group was previously deleted. * @return true if successful. */ - public static boolean addMaterialGroup(@NotNull AbstractMaterialGroup group, boolean overrideDeleted) { + public static boolean addMaterialGroup(@NotNull AbstractItemTypeGroup group, boolean overrideDeleted) { ItemGroupManager itemGroupManager = ConfigHolder.ITEM_GROUP_HOLDER.getItemGroupsManager(); // Test if it exists/existed @@ -61,7 +61,7 @@ public class MaterialGroupApi { if (!writeMaterialGroup(group, false)) return false; - if (group instanceof IncludeGroup includeGroup) { + if (group instanceof IncludeItemTypeGroup includeGroup) { GroupConfigGui configGui = GroupConfigGui.getCurrentInstance(); if (configGui != null) configGui.updateValueForGeneric(includeGroup, true); } @@ -76,25 +76,25 @@ public class MaterialGroupApi { /** * Write a material group to the config file and plan an update of groups. *

- * You may want to use {@link #addMaterialGroup(AbstractMaterialGroup)} instead as it is more performance in most case as this function will reload every conflict. + * You may want to use {@link #addMaterialGroup(AbstractItemTypeGroup)} instead as it is more performance in most case as this function will reload every conflict. * * @param group the group to write * @return true if was written successfully. */ - public static boolean writeMaterialGroup(@NotNull AbstractMaterialGroup group) { + public static boolean writeMaterialGroup(@NotNull AbstractItemTypeGroup group) { return writeMaterialGroup(group, true); } /** * Write a material group to the config file. *

- * You should use {@link #addMaterialGroup(AbstractMaterialGroup)} or {@link #writeMaterialGroup(AbstractMaterialGroup)} instead + * You should use {@link #addMaterialGroup(AbstractItemTypeGroup)} or {@link #writeMaterialGroup(AbstractItemTypeGroup)} instead * * @param group the group to write * @param updatePlanned if we should plan a global update for material groups * @return true if was written successfully. */ - public static boolean writeMaterialGroup(@NotNull AbstractMaterialGroup group, boolean updatePlanned) { + public static boolean writeMaterialGroup(@NotNull AbstractItemTypeGroup group, boolean updatePlanned) { String name = group.getName(); if (name.contains(".")) { CustomAnvil.instance.getLogger().warning("Group " + name + " contain . in its name but should not. this material group is ignored."); @@ -102,9 +102,9 @@ public class MaterialGroupApi { } boolean changed; - if (group instanceof IncludeGroup includeGroup) { + if (group instanceof IncludeItemTypeGroup includeGroup) { changed = writeKnownGroup("include", includeGroup); - } else if (group instanceof ExcludeGroup excludeGroup) { + } else if (group instanceof ExcludeItemTypeGroup excludeGroup) { //TODO work on it when exclude group is reworked throw new UnsupportedOperationException("exclude group is temporarily disable for the time being. sorry"); // This code do not do what is intended ? idk why do it exist @@ -120,12 +120,12 @@ public class MaterialGroupApi { return true; } - private static boolean writeKnownGroup(@NotNull String groupType, @NotNull AbstractMaterialGroup group) { + private static boolean writeKnownGroup(@NotNull String groupType, @NotNull AbstractItemTypeGroup group) { FileConfiguration config = ConfigHolder.ITEM_GROUP_HOLDER.getConfig(); String basePath = group.getName() + "."; Set itemSets = group.getNonGroupInheritedMaterials(); - Set groupSet = group.getGroups(); + Set groupSet = group.getGroups(); boolean empty = true; if (!itemSets.isEmpty()) { @@ -150,7 +150,7 @@ public class MaterialGroupApi { return true; } - private static boolean writeUnknownGroup(@NotNull AbstractMaterialGroup group) { + private static boolean writeUnknownGroup(@NotNull AbstractItemTypeGroup group) { FileConfiguration config = ConfigHolder.ITEM_GROUP_HOLDER.getConfig(); String basePath = group.getName() + "."; @@ -168,8 +168,8 @@ public class MaterialGroupApi { return types.stream().map(item -> item.getKey().getKey().toLowerCase()).toList(); } - public static List materialGroupSetToStringList(@NotNull Set groups) { - return groups.stream().map(AbstractMaterialGroup::getName).toList(); + public static List materialGroupSetToStringList(@NotNull Set groups) { + return groups.stream().map(AbstractItemTypeGroup::getName).toList(); } /** @@ -180,9 +180,9 @@ public class MaterialGroupApi { * @param group The recipe to remove * @return True if the group was present. */ - public static boolean removeGroup(@NotNull AbstractMaterialGroup group) { + public static boolean removeGroup(@NotNull AbstractItemTypeGroup group) { // Remove from registry - AbstractMaterialGroup removed = ConfigHolder.ITEM_GROUP_HOLDER.getItemGroupsManager().groupMap.remove(group.getName()); + AbstractItemTypeGroup removed = ConfigHolder.ITEM_GROUP_HOLDER.getItemGroupsManager().groupMap.remove(group.getName()); if (removed == null) return false; // Delete and save to file @@ -190,7 +190,7 @@ public class MaterialGroupApi { prepareSaveTask(); // Remove from gui - if (group instanceof IncludeGroup includeGroup) { + if (group instanceof IncludeItemTypeGroup includeGroup) { GroupConfigGui configGui = GroupConfigGui.getCurrentInstance(); if (configGui != null) configGui.removeGeneric(includeGroup); } @@ -234,7 +234,7 @@ public class MaterialGroupApi { * @return the abstract group of this name. null if not found. */ @Nullable - public static AbstractMaterialGroup getGroup(@NotNull String groupName) { + public static AbstractItemTypeGroup getGroup(@NotNull String groupName) { return ConfigHolder.ITEM_GROUP_HOLDER.getItemGroupsManager().get(groupName); } @@ -244,7 +244,7 @@ public class MaterialGroupApi { * @return An immutable map of group name as its key and group as mapped value. */ @NotNull - public static Map getRegisteredGroups() { + public static Map getRegisteredGroups() { return Collections.unmodifiableMap(ConfigHolder.ITEM_GROUP_HOLDER.getItemGroupsManager().getGroupMap()); } diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/SelectGroupContainer.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/SelectGroupContainer.java index 49f8b3b..82f68ad 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/SelectGroupContainer.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/SelectGroupContainer.java @@ -1,6 +1,6 @@ package xyz.alexcrea.cuanvil.gui.config; -import xyz.alexcrea.cuanvil.group.AbstractMaterialGroup; +import xyz.alexcrea.cuanvil.group.AbstractItemTypeGroup; import xyz.alexcrea.cuanvil.util.CasedStringUtil; import java.util.ArrayList; @@ -10,22 +10,22 @@ import java.util.Set; public interface SelectGroupContainer { - Set getSelectedGroups(); + Set getSelectedGroups(); - boolean setSelectedGroups(Set groups); + boolean setSelectedGroups(Set groups); - Set illegalGroups(); + Set illegalGroups(); static List getGroupLore(SelectGroupContainer container, String containerType, String groupAction){ // Prepare group lore ArrayList groupLore = new ArrayList<>(); groupLore.add("§7Allow you to select a list of §3Groups §7that this " + containerType + " should " + groupAction); - Set grouos = container.getSelectedGroups(); + Set grouos = container.getSelectedGroups(); if (grouos.isEmpty()) { groupLore.add("§7There is no "+groupAction+"d group for this "+containerType+"."); } else { groupLore.add("§7List of "+groupAction+"d groups for this "+containerType+":"); - Iterator groupIterator = grouos.iterator(); + Iterator groupIterator = grouos.iterator(); boolean greaterThanMax = grouos.size() > 5; int maxindex = (greaterThanMax ? 4 : grouos.size()); diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/EnchantConflictGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/EnchantConflictGui.java index fb42212..065538b 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/EnchantConflictGui.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/EnchantConflictGui.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import xyz.alexcrea.cuanvil.config.ConfigHolder; import xyz.alexcrea.cuanvil.group.EnchantConflictGroup; -import xyz.alexcrea.cuanvil.group.IncludeGroup; +import xyz.alexcrea.cuanvil.group.IncludeItemTypeGroup; import xyz.alexcrea.cuanvil.gui.config.list.MappedGuiListConfigGui; import xyz.alexcrea.cuanvil.gui.config.list.elements.EnchantConflictSubSettingGui; import xyz.alexcrea.cuanvil.gui.util.GuiSharedConstant; @@ -48,7 +48,7 @@ public class EnchantConflictGui extends MappedGuiListConfigGui> { +public class GroupConfigGui extends MappedGuiListConfigGui> { private static GroupConfigGui INSTANCE; @@ -44,7 +44,7 @@ public class GroupConfigGui extends MappedGuiListConfigGui getEveryDisplayableInstanceOfGeneric() { - ArrayList includeGroups = new ArrayList<>(); + protected Collection getEveryDisplayableInstanceOfGeneric() { + ArrayList includeGroups = new ArrayList<>(); - for (AbstractMaterialGroup group : ConfigHolder.ITEM_GROUP_HOLDER.getItemGroupsManager().getGroupMap().values()) { - if (group instanceof IncludeGroup) { - includeGroups.add((IncludeGroup) group); + for (AbstractItemTypeGroup group : ConfigHolder.ITEM_GROUP_HOLDER.getItemGroupsManager().getGroupMap().values()) { + if (group instanceof IncludeItemTypeGroup) { + includeGroups.add((IncludeItemTypeGroup) group); } } return includeGroups; } @Override - protected LazyElement newInstanceOfGui(IncludeGroup group, GuiItem item) { + protected LazyElement newInstanceOfGui(IncludeItemTypeGroup group, GuiItem item) { return new LazyElement<>(item, () -> new GroupConfigSubSettingGui(this, group)); } @@ -84,14 +84,14 @@ public class GroupConfigGui extends MappedGuiListConfigGui getSelectedGroups() { + public Set getSelectedGroups() { return this.enchantConflict.getCantConflictGroup().getGroups(); } @Override - public boolean setSelectedGroups(Set groups) { + public boolean setSelectedGroups(Set groups) { if (!this.shouldWork) { CustomAnvil.instance.getLogger().info("Trying to save " + enchantConflict.toString() + " groups but sub config is destroyed"); return false; @@ -299,7 +299,7 @@ public class EnchantConflictSubSettingGui extends MappedToListSubSettingGui impl // Save on file configuration String[] groupsNames = new String[groups.size()]; int index = 0; - for (AbstractMaterialGroup group : groups) { + for (AbstractItemTypeGroup group : groups) { groupsNames[index++] = group.getName(); } ConfigHolder.CONFLICT_HOLDER.getConfig().set(this.enchantConflict + ".notAffectedGroups", groupsNames); @@ -319,7 +319,7 @@ public class EnchantConflictSubSettingGui extends MappedToListSubSettingGui impl } @Override - public Set illegalGroups() { + public Set illegalGroups() { return Collections.emptySet(); } diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/list/elements/GroupConfigSubSettingGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/list/elements/GroupConfigSubSettingGui.java index fc98bc1..9ae5834 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/list/elements/GroupConfigSubSettingGui.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/list/elements/GroupConfigSubSettingGui.java @@ -33,13 +33,13 @@ import java.util.function.Supplier; public class GroupConfigSubSettingGui extends MappedToListSubSettingGui implements SelectGroupContainer, SelectItemTypeContainer { private final GroupConfigGui parent; - private final IncludeGroup group; + private final IncludeItemTypeGroup group; private final PatternPane pane; private boolean usable = true; public GroupConfigSubSettingGui( @NotNull GroupConfigGui parent, - @NotNull IncludeGroup group) { + @NotNull IncludeItemTypeGroup group) { super(3, "§e" + CasedStringUtil.snakeToUpperSpacedCase(group.getName()) + " §rConfig"); this.parent = parent; @@ -184,12 +184,12 @@ public class GroupConfigSubSettingGui extends MappedToListSubSettingGui implemen } // return a string containing every instance of where this group is used - public static List getUsedLocations(AbstractMaterialGroup group) { + public static List getUsedLocations(AbstractItemTypeGroup group) { ArrayList usageList = new ArrayList<>(); // Test used by another group ItemGroupManager groupManager = ConfigHolder.ITEM_GROUP_HOLDER.getItemGroupsManager(); - for (AbstractMaterialGroup otherGroup : groupManager.getGroupMap().values()) { + for (AbstractItemTypeGroup otherGroup : groupManager.getGroupMap().values()) { if (otherGroup.getGroups().contains(group)) { usageList.add("group " + otherGroup.getName()); } @@ -270,12 +270,12 @@ public class GroupConfigSubSettingGui extends MappedToListSubSettingGui implemen // ---------------------------- @Override - public Set getSelectedGroups() { + public Set getSelectedGroups() { return this.group.getGroups(); } @Override - public boolean setSelectedGroups(Set groups) { + public boolean setSelectedGroups(Set groups) { // update group and referencing groups updateGroup(this.group, groups); @@ -287,7 +287,7 @@ public class GroupConfigSubSettingGui extends MappedToListSubSettingGui implemen return true; } - private void updateGroup(@NotNull AbstractMaterialGroup group, Set groups) { + private void updateGroup(@NotNull AbstractItemTypeGroup group, Set groups) { // Set live configuration group.setGroups(groups); @@ -295,7 +295,7 @@ public class GroupConfigSubSettingGui extends MappedToListSubSettingGui implemen groups = group.getGroups(); // Maybe some group may have been rejected String[] groupNames = new String[groups.size()]; int index = 0; - for (AbstractMaterialGroup otherGroup : groups) { + for (AbstractItemTypeGroup otherGroup : groups) { groupNames[index++] = otherGroup.getName(); } @@ -308,10 +308,10 @@ public class GroupConfigSubSettingGui extends MappedToListSubSettingGui implemen } @Override - public Set illegalGroups() { - Set illegal = new HashSet<>(); + public Set illegalGroups() { + Set illegal = new HashSet<>(); - for (AbstractMaterialGroup otherGroup : ConfigHolder.ITEM_GROUP_HOLDER.getItemGroupsManager().getGroupMap().values()) { + for (AbstractItemTypeGroup otherGroup : ConfigHolder.ITEM_GROUP_HOLDER.getItemGroupsManager().getGroupMap().values()) { if (otherGroup.isReferencing(this.group)) { illegal.add(otherGroup); } @@ -372,24 +372,24 @@ public class GroupConfigSubSettingGui extends MappedToListSubSettingGui implemen // End of SelectMaterialContainer related methods // ---------------------------- - private void updateDirectReferencingGroups(AbstractMaterialGroup referenceTo) { - Collection everyStoredGroups = ConfigHolder.ITEM_GROUP_HOLDER.getItemGroupsManager().getGroupMap().values(); + private void updateDirectReferencingGroups(AbstractItemTypeGroup referenceTo) { + Collection everyStoredGroups = ConfigHolder.ITEM_GROUP_HOLDER.getItemGroupsManager().getGroupMap().values(); List everyConflicts = ConfigHolder.CONFLICT_HOLDER.getConflictManager().getConflictList(); - HashSet toUpdate = new HashSet<>(); - HashSet updateFuture = new HashSet<>(); - HashSet conflictGroupPlanned = new HashSet<>(); + HashSet toUpdate = new HashSet<>(); + HashSet updateFuture = new HashSet<>(); + HashSet conflictGroupPlanned = new HashSet<>(); updateFuture.add(referenceTo); while (!updateFuture.isEmpty()) { - HashSet temp = updateFuture; + HashSet temp = updateFuture; updateFuture = toUpdate; updateFuture.clear(); toUpdate = temp; - for (AbstractMaterialGroup testGroup : toUpdate) { + for (AbstractItemTypeGroup testGroup : toUpdate) { // Update other stored group - for (AbstractMaterialGroup otherGroup : everyStoredGroups) { + for (AbstractItemTypeGroup otherGroup : everyStoredGroups) { if (otherGroup.getGroups().contains(testGroup)) { otherGroup.updateMaterials(); updateFuture.add(otherGroup); @@ -398,22 +398,22 @@ public class GroupConfigSubSettingGui extends MappedToListSubSettingGui implemen // plan update for conflict groups for (EnchantConflictGroup everyConflict : everyConflicts) { - AbstractMaterialGroup conflictGroup = everyConflict.getCantConflictGroup(); + AbstractItemTypeGroup conflictGroup = everyConflict.getCantConflictGroup(); if (conflictGroup.getGroups().contains(testGroup)) { conflictGroupPlanned.add(conflictGroup); } } // Update parent & local by extension - if (testGroup instanceof IncludeGroup) { - this.parent.updateValueForGeneric((IncludeGroup) testGroup, false); + if (testGroup instanceof IncludeItemTypeGroup) { + this.parent.updateValueForGeneric((IncludeItemTypeGroup) testGroup, false); } } } this.parent.update(); // Update conflict group - for (AbstractMaterialGroup conflictGroup : conflictGroupPlanned) { + for (AbstractItemTypeGroup conflictGroup : conflictGroupPlanned) { conflictGroup.updateMaterials(); } diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/GroupSelectSettingGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/GroupSelectSettingGui.java index 70332a2..4bcd86f 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/GroupSelectSettingGui.java +++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/settings/GroupSelectSettingGui.java @@ -14,7 +14,7 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; import xyz.alexcrea.cuanvil.config.ConfigHolder; -import xyz.alexcrea.cuanvil.group.AbstractMaterialGroup; +import xyz.alexcrea.cuanvil.group.AbstractItemTypeGroup; import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui; import xyz.alexcrea.cuanvil.gui.config.SelectGroupContainer; import xyz.alexcrea.cuanvil.gui.config.list.ElementListConfigGui; @@ -32,7 +32,7 @@ public class GroupSelectSettingGui extends AbstractSettingGui { SelectGroupContainer groupContainer; int page; - Set selectedGroups; + Set selectedGroups; public GroupSelectSettingGui(@NotNull String title, ValueUpdatableGui parent, SelectGroupContainer groupContainer, int page) { super(6, title, parent); @@ -71,8 +71,8 @@ public class GroupSelectSettingGui extends AbstractSettingGui { filledEnchant.align(OutlinePane.Alignment.BEGIN); filledEnchant.setOrientation(Orientable.Orientation.HORIZONTAL); - Set illegalGroup = this.groupContainer.illegalGroups(); - for (AbstractMaterialGroup group : ConfigHolder.ITEM_GROUP_HOLDER.getItemGroupsManager().getGroupMap().values()) { + Set illegalGroup = this.groupContainer.illegalGroups(); + for (AbstractItemTypeGroup group : ConfigHolder.ITEM_GROUP_HOLDER.getItemGroupsManager().getGroupMap().values()) { if (illegalGroup.contains(group)) { continue; } @@ -83,7 +83,7 @@ public class GroupSelectSettingGui extends AbstractSettingGui { } - private GuiItem getGuiItemFromGroup(AbstractMaterialGroup group) { + private GuiItem getGuiItemFromGroup(AbstractItemTypeGroup group) { boolean isIn = this.selectedGroups.contains(group); ItemStack item = group.getRepresentativeMaterial().createItemStack(); @@ -122,7 +122,7 @@ public class GroupSelectSettingGui extends AbstractSettingGui { item.setItemMeta(meta); } - private Consumer getGroupItemConsumer(AbstractMaterialGroup group, GuiItem guiItem) { + private Consumer getGroupItemConsumer(AbstractItemTypeGroup group, GuiItem guiItem) { return event -> { event.setCancelled(true); @@ -148,7 +148,7 @@ public class GroupSelectSettingGui extends AbstractSettingGui { @Override public boolean hadChange() { - Set baseGroup = this.groupContainer.getSelectedGroups(); + Set baseGroup = this.groupContainer.getSelectedGroups(); return baseGroup.size() != this.selectedGroups.size() || !baseGroup.containsAll(this.selectedGroups); } diff --git a/src/main/java/xyz/alexcrea/cuanvil/update/plugin/PUpdate_1_11_0.java b/src/main/java/xyz/alexcrea/cuanvil/update/plugin/PUpdate_1_11_0.java index 039e929..429a5a4 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/update/plugin/PUpdate_1_11_0.java +++ b/src/main/java/xyz/alexcrea/cuanvil/update/plugin/PUpdate_1_11_0.java @@ -7,8 +7,8 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import xyz.alexcrea.cuanvil.api.MaterialGroupApi; import xyz.alexcrea.cuanvil.config.ConfigHolder; -import xyz.alexcrea.cuanvil.group.AbstractMaterialGroup; -import xyz.alexcrea.cuanvil.group.IncludeGroup; +import xyz.alexcrea.cuanvil.group.AbstractItemTypeGroup; +import xyz.alexcrea.cuanvil.group.IncludeItemTypeGroup; import javax.annotation.Nonnull; import java.util.List; @@ -56,7 +56,7 @@ public class PUpdate_1_11_0 { private static void handleToolsMigration() { // We migrate the mace conflict if exist and unmodified - AbstractMaterialGroup tools = MaterialGroupApi.getGroup("tools"); + AbstractItemTypeGroup tools = MaterialGroupApi.getGroup("tools"); migrateTools(tools, "pickaxes", PICKAXES); migrateTools(tools, "shovels", SHOVELS); @@ -64,19 +64,19 @@ public class PUpdate_1_11_0 { } private static void migrateTools( - @Nullable AbstractMaterialGroup tools, + @Nullable AbstractItemTypeGroup tools, @NotNull String toolset, @NotNull ItemType[] toolMats) { // Create new group - IncludeGroup group = new IncludeGroup(toolset); + IncludeItemTypeGroup group = new IncludeItemTypeGroup(toolset); group.addAll(toolMats); MaterialGroupApi.addMaterialGroup(group, true); // Try to see if all the materials was in the tools group. and if so, replace it with the new group if (tools == null) return; - if (!(tools instanceof IncludeGroup include)) return; + if (!(tools instanceof IncludeItemTypeGroup include)) return; List types = List.of(toolMats); Set typeSet = include.getNonGroupInheritedMaterials(); diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/datapack/DataPackDependency.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/datapack/DataPackDependency.kt index f853a02..93a61a0 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/datapack/DataPackDependency.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/datapack/DataPackDependency.kt @@ -15,7 +15,7 @@ import xyz.alexcrea.cuanvil.config.ConfigHolder import xyz.alexcrea.cuanvil.dependency.DependencyManager import xyz.alexcrea.cuanvil.enchant.wrapped.CABukkitEnchantment import xyz.alexcrea.cuanvil.enchant.wrapped.CAIncompatibleAllEnchant -import xyz.alexcrea.cuanvil.group.IncludeGroup +import xyz.alexcrea.cuanvil.group.IncludeItemTypeGroup import xyz.alexcrea.cuanvil.update.UpdateUtils import xyz.alexcrea.cuanvil.update.Version import java.io.InputStreamReader @@ -144,7 +144,7 @@ object DataPackDependency { var group = MaterialGroupApi.getGroup(groupName) val exist = group != null - if (group == null) group = IncludeGroup(groupName) + if (group == null) group = IncludeItemTypeGroup(groupName) for (name in section.getStringList("items")) { val key = NamespacedKey.fromString(name.lowercase()) diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/EnchantmentSquaredDependency.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/EnchantmentSquaredDependency.kt index 1ac01ba..1327c95 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/EnchantmentSquaredDependency.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/plugins/EnchantmentSquaredDependency.kt @@ -17,7 +17,7 @@ import xyz.alexcrea.cuanvil.enchant.CAEnchantment import xyz.alexcrea.cuanvil.enchant.CAEnchantmentRegistry import xyz.alexcrea.cuanvil.enchant.bulk.EnchantSquaredBulkOperation import xyz.alexcrea.cuanvil.enchant.wrapped.CAEnchantSquaredEnchantment -import xyz.alexcrea.cuanvil.group.IncludeGroup +import xyz.alexcrea.cuanvil.group.IncludeItemTypeGroup import java.util.* @Suppress("UnstableApiUsage") @@ -104,15 +104,15 @@ class EnchantmentSquaredDependency(private val enchantmentSquaredPlugin: Plugin) private fun writeMissingGroups() { // Write group that do not exist on custom anvil. - val shield = IncludeGroup("shield") + val shield = IncludeItemTypeGroup("shield") shield.addToPolicy(ItemType.SHIELD) MaterialGroupApi.addMaterialGroup(shield) - val elytra = IncludeGroup("elytra") + val elytra = IncludeItemTypeGroup("elytra") elytra.addToPolicy(ItemType.ELYTRA) MaterialGroupApi.addMaterialGroup(elytra) - val trinkets = IncludeGroup("trinkets") + val trinkets = IncludeItemTypeGroup("trinkets") trinkets.addToPolicy(ItemType.ROTTEN_FLESH) MaterialGroupApi.addMaterialGroup(trinkets) } diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/group/AbstractMaterialGroup.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/group/AbstractItemTypeGroup.kt similarity index 82% rename from src/main/kotlin/xyz/alexcrea/cuanvil/group/AbstractMaterialGroup.kt rename to src/main/kotlin/xyz/alexcrea/cuanvil/group/AbstractItemTypeGroup.kt index 20dff07..21167c0 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/group/AbstractMaterialGroup.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/group/AbstractItemTypeGroup.kt @@ -1,10 +1,9 @@ package xyz.alexcrea.cuanvil.group -import com.google.common.collect.ImmutableSet import org.bukkit.inventory.ItemType @Suppress("UnstableApiUsage") -abstract class AbstractMaterialGroup(private val name: String) { +abstract class AbstractItemTypeGroup(private val name: String) { protected val includedItems by lazy { createDefaultSet() } /** @@ -22,21 +21,21 @@ abstract class AbstractMaterialGroup(private val name: String) { /** * Get if a group is referenced by this: */ - abstract fun isReferencing(other: AbstractMaterialGroup): Boolean + abstract fun isReferencing(other: AbstractItemTypeGroup): Boolean /** * Push an item to this group to follow this group policy * * @return this instance. */ - abstract fun addToPolicy(type: ItemType): AbstractMaterialGroup + abstract fun addToPolicy(type: ItemType): AbstractItemTypeGroup /** * Push a list of items to this group to follow this group policy * * @return this instance. */ - fun addAll(vararg types: ItemType): AbstractMaterialGroup { + fun addAll(vararg types: ItemType): AbstractItemTypeGroup { for (type in types) { addToPolicy(type) } @@ -48,14 +47,14 @@ abstract class AbstractMaterialGroup(private val name: String) { * * @return this instance. */ - abstract fun addToPolicy(other: AbstractMaterialGroup): AbstractMaterialGroup + abstract fun addToPolicy(other: AbstractItemTypeGroup): AbstractItemTypeGroup /** * Push a list of group to this group to follow this group policy * * @return this instance. */ - fun addAll(vararg otherList: AbstractMaterialGroup): AbstractMaterialGroup { + fun addAll(vararg otherList: AbstractItemTypeGroup): AbstractItemTypeGroup { for (group in otherList) { addToPolicy(group) } @@ -96,12 +95,12 @@ abstract class AbstractMaterialGroup(private val name: String) { /** * Update the contained groups of this group */ - abstract fun setGroups(groups: MutableSet) + abstract fun setGroups(groups: MutableSet) /** * Get the contained group of this material group */ - abstract fun getGroups(): MutableSet + abstract fun getGroups(): MutableSet open fun getRepresentativeMaterial(): ItemType { // Test inner material diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/group/EnchantConflictGroup.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/group/EnchantConflictGroup.kt index a03a8a9..f0e7137 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/group/EnchantConflictGroup.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/group/EnchantConflictGroup.kt @@ -7,7 +7,7 @@ import xyz.alexcrea.cuanvil.enchant.CAEnchantment @Suppress("UnstableApiUsage") class EnchantConflictGroup( val name: String, - private val cantConflict: AbstractMaterialGroup, + private val cantConflict: AbstractItemTypeGroup, var minBeforeBlock: Int ) { @@ -45,7 +45,7 @@ class EnchantConflictGroup( return true } - fun getCantConflictGroup(): AbstractMaterialGroup { + fun getCantConflictGroup(): AbstractItemTypeGroup { return this.cantConflict } diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/group/EnchantConflictManager.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/group/EnchantConflictManager.kt index cb12a4c..82e5e60 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/group/EnchantConflictManager.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/group/EnchantConflictManager.kt @@ -148,7 +148,7 @@ class EnchantConflictManager { } // Find or create the selected group for the conflict val groupList = section.getStringList(CONFLICT_GROUP_PATH) - val finalGroup = IncludeGroup(DEFAULT_GROUP_NAME) + val finalGroup = IncludeItemTypeGroup(DEFAULT_GROUP_NAME) for (groupName in groupList) { finalGroup.addToPolicy(findGroup(groupName, itemManager, conflictName)) } @@ -161,11 +161,11 @@ class EnchantConflictManager { groupName: String, itemManager: ItemGroupManager, conflictName: String - ): AbstractMaterialGroup { + ): AbstractItemTypeGroup { val group = itemManager.get(groupName) if (group == null) { CustomAnvil.instance.logger.warning("Material group $groupName do not exist but is ask by conflict $conflictName") - return IncludeGroup("error_placeholder") + return IncludeItemTypeGroup("error_placeholder") } return group diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/group/ExcludeGroup.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/group/ExcludeItemTypeGroup.kt similarity index 77% rename from src/main/kotlin/xyz/alexcrea/cuanvil/group/ExcludeGroup.kt rename to src/main/kotlin/xyz/alexcrea/cuanvil/group/ExcludeItemTypeGroup.kt index 6184922..5b49c36 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/group/ExcludeGroup.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/group/ExcludeItemTypeGroup.kt @@ -1,6 +1,5 @@ package xyz.alexcrea.cuanvil.group -import com.google.common.collect.ImmutableSet import io.papermc.paper.registry.RegistryAccess import io.papermc.paper.registry.RegistryKey import org.bukkit.inventory.ItemType @@ -8,7 +7,7 @@ import java.util.* @Deprecated("Need rework to reduce memory cost as not enum set") @Suppress("UnstableApiUsage") -class ExcludeGroup(name: String) : AbstractMaterialGroup(name) { +class ExcludeItemTypeGroup(name: String) : AbstractItemTypeGroup(name) { override fun createDefaultSet(): MutableSet { val types: MutableSet = HashSet() @@ -17,10 +16,10 @@ class ExcludeGroup(name: String) : AbstractMaterialGroup(name) { return types } - private var includedGroup: MutableSet = HashSet() + private var includedGroup: MutableSet = HashSet() private val groupItems by lazy { createDefaultSet() } - override fun isReferencing(other: AbstractMaterialGroup): Boolean { + override fun isReferencing(other: AbstractItemTypeGroup): Boolean { for (materialGroup in includedGroup.iterator()) { if ((materialGroup == other) || (materialGroup.isReferencing(other))) { return true @@ -29,21 +28,21 @@ class ExcludeGroup(name: String) : AbstractMaterialGroup(name) { return false } - override fun addToPolicy(type: ItemType): ExcludeGroup { + override fun addToPolicy(type: ItemType): ExcludeItemTypeGroup { includedItems.remove(type) groupItems.remove(type) return this } - override fun addToPolicy(other: AbstractMaterialGroup): ExcludeGroup { + override fun addToPolicy(other: AbstractItemTypeGroup): ExcludeItemTypeGroup { includedGroup.add(other) groupItems.removeAll(other.getItemTypes()) return this } - override fun setGroups(groups: MutableSet) { + override fun setGroups(groups: MutableSet) { groupItems.clear() groupItems.addAll(includedItems) @@ -56,7 +55,7 @@ class ExcludeGroup(name: String) : AbstractMaterialGroup(name) { } } - override fun getGroups(): MutableSet { + override fun getGroups(): MutableSet { return includedGroup } diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/group/IncludeGroup.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/group/IncludeItemTypeGroup.kt similarity index 75% rename from src/main/kotlin/xyz/alexcrea/cuanvil/group/IncludeGroup.kt rename to src/main/kotlin/xyz/alexcrea/cuanvil/group/IncludeItemTypeGroup.kt index 9d9108e..9191b52 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/group/IncludeGroup.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/group/IncludeItemTypeGroup.kt @@ -1,19 +1,18 @@ package xyz.alexcrea.cuanvil.group -import com.google.common.collect.ImmutableSet import org.bukkit.inventory.ItemType import java.util.* @Suppress("UnstableApiUsage") -class IncludeGroup(name: String) : AbstractMaterialGroup(name) { +class IncludeItemTypeGroup(name: String) : AbstractItemTypeGroup(name) { override fun createDefaultSet(): MutableSet { return HashSet() } - private var includedGroup: MutableSet = HashSet() + private var includedGroup: MutableSet = HashSet() private val groupItems by lazy { createDefaultSet() } - override fun isReferencing(other: AbstractMaterialGroup): Boolean { + override fun isReferencing(other: AbstractItemTypeGroup): Boolean { for (materialGroup in includedGroup.iterator()) { if ((materialGroup == other) || (materialGroup.isReferencing(other))) { return true @@ -22,21 +21,21 @@ class IncludeGroup(name: String) : AbstractMaterialGroup(name) { return false } - override fun addToPolicy(type: ItemType): IncludeGroup { + override fun addToPolicy(type: ItemType): IncludeItemTypeGroup { includedItems.add(type) groupItems.add(type) return this } - override fun addToPolicy(other: AbstractMaterialGroup): IncludeGroup { + override fun addToPolicy(other: AbstractItemTypeGroup): IncludeItemTypeGroup { includedGroup.add(other) groupItems.addAll(other.getItemTypes()) return this } - override fun setGroups(groups: MutableSet) { + override fun setGroups(groups: MutableSet) { groupItems.clear() groupItems.addAll(includedItems) @@ -55,7 +54,7 @@ class IncludeGroup(name: String) : AbstractMaterialGroup(name) { updateMaterials() } - override fun getGroups(): MutableSet { + override fun getGroups(): MutableSet { return includedGroup } diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/group/ItemGroupManager.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/group/ItemGroupManager.kt index 815c778..c72df28 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/group/ItemGroupManager.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/group/ItemGroupManager.kt @@ -24,7 +24,7 @@ class ItemGroupManager { private val FUTURE_MATERIAL = setOf("PIGLIN_HEAD", "BRUSH") } - lateinit var groupMap: LinkedHashMap + lateinit var groupMap: LinkedHashMap // Read and create material groups fun prepareGroups(config: ConfigurationSection) { @@ -42,7 +42,7 @@ class ItemGroupManager { fun createGroup( config: ConfigurationSection, name: String - ): AbstractMaterialGroup { + ): AbstractItemTypeGroup { return createGroup(config, groupMap.keys, name) } @@ -52,16 +52,16 @@ class ItemGroupManager { config: ConfigurationSection, keys: Set, key: String - ): AbstractMaterialGroup { + ): AbstractItemTypeGroup { val groupSection = config.getConfigurationSection(key)!! val groupType = groupSection.getString(GROUP_TYPE_PATH, null) // Create Material group according to the group type - val group: AbstractMaterialGroup + val group: AbstractItemTypeGroup if (groupType != null && GroupType.EXCLUDE.equal(groupType)) { - group = ExcludeGroup(key) + group = ExcludeItemTypeGroup(key) } else { - group = IncludeGroup(key) + group = IncludeItemTypeGroup(key) if (!GroupType.INCLUDE.equal(groupType)) { CustomAnvil.instance.logger.warning("Group $key have an invalid group type. default to Include.") } @@ -74,7 +74,7 @@ class ItemGroupManager { // Read Group elements private fun readGroup( - group: AbstractMaterialGroup, + group: AbstractItemTypeGroup, groupSection: ConfigurationSection, config: ConfigurationSection, keys: Set @@ -141,7 +141,7 @@ class ItemGroupManager { } // Get the selected group or return null if it doesn't exist - fun get(groupName: String): AbstractMaterialGroup? { + fun get(groupName: String): AbstractItemTypeGroup? { return groupMap[groupName] } diff --git a/src/test/java/xyz/alexcrea/cuanvil/api/ConflictBuilderTests.java b/src/test/java/xyz/alexcrea/cuanvil/api/ConflictBuilderTests.java index 670ae4e..15719ca 100644 --- a/src/test/java/xyz/alexcrea/cuanvil/api/ConflictBuilderTests.java +++ b/src/test/java/xyz/alexcrea/cuanvil/api/ConflictBuilderTests.java @@ -3,7 +3,7 @@ package xyz.alexcrea.cuanvil.api; import org.bukkit.NamespacedKey; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import xyz.alexcrea.cuanvil.group.IncludeGroup; +import xyz.alexcrea.cuanvil.group.IncludeItemTypeGroup; import xyz.alexcrea.cuanvil.tests.SharedOnlyMockBukkit; import static org.junit.jupiter.api.Assertions.*; @@ -79,7 +79,7 @@ public class ConflictBuilderTests extends SharedOnlyMockBukkit { @Test void excludedGroup_Group() { - IncludeGroup group = new IncludeGroup("group"); + IncludeItemTypeGroup group = new IncludeItemTypeGroup("group"); assertTrue(builder.getExcludedGroupNames().isEmpty()); assertEquals(builder, builder.addExcludedGroup(group)); @@ -97,7 +97,7 @@ public class ConflictBuilderTests extends SharedOnlyMockBukkit { builder.addEnchantment("bane_of_arthropods"); builder.addEnchantment(NamespacedKey.fromString("bane_of_arthropods")); builder.addExcludedGroup("group"); - builder.addExcludedGroup(new IncludeGroup("group2")); + builder.addExcludedGroup(new IncludeItemTypeGroup("group2")); ConflictBuilder copy = builder.copy(); assertEquals("other", copy.getName()); diff --git a/src/test/java/xyz/alexcrea/cuanvil/api/MaterialGroupApiTests.java b/src/test/java/xyz/alexcrea/cuanvil/api/MaterialGroupApiTests.java index 5831f49..2459705 100644 --- a/src/test/java/xyz/alexcrea/cuanvil/api/MaterialGroupApiTests.java +++ b/src/test/java/xyz/alexcrea/cuanvil/api/MaterialGroupApiTests.java @@ -3,7 +3,7 @@ package xyz.alexcrea.cuanvil.api; import org.bukkit.inventory.ItemType; import org.junit.jupiter.api.Test; import xyz.alexcrea.cuanvil.group.EnchantConflictGroup; -import xyz.alexcrea.cuanvil.group.IncludeGroup; +import xyz.alexcrea.cuanvil.group.IncludeItemTypeGroup; import xyz.alexcrea.cuanvil.tests.ConfigResetCustomAnvilTest; import static org.junit.jupiter.api.Assertions.assertFalse; @@ -15,7 +15,7 @@ public class MaterialGroupApiTests extends ConfigResetCustomAnvilTest { @Test void groupAddAndRemove() { String groupName = "group"; - IncludeGroup group = new IncludeGroup(groupName); + IncludeItemTypeGroup group = new IncludeItemTypeGroup(groupName); group.addToPolicy(ItemType.DIAMOND_PICKAXE); // We do not want it to be empty // Group not being set should not exist @@ -48,7 +48,7 @@ public class MaterialGroupApiTests extends ConfigResetCustomAnvilTest { @Test void writeGroup_Reload() { String groupName = "group"; - IncludeGroup group = new IncludeGroup(groupName); + IncludeItemTypeGroup group = new IncludeItemTypeGroup(groupName); group.addToPolicy(ItemType.DIAMOND_PICKAXE); // We do not want it to be empty // Group not being set should not exist @@ -70,7 +70,7 @@ public class MaterialGroupApiTests extends ConfigResetCustomAnvilTest { @Test void writeGroup_Empty() { String groupName = "group"; - IncludeGroup group = new IncludeGroup(groupName); + IncludeItemTypeGroup group = new IncludeItemTypeGroup(groupName); // Add group and reload assertFalse(MaterialGroupApi.writeMaterialGroup(group)); @@ -87,7 +87,7 @@ public class MaterialGroupApiTests extends ConfigResetCustomAnvilTest { @Test void writeGroup_InvalidDot() { String groupName = "group.group"; - IncludeGroup group = new IncludeGroup(groupName); + IncludeItemTypeGroup group = new IncludeItemTypeGroup(groupName); // Try write group assertFalse(MaterialGroupApi.writeMaterialGroup(group)); @@ -102,7 +102,7 @@ public class MaterialGroupApiTests extends ConfigResetCustomAnvilTest { builder.addExcludedGroup(groupName); EnchantConflictGroup group = builder.build(); - IncludeGroup materialGroup = (IncludeGroup) group.getCantConflictGroup(); + IncludeItemTypeGroup materialGroup = (IncludeItemTypeGroup) group.getCantConflictGroup(); return materialGroup.getGroups().size() == 1; }