From e39bee5952a82248013abd3f2d55be7495db2f0c Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Tue, 23 Jul 2024 03:22:31 +0200 Subject: [PATCH] The API now test if the object were deleted before adding. --- .../xyz/alexcrea/cuanvil/api/ConflictAPI.java | 17 +++++++++++++++- .../cuanvil/api/CustomAnvilRecipeApi.java | 14 +++++++++++++ .../cuanvil/api/MaterialGroupApi.java | 20 ++++++++++++++++++- .../alexcrea/cuanvil/config/ConfigHolder.java | 2 +- 4 files changed, 50 insertions(+), 3 deletions(-) diff --git a/src/main/java/xyz/alexcrea/cuanvil/api/ConflictAPI.java b/src/main/java/xyz/alexcrea/cuanvil/api/ConflictAPI.java index d5b4a8d..7a07392 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/api/ConflictAPI.java +++ b/src/main/java/xyz/alexcrea/cuanvil/api/ConflictAPI.java @@ -30,13 +30,28 @@ public class ConflictAPI { * @return True if successful. */ public static boolean addConflict(@NotNull ConflictBuilder builder){ + return addConflict(builder, false); + } + + /** + * Write and add a conflict. + * Will not write the conflict if it already exists. + * + * @param builder The conflict builder to be based on + * @param overrideDeleted If we should write even if the conflict was previously deleted. + * @return True if successful. + */ + public static boolean addConflict(@NotNull ConflictBuilder builder, boolean overrideDeleted){ FileConfiguration config = ConfigHolder.CONFLICT_HOLDER.getConfig(); + + // Test if conflict can be added + if(!overrideDeleted && ConfigHolder.CONFLICT_HOLDER.isDeleted(builder.getName())) return false; if(config.contains(builder.getName())) return false; if(!writeConflict(builder, false)) return false; - EnchantConflictGroup conflict = builder.build(); + EnchantConflictGroup conflict = builder.build(); // Register conflict ConfigHolder.CONFLICT_HOLDER.getConflictManager().addConflict(conflict); diff --git a/src/main/java/xyz/alexcrea/cuanvil/api/CustomAnvilRecipeApi.java b/src/main/java/xyz/alexcrea/cuanvil/api/CustomAnvilRecipeApi.java index f879539..e5172f8 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/api/CustomAnvilRecipeApi.java +++ b/src/main/java/xyz/alexcrea/cuanvil/api/CustomAnvilRecipeApi.java @@ -29,10 +29,24 @@ public class CustomAnvilRecipeApi { * @return True if successful. */ public static boolean addRecipe(@NotNull AnvilRecipeBuilder builder){ + return addRecipe(builder, false); + } + + /** + * Write and add a custom anvil recipe. + * Will not write the recipe if it already exists. + * + * @param builder The recipe builder to be based on + * @param overrideDeleted If we should write even if the recipe was previously deleted. + * @return True if successful. + */ + public static boolean addRecipe(@NotNull AnvilRecipeBuilder builder, boolean overrideDeleted){ FileConfiguration config = ConfigHolder.CUSTOM_RECIPE_HOLDER.getConfig(); String name = builder.getName(); + if(!overrideDeleted && ConfigHolder.CUSTOM_RECIPE_HOLDER.isDeleted(builder.getName())) return false; if(config.contains(builder.getName())) return false; + if(builder.getName().contains(".")) { CustomAnvil.instance.getLogger().warning("Custom anvil recipe " + name + " contain \".\" in its name but should not. this recipe is ignored."); return false; diff --git a/src/main/java/xyz/alexcrea/cuanvil/api/MaterialGroupApi.java b/src/main/java/xyz/alexcrea/cuanvil/api/MaterialGroupApi.java index 91db14c..0cbb650 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/api/MaterialGroupApi.java +++ b/src/main/java/xyz/alexcrea/cuanvil/api/MaterialGroupApi.java @@ -27,16 +27,34 @@ public class MaterialGroupApi { private static int saveChangeTask = -1; private static int reloadChangeTask = -1; + /** * Write and add a group. * Will not write the group if it already exists. * - * @param group the group to add + * @param group The group to add * @return true if successful. */ public static boolean addMaterialGroup(@NotNull AbstractMaterialGroup group){ + return addMaterialGroup(group, false); + } + + /** + * Write and add a group. + * Will not write the group if it already exists. + * + * @param group The group to add + * @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){ ItemGroupManager itemGroupManager = ConfigHolder.ITEM_GROUP_HOLDER.getItemGroupsManager(); + + // Test if it exists/existed + if(!overrideDeleted && ConfigHolder.ITEM_GROUP_HOLDER.isDeleted(group.getName())) return false; if(itemGroupManager.get(group.getName()) != null) return false; + + // Add group itemGroupManager.getGroupMap().put(group.getName(), group); if(!writeMaterialGroup(group, false)) return false; diff --git a/src/main/java/xyz/alexcrea/cuanvil/config/ConfigHolder.java b/src/main/java/xyz/alexcrea/cuanvil/config/ConfigHolder.java index cfce8fd..2037e23 100644 --- a/src/main/java/xyz/alexcrea/cuanvil/config/ConfigHolder.java +++ b/src/main/java/xyz/alexcrea/cuanvil/config/ConfigHolder.java @@ -245,7 +245,7 @@ public abstract class ConfigHolder { * @param objectPath The object path to delete. * @return True if successful. */ - private boolean wasDeleted(String objectPath){ + public boolean isDeleted(String objectPath){ if(this.deletedListConfig == null) return false; return this.deletedListConfig.getBoolean(objectPath, false);