From 43b4e72c49a25cafd2ce407b31782a461f7033ba Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Sun, 27 Apr 2025 17:59:04 +0200 Subject: [PATCH] add missing groups --- .../cuanvil/dependency/DependencyManager.kt | 4 +- ...{DataPackTest.kt => DataPackDependency.kt} | 52 ++++++++++++++++++- .../datapack/bracken/item_groups.yml | 15 ++++++ 3 files changed, 68 insertions(+), 3 deletions(-) rename src/main/kotlin/xyz/alexcrea/cuanvil/dependency/datapack/{DataPackTest.kt => DataPackDependency.kt} (78%) create mode 100644 src/main/resources/datapack/bracken/item_groups.yml diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt index 1eaaa0e..cb612a4 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/DependencyManager.kt @@ -9,7 +9,7 @@ import org.bukkit.event.inventory.PrepareAnvilEvent import org.bukkit.inventory.AnvilInventory import org.bukkit.inventory.ItemStack import xyz.alexcrea.cuanvil.config.ConfigHolder -import xyz.alexcrea.cuanvil.dependency.datapack.DataPackTest +import xyz.alexcrea.cuanvil.dependency.datapack.DataPackDependency import xyz.alexcrea.cuanvil.dependency.gui.ExternGuiTester import xyz.alexcrea.cuanvil.dependency.gui.GuiTesterSelector import xyz.alexcrea.cuanvil.dependency.packet.PacketManager @@ -85,7 +85,7 @@ object DependencyManager { enchantmentSquaredCompatibility?.registerPluginConfiguration() // datapacks - DataPackTest.handleDatapackConfigs() + DataPackDependency.handleDatapackConfigs() } fun registerEnchantments() { diff --git a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/datapack/DataPackTest.kt b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/datapack/DataPackDependency.kt similarity index 78% rename from src/main/kotlin/xyz/alexcrea/cuanvil/dependency/datapack/DataPackTest.kt rename to src/main/kotlin/xyz/alexcrea/cuanvil/dependency/datapack/DataPackDependency.kt index 13a29c2..8538224 100644 --- a/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/datapack/DataPackTest.kt +++ b/src/main/kotlin/xyz/alexcrea/cuanvil/dependency/datapack/DataPackDependency.kt @@ -1,19 +1,22 @@ package xyz.alexcrea.cuanvil.dependency.datapack import io.delilaheve.CustomAnvil +import org.bukkit.Material import org.bukkit.NamespacedKey import org.bukkit.configuration.file.FileConfiguration import org.bukkit.configuration.file.YamlConfiguration import xyz.alexcrea.cuanvil.api.ConflictBuilder import xyz.alexcrea.cuanvil.api.EnchantmentApi +import xyz.alexcrea.cuanvil.api.MaterialGroupApi import xyz.alexcrea.cuanvil.config.ConfigHolder import xyz.alexcrea.cuanvil.enchant.wrapped.CABukkitEnchantment import xyz.alexcrea.cuanvil.enchant.wrapped.CAIncompatibleAllEnchant +import xyz.alexcrea.cuanvil.group.IncludeGroup import xyz.alexcrea.cuanvil.update.UpdateUtils import xyz.alexcrea.cuanvil.update.Version import java.io.InputStreamReader -object DataPackTest { +object DataPackDependency { private val START_DETECT_VERSION = Version(1, 19, 0) /** @@ -62,9 +65,17 @@ object DataPackTest { } private fun configureDatapack(pack: String) { + val itemGroups = javaClass.getResource("/datapack/$pack/item_groups.yml") val itemConflict = javaClass.getResource("/datapack/$pack/item_conflict.yml") val enchantConflict = javaClass.getResource("/datapack/$pack/enchant_conflict.yml") + if (itemGroups != null) { + val reader = InputStreamReader(itemGroups.openStream()) + val yml = YamlConfiguration.loadConfiguration(reader) + + handleItemGroups(yml) + } + val newConflictList = ArrayList() var needSave = false if (itemConflict != null) { @@ -90,6 +101,45 @@ object DataPackTest { } } + // Order matter for this file + // Could rewrite to not matter but not really important, so I keep it like that + private fun handleItemGroups(yml: YamlConfiguration) { + for (groupName in yml.getKeys(false)) { + val section = yml.getConfigurationSection(groupName) ?: continue + + var group = MaterialGroupApi.getGroup(groupName) + val exist = group != null + + if(group == null) group = IncludeGroup(groupName) + + for (name in section.getStringList("items")) { + val mat = Material.getMaterial(name.uppercase()) + if(mat == null){ + CustomAnvil.instance.logger.warning("Could not find material $name for item group $groupName") + continue + } + group.addToPolicy(mat) + } + for (name in section.getStringList("groups")) { + val otherGroup = MaterialGroupApi.getGroup(name) + if(otherGroup == null){ + CustomAnvil.instance.logger.warning("Could not find sub group $name for group $groupName") + continue + } + + group.addToPolicy(otherGroup) + } + + group.updateMaterials() + + if(exist){ + MaterialGroupApi.writeMaterialGroup(group) + }else{ + MaterialGroupApi.addMaterialGroup(group, true) + } + } + } + private fun addItemConflicts(yml: FileConfiguration, conflictList: MutableList) { for (ench in yml.getKeys(false)) { val groups = yml.getStringList(ench) diff --git a/src/main/resources/datapack/bracken/item_groups.yml b/src/main/resources/datapack/bracken/item_groups.yml new file mode 100644 index 0000000..8248f0c --- /dev/null +++ b/src/main/resources/datapack/bracken/item_groups.yml @@ -0,0 +1,15 @@ +horse_armor: + items: + - leather_horse_armor + - iron_horse_armor + - golden_horse_armor + - diamond_horse_armor + +wolf_armor: + items: + - wolf_armor + +pet_armor: + groups: + - wolf_armor + - horse_armor \ No newline at end of file