mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-06-23 16:16:17 +02:00
Improve registry and config (#33)
Use namespace instead of name to identify enchantments
This commit is contained in:
parent
a00bb919f4
commit
7029254526
22 changed files with 822 additions and 885 deletions
|
|
@ -119,7 +119,7 @@ public class ConflictAPI {
|
|||
private static List<String> extractEnchantments(@NotNull ConflictBuilder builder){
|
||||
List<String> result = new ArrayList<>(builder.getEnchantmentNames());
|
||||
for (NamespacedKey enchantmentKey : builder.getEnchantmentKeys()) {
|
||||
result.add(enchantmentKey.getKey());
|
||||
result.add(enchantmentKey.toString());
|
||||
}
|
||||
|
||||
return result;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import xyz.alexcrea.cuanvil.enchant.CAEnchantment;
|
|||
import xyz.alexcrea.cuanvil.group.*;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
|
|
@ -372,7 +373,7 @@ public class ConflictBuilder {
|
|||
*/
|
||||
protected void appendEnchantments(@NotNull EnchantConflictGroup conflict){
|
||||
for (String enchantmentName : getEnchantmentNames()){
|
||||
if(appendEnchantment(conflict, EnchantmentApi.getByName(enchantmentName))){
|
||||
if(appendEnchantments(conflict, EnchantmentApi.getListByName(enchantmentName)) == 0){
|
||||
CustomAnvil.instance.getLogger().warning("Could not find enchantment " + enchantmentName + " for conflict " + getName());
|
||||
ConflictAPI.logConflictOrigin(this);
|
||||
}
|
||||
|
|
@ -399,6 +400,24 @@ public class ConflictBuilder {
|
|||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Append a list of enchantments.
|
||||
*
|
||||
* @param conflict The conflict target
|
||||
* @param enchantments List of enchantment to add
|
||||
* @return Number of enchantment added
|
||||
*/
|
||||
protected static int appendEnchantments(@NotNull EnchantConflictGroup conflict, @NotNull List<CAEnchantment> enchantments){
|
||||
int numberValid = 0;
|
||||
for (CAEnchantment enchantment : enchantments) {
|
||||
if(appendEnchantment(conflict, enchantment)){
|
||||
numberValid++;
|
||||
}
|
||||
}
|
||||
|
||||
return numberValid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract group abstract material group.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ import xyz.alexcrea.cuanvil.gui.config.global.EnchantCostConfigGui;
|
|||
import xyz.alexcrea.cuanvil.gui.config.global.EnchantLimitConfigGui;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
|
@ -104,7 +105,7 @@ public class EnchantmentApi {
|
|||
* @return True if successful.
|
||||
*/
|
||||
public static boolean unregisterEnchantment(@NotNull NamespacedKey key){
|
||||
CAEnchantment enchantment = CAEnchantmentRegistry.getInstance().getByKey(key);
|
||||
CAEnchantment enchantment = CAEnchantment.getByKey(key);
|
||||
return unregisterEnchantment(enchantment);
|
||||
}
|
||||
|
||||
|
|
@ -126,7 +127,7 @@ public class EnchantmentApi {
|
|||
*/
|
||||
@Nullable
|
||||
public static CAEnchantment getByKey(@NotNull NamespacedKey key){
|
||||
return CAEnchantmentRegistry.getInstance().getByKey(key);
|
||||
return CAEnchantment.getByKey(key);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -134,10 +135,22 @@ public class EnchantmentApi {
|
|||
*
|
||||
* @param name The name used to fetch
|
||||
* @return The custom anvil enchantment of this name. null if not found.
|
||||
* @deprecated use {@link #getListByName(String)}
|
||||
*/
|
||||
@Deprecated(since = "1.6.3")
|
||||
@Nullable
|
||||
public static CAEnchantment getByName(@NotNull String name){
|
||||
return CAEnchantmentRegistry.getInstance().getByName(name);
|
||||
return CAEnchantment.getByName(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get list of enchantment using the provided name.
|
||||
*
|
||||
* @param name The name used to fetch
|
||||
* @return List of custom anvil enchantments of this name. May be empty if not found.
|
||||
*/
|
||||
public static List<CAEnchantment> getListByName(@NotNull String name){
|
||||
return CAEnchantment.getListByName(name);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -167,9 +180,9 @@ public class EnchantmentApi {
|
|||
|
||||
|
||||
private static void writeDefaultConfig(FileConfiguration defaultConfig, CAEnchantment enchantment) {
|
||||
defaultConfig.set("enchant_limits." + enchantment.getKey().getKey(), enchantment.defaultMaxLevel());
|
||||
defaultConfig.set("enchant_limits." + enchantment.getKey(), enchantment.defaultMaxLevel());
|
||||
|
||||
String basePath = "enchant_values." + enchantment.getKey().getKey();
|
||||
String basePath = "enchant_values." + enchantment.getKey();
|
||||
EnchantmentRarity rarity = enchantment.defaultRarity();
|
||||
|
||||
defaultConfig.set(basePath + ".item", rarity.getItemValue());
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import xyz.alexcrea.cuanvil.group.EnchantConflictGroup;
|
|||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
|
|
@ -226,12 +227,24 @@ public interface CAEnchantment {
|
|||
}
|
||||
|
||||
/**
|
||||
* Gets a list of all the unoptimised enchantments.
|
||||
* @param name The enchantment name
|
||||
* @return List of enchantment.
|
||||
* Gets the enchantment by the provided name.
|
||||
* @param name Name to fetch.
|
||||
* @return Registered enchantment. null if absent.
|
||||
*
|
||||
* @deprecated use {@link #getListByName(String)}
|
||||
*/
|
||||
@Deprecated(since = "1.6.3")
|
||||
static @Nullable CAEnchantment getByName(@NotNull String name){
|
||||
return CAEnchantmentRegistry.getInstance().getByName(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets list of enchantment using the provided name.
|
||||
* @param name Name to fetch.
|
||||
* @return List of registered enchantment.
|
||||
*/
|
||||
static List<CAEnchantment> getListByName(@NotNull String name){
|
||||
return CAEnchantmentRegistry.getInstance().getListByName(name);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ public class CAEnchantmentRegistry {
|
|||
|
||||
// Register enchantment functions
|
||||
private final HashMap<NamespacedKey, CAEnchantment> byKeyMap;
|
||||
private final HashMap<String, CAEnchantment> byNameMap;
|
||||
private final HashMap<String, List<CAEnchantment>> byNameMap;
|
||||
|
||||
private final SortedSet<CAEnchantment> nameSortedEnchantments;
|
||||
|
||||
|
|
@ -62,6 +62,8 @@ public class CAEnchantmentRegistry {
|
|||
|
||||
}
|
||||
|
||||
private static boolean hasWarnedRegistering = false;
|
||||
|
||||
/**
|
||||
* Can be used to register new enchantment.
|
||||
* <p>
|
||||
|
|
@ -73,19 +75,25 @@ public class CAEnchantmentRegistry {
|
|||
public boolean register(@NotNull CAEnchantment enchantment){
|
||||
if(byKeyMap.containsKey(enchantment.getKey())){
|
||||
CustomAnvil.instance.getLogger().log(Level.WARNING,
|
||||
"Duplicate registered enchantment. This should NOT happen.",
|
||||
"Duplicate registered enchantment. This should NOT happen any time.\n" +
|
||||
"If you are a custom anvil developer. You maybe custom anvil detected your enchantment as a bukkit enchantment. " +
|
||||
"maybe remove enchantment with the same key before registering yours",
|
||||
new IllegalStateException(enchantment.getKey()+" enchantment was already registered"));
|
||||
return false;
|
||||
}
|
||||
if(byNameMap.containsKey(enchantment.getName())){
|
||||
|
||||
if((!hasWarnedRegistering) && byNameMap.containsKey(enchantment.getName())){
|
||||
hasWarnedRegistering = true;
|
||||
|
||||
CustomAnvil.instance.getLogger().log(Level.WARNING,
|
||||
"Duplicate registered enchantment name. There will have issue. " +
|
||||
"\nI hope this do not happen to you on a production server. If it do, there is probably a plugin trying to register an enchantment with the same name than another one",
|
||||
new IllegalStateException(enchantment.getKey()+" enchantment name was already registered"));
|
||||
"Duplicate registered enchantment name. Please check that configuration is using namespace.");
|
||||
}
|
||||
|
||||
byKeyMap.put(enchantment.getKey(), enchantment);
|
||||
byNameMap.put(enchantment.getName(), enchantment);
|
||||
|
||||
byNameMap.putIfAbsent(enchantment.getName(), new ArrayList<>());
|
||||
byNameMap.get(enchantment.getName()).add(enchantment);
|
||||
|
||||
nameSortedEnchantments.add(enchantment);
|
||||
|
||||
if(!enchantment.isGetOptimised()){
|
||||
|
|
@ -112,7 +120,7 @@ public class CAEnchantmentRegistry {
|
|||
public boolean unregister(@Nullable CAEnchantment enchantment){
|
||||
if(enchantment == null) return false;
|
||||
byKeyMap.remove(enchantment.getKey());
|
||||
byNameMap.remove(enchantment.getName());
|
||||
byNameMap.get(enchantment.getName()).remove(enchantment);
|
||||
|
||||
nameSortedEnchantments.remove(enchantment);
|
||||
|
||||
|
|
@ -135,10 +143,26 @@ public class CAEnchantmentRegistry {
|
|||
* Gets the enchantment by the provided name.
|
||||
* @param name Name to fetch.
|
||||
* @return Registered enchantment. null if absent.
|
||||
*
|
||||
* @deprecated use {@link #getListByName(String)}
|
||||
*/
|
||||
@Deprecated(since = "1.6.3")
|
||||
@Nullable
|
||||
public CAEnchantment getByName(@NotNull String name){
|
||||
return byNameMap.get(name);
|
||||
List<CAEnchantment> enchantments = getListByName(name);
|
||||
if(enchantments.isEmpty()) return null;
|
||||
|
||||
return enchantments.get(0);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets list of enchantment using the provided name.
|
||||
* @param name Name to fetch.
|
||||
* @return List of registered enchantment.
|
||||
*/
|
||||
@NotNull
|
||||
public List<CAEnchantment> getListByName(@NotNull String name){
|
||||
return byNameMap.getOrDefault(name, Collections.emptyList());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -44,24 +44,16 @@ public class EnchantCostConfigGui extends AbstractEnchantConfigGui<EnchantCostSe
|
|||
|
||||
@Override
|
||||
public EnchantCostSettingsGui.EnchantCostSettingFactory createFactory(CAEnchantment enchant) {
|
||||
String key = enchant.getKey().getKey().toLowerCase(Locale.ENGLISH);
|
||||
String prettyKey = CasedStringUtil.snakeToUpperSpacedCase(key);
|
||||
String key = enchant.getKey().toString().toLowerCase(Locale.ENGLISH);
|
||||
String prettyKey = CasedStringUtil.snakeToUpperSpacedCase(key.replace(":", "_"));
|
||||
|
||||
// try to find rarity. default to 0 if not found
|
||||
EnchantmentRarity rarity = enchant.defaultRarity();
|
||||
try {
|
||||
rarity = EnchantmentProperties.valueOf(key.toUpperCase(Locale.ENGLISH)).getRarity();
|
||||
} catch (IllegalArgumentException ignored) {
|
||||
}
|
||||
|
||||
return EnchantCostSettingsGui.enchantCostFactory(prettyKey + " Level Cost", this,
|
||||
ConfigHolder.DEFAULT_CONFIG, SECTION_NAME + '.' + key,
|
||||
return new EnchantCostSettingsGui.EnchantCostSettingFactory(prettyKey + " Cost", this,
|
||||
SECTION_NAME + '.' + key, ConfigHolder.DEFAULT_CONFIG,
|
||||
Arrays.asList(
|
||||
"§7How many level should " + prettyKey,
|
||||
"§7cost when applied by book or by another item."
|
||||
),
|
||||
0, 255,
|
||||
rarity.getItemValue(), rarity.getBookValue(),
|
||||
enchant, 0, 255,
|
||||
1, 10, 50);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package xyz.alexcrea.cuanvil.gui.config.global;
|
||||
|
||||
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
|
||||
import io.delilaheve.util.ConfigOptions;
|
||||
import org.bukkit.Material;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import xyz.alexcrea.cuanvil.config.ConfigHolder;
|
||||
|
|
@ -37,17 +38,23 @@ public class EnchantLimitConfigGui extends AbstractEnchantConfigGui<IntSettingsG
|
|||
|
||||
@Override
|
||||
public IntSettingsGui.IntSettingFactory createFactory(CAEnchantment enchant) {
|
||||
String key = enchant.getKey().getKey().toLowerCase(Locale.ROOT);
|
||||
String prettyKey = CasedStringUtil.snakeToUpperSpacedCase(key);
|
||||
String key = enchant.getKey().toString().toLowerCase(Locale.ROOT);
|
||||
String prettyKey = CasedStringUtil.snakeToUpperSpacedCase(key.replace(":", "_"));
|
||||
|
||||
return new IntSettingsGui.IntSettingFactory(prettyKey + " Level Limit", this,
|
||||
return new IntSettingsGui.IntSettingFactory(prettyKey + " Limit", this,
|
||||
SECTION_NAME + '.' + key, ConfigHolder.DEFAULT_CONFIG,
|
||||
Collections.singletonList(
|
||||
"§7Maximum applied level of " + prettyKey
|
||||
),
|
||||
0, 255,
|
||||
enchant.defaultMaxLevel(),
|
||||
1, 5, 10, 50, 100);
|
||||
1, 5, 10, 50, 100){
|
||||
|
||||
@Override
|
||||
public int getConfiguredValue() {
|
||||
return ConfigOptions.INSTANCE.enchantLimit(enchant);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package xyz.alexcrea.cuanvil.gui.config.global;
|
||||
|
||||
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
|
||||
import io.delilaheve.util.ConfigOptions;
|
||||
import org.bukkit.Material;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import xyz.alexcrea.cuanvil.config.ConfigHolder;
|
||||
|
|
@ -34,8 +35,8 @@ public class EnchantMergeLimitConfigGui extends AbstractEnchantConfigGui<IntSett
|
|||
|
||||
@Override
|
||||
public IntSettingsGui.IntSettingFactory createFactory(CAEnchantment enchant) {
|
||||
String key = enchant.getKey().getKey().toLowerCase(Locale.ROOT);
|
||||
String prettyKey = CasedStringUtil.snakeToUpperSpacedCase(key);
|
||||
String key = enchant.getKey().toString().toLowerCase(Locale.ROOT);
|
||||
String prettyKey = CasedStringUtil.snakeToUpperSpacedCase(key.replace(":", "_"));
|
||||
|
||||
return new IntSettingsGui.IntSettingFactory(prettyKey + " Merge Limit", this,
|
||||
SECTION_NAME + '.' + key, ConfigHolder.DEFAULT_CONFIG,
|
||||
|
|
@ -48,7 +49,13 @@ public class EnchantMergeLimitConfigGui extends AbstractEnchantConfigGui<IntSett
|
|||
"§e-1 §7(default) will set the merge limit to enchantment's maximum level"
|
||||
),
|
||||
-1, 255, -1,
|
||||
1, 5, 10, 50, 100);
|
||||
1, 5, 10, 50, 100){
|
||||
|
||||
@Override
|
||||
public int getConfiguredValue() {
|
||||
return ConfigOptions.INSTANCE.maxBeforeMergeDisabled(enchant);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -258,7 +258,7 @@ public class EnchantConflictSubSettingGui extends MappedToListSubSettingGui impl
|
|||
String[] enchantKeys = new String[enchantments.size()];
|
||||
int index = 0;
|
||||
for (CAEnchantment enchantment : enchantments) {
|
||||
enchantKeys[index++] = enchantment.getKey().getKey();
|
||||
enchantKeys[index++] = enchantment.getKey().toString();
|
||||
}
|
||||
ConfigHolder.CONFLICT_HOLDER.getConfig().set(enchantConflict + ".enchantments", enchantKeys);
|
||||
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.github.stefvanschie.inventoryframework.gui.type.util.Gui;
|
|||
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 org.bukkit.Material;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
|
|
@ -13,6 +14,7 @@ import org.bukkit.inventory.meta.ItemMeta;
|
|||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import xyz.alexcrea.cuanvil.config.ConfigHolder;
|
||||
import xyz.alexcrea.cuanvil.enchant.CAEnchantment;
|
||||
import xyz.alexcrea.cuanvil.gui.ValueUpdatableGui;
|
||||
import xyz.alexcrea.cuanvil.gui.util.GuiGlobalActions;
|
||||
import xyz.alexcrea.cuanvil.gui.util.GuiGlobalItems;
|
||||
|
|
@ -237,73 +239,45 @@ public class EnchantCostSettingsGui extends IntSettingsGui {
|
|||
return super.hadChange() || nowBook != beforeBook;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an int setting factory from setting's parameters.
|
||||
*
|
||||
* @param title The title of the gui.
|
||||
* @param parent Parent gui to go back when completed.
|
||||
* @param config Configuration holder of this setting.
|
||||
* @param configPath Configuration path of this setting.
|
||||
* @param displayLore Gui display item lore.
|
||||
* @param min Minimum value of this setting.
|
||||
* @param max Maximum value of this setting.
|
||||
* @param defaultItemVal Default item value if not found on the config.
|
||||
* @param defaultBookVal Default book value if not found on the config.
|
||||
* @param steps List of step the value can increment/decrement.
|
||||
* List's size should be between 1 (included) and 3 (included).
|
||||
* it is visually preferable to have an odd number of step.
|
||||
* If step only contain 1 value, no step item should be displayed.
|
||||
* @return A factory for an enchant cost setting gui.
|
||||
*/
|
||||
public static EnchantCostSettingFactory enchantCostFactory(
|
||||
@NotNull String title, @NotNull ValueUpdatableGui parent,
|
||||
@NotNull ConfigHolder config, @NotNull String configPath,
|
||||
@Nullable List<String> displayLore,
|
||||
int min, int max, int defaultItemVal, int defaultBookVal,
|
||||
int... steps) {
|
||||
return new EnchantCostSettingFactory(
|
||||
title, parent,
|
||||
configPath, config,
|
||||
displayLore,
|
||||
min, max, defaultItemVal, defaultBookVal, steps);
|
||||
}
|
||||
|
||||
/**
|
||||
* A factory for an enchantment cost setting gui that hold setting's information.
|
||||
*/
|
||||
public static class EnchantCostSettingFactory extends IntSettingsGui.IntSettingFactory {
|
||||
|
||||
int defaultBookVal;
|
||||
@NotNull CAEnchantment enchantment;
|
||||
|
||||
/**
|
||||
* Constructor for an enchantment cost setting gui factory.
|
||||
*
|
||||
* @param title The title of the gui.
|
||||
* @param parent Parent gui to go back when completed.
|
||||
* @param configPath Configuration path of this setting.
|
||||
* @param config Configuration holder of this setting.
|
||||
* @param displayLore Gui display item lore.
|
||||
* @param min Minimum value of this setting.
|
||||
* @param max Maximum value of this setting.
|
||||
* @param defaultItemVal Default item value if not found on the config.
|
||||
* @param defaultBookVal Default book value if not found on the config.
|
||||
* @param steps List of step the value can increment/decrement.
|
||||
* List's size should be between 1 (included) and 3 (included).
|
||||
* it is visually preferable to have an odd number of step.
|
||||
* If step only contain 1 value, no step item should be displayed.
|
||||
* @param title The title of the gui.
|
||||
* @param parent Parent gui to go back when completed.
|
||||
* @param configPath Configuration path of this setting.
|
||||
* @param config Configuration holder of this setting.
|
||||
* @param displayLore Gui display item lore.
|
||||
* @param min Minimum value of this setting.
|
||||
* @param max Maximum value of this setting.
|
||||
* @param enchantment Enchantment to change the cost to
|
||||
* @param steps List of step the value can increment/decrement.
|
||||
* List's size should be between 1 (included) and 3 (included).
|
||||
* it is visually preferable to have an odd number of step.
|
||||
* If step only contain 1 value, no step item should be displayed.
|
||||
*/
|
||||
protected EnchantCostSettingFactory(
|
||||
public EnchantCostSettingFactory(
|
||||
@NotNull String title, ValueUpdatableGui parent,
|
||||
@NotNull String configPath, @NotNull ConfigHolder config,
|
||||
@Nullable List<String> displayLore,
|
||||
int min, int max, int defaultItemVal, int defaultBookVal,
|
||||
int... steps) {
|
||||
@NotNull CAEnchantment enchantment,
|
||||
int min, int max, int... steps) {
|
||||
|
||||
super(title, parent,
|
||||
configPath, config,
|
||||
displayLore,
|
||||
min, max, defaultItemVal, steps);
|
||||
this.defaultBookVal = defaultBookVal;
|
||||
min, max, enchantment.defaultRarity().getItemValue(),
|
||||
steps);
|
||||
|
||||
this.defaultBookVal = enchantment.defaultRarity().getBookValue();
|
||||
this.enchantment = enchantment;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -311,14 +285,14 @@ public class EnchantCostSettingsGui extends IntSettingsGui {
|
|||
*/
|
||||
@Override
|
||||
public int getConfiguredValue() {
|
||||
return this.config.getConfig().getInt(this.configPath + ITEM_PATH, this.defaultVal);
|
||||
return ConfigOptions.INSTANCE.enchantmentValue(enchantment, false);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The configured value for the enchant setting book value.
|
||||
*/
|
||||
public int getConfiguredBookValue() {
|
||||
return this.config.getConfig().getInt(this.configPath + BOOK_PATH, this.defaultBookVal);
|
||||
return ConfigOptions.INSTANCE.enchantmentValue(enchantment, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -45,13 +45,13 @@ public class Update_1_21 {
|
|||
addToStringList(groupConfig, "can_unbreak.groups", "mace");
|
||||
|
||||
// Add new enchant conflicts
|
||||
addToStringList(conflictConfig, "restriction_density.enchantments", "density");
|
||||
addToStringList(conflictConfig, "restriction_density.enchantments", "minecraft:density");
|
||||
addToStringList(conflictConfig, "restriction_density.notAffectedGroups", "mace", "enchanted_book");
|
||||
|
||||
addToStringList(conflictConfig, "restriction_breach.enchantments", "breach");
|
||||
addToStringList(conflictConfig, "restriction_breach.enchantments", "minecraft:breach");
|
||||
addToStringList(conflictConfig, "restriction_breach.notAffectedGroups", "mace", "enchanted_book");
|
||||
|
||||
addToStringList(conflictConfig, "restriction_wind_burst.enchantments", "wind_burst");
|
||||
addToStringList(conflictConfig, "restriction_wind_burst.enchantments", "minecraft:wind_burst");
|
||||
addToStringList(conflictConfig, "restriction_wind_burst.notAffectedGroups", "mace", "enchanted_book");
|
||||
|
||||
// Add mace to conflicts
|
||||
|
|
@ -59,13 +59,14 @@ public class Update_1_21 {
|
|||
addToStringList(conflictConfig, "restriction_smite.notAffectedGroups", "mace");
|
||||
addToStringList(conflictConfig, "restriction_bane_of_arthropods.notAffectedGroups", "mace");
|
||||
|
||||
addToStringList(conflictConfig, "mace_enchant_conflict.enchantments", "density", "breach", "smite", "bane_of_arthropods");
|
||||
addToStringList(conflictConfig, "mace_enchant_conflict.enchantments",
|
||||
"minecraft:density", "minecraft:breach", "minecraft:smite", "minecraft:bane_of_arthropods");
|
||||
conflictConfig.set("mace_enchant_conflict.maxEnchantmentBeforeConflict", 1);
|
||||
|
||||
// Add level limit
|
||||
baseConfig.set("enchant_limits.density", 5);
|
||||
baseConfig.set("enchant_limits.breach", 4);
|
||||
baseConfig.set("enchant_limits.wind_burst", 3);
|
||||
baseConfig.set("enchant_limits.minecraft:density", 5);
|
||||
baseConfig.set("enchant_limits.minecraft:breach", 4);
|
||||
baseConfig.set("enchant_limits.minecraft:wind_burst", 3);
|
||||
|
||||
// Add enchant values
|
||||
baseConfig.set("enchant_values.density.item", 1);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue