diff --git a/src/main/java/xyz/alexcrea/cuanvil/api/UnitRepairApi.java b/src/main/java/xyz/alexcrea/cuanvil/api/UnitRepairApi.java
index f5df41bc..bc50c162 100644
--- a/src/main/java/xyz/alexcrea/cuanvil/api/UnitRepairApi.java
+++ b/src/main/java/xyz/alexcrea/cuanvil/api/UnitRepairApi.java
@@ -3,16 +3,18 @@ package xyz.alexcrea.cuanvil.api;
import io.delilaheve.CustomAnvil;
import kotlin.Triple;
import org.bukkit.Material;
-import org.bukkit.NamespacedKey;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.jetbrains.annotations.NotNull;
import xyz.alexcrea.cuanvil.config.ConfigHolder;
import xyz.alexcrea.cuanvil.dependency.DependencyManager;
import xyz.alexcrea.cuanvil.gui.config.global.UnitRepairConfigGui;
+import xyz.alexcrea.cuanvil.gui.config.list.MappedGuiListConfigGui;
import xyz.alexcrea.cuanvil.gui.config.list.UnitRepairElementListGui;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
/**
* Custom Anvil api for unit repair.
@@ -20,8 +22,7 @@ import java.util.*;
@SuppressWarnings("unused")
public class UnitRepairApi {
- private UnitRepairApi() {
- }
+ private UnitRepairApi(){}
private static Object saveChangeTask = null;
@@ -34,20 +35,7 @@ public class UnitRepairApi {
* @param repairable The item to be repaired.
* @return true if successful.
*/
- public static boolean addUnitRepair(@NotNull Material unit, @NotNull Material repairable) {
- return addUnitRepair(unit, repairable, 0.25, false);
- }
-
- /**
- * Write and add a custom anvil unit repair recipe.
- * Will not write the recipe if it already exists or was deleted.
- * Set the value to minecraft default value (0.25 = 25%)
- *
- * @param unit The unit material used to repair the bellow item.
- * @param repairable The item to be repaired.
- * @return true if successful.
- */
- public static boolean addUnitRepair(@NotNull NamespacedKey unit, @NotNull NamespacedKey repairable) {
+ public static boolean addUnitRepair(@NotNull Material unit, @NotNull Material repairable){
return addUnitRepair(unit, repairable, 0.25, false);
}
@@ -60,7 +48,7 @@ public class UnitRepairApi {
* @param value The amount to be repaired by every unit. (1% = 0.01)
* @return true if successful.
*/
- public static boolean addUnitRepair(@NotNull Material unit, @NotNull Material repairable, double value) {
+ public static boolean addUnitRepair(@NotNull Material unit, @NotNull Material repairable, double value){
return addUnitRepair(unit, repairable, value, false);
}
@@ -74,26 +62,12 @@ public class UnitRepairApi {
* @param overrideDeleted If we should write even if the recipe was previously deleted.
* @return true if successful.
*/
- public static boolean addUnitRepair(@NotNull Material unit, @NotNull Material repairable, double value, boolean overrideDeleted) {
- return addUnitRepair(unit.getKey(), repairable.getKey(), value, overrideDeleted);
- }
-
- /**
- * Write and add a custom anvil unit repair recipe.
- * Will not write the recipe if it already exists.
- *
- * @param unit The unit material used to repair the bellow item.
- * @param repairable The item to be repaired.
- * @param value The amount to be repaired by every unit. (1% = 0.01)
- * @param overrideDeleted If we should write even if the recipe was previously deleted.
- * @return true if successful.
- */
- public static boolean addUnitRepair(@NotNull NamespacedKey unit, @NotNull NamespacedKey repairable, double value, boolean overrideDeleted) {
+ public static boolean addUnitRepair(@NotNull Material unit, @NotNull Material repairable, double value, boolean overrideDeleted){
FileConfiguration config = ConfigHolder.UNIT_REPAIR_HOLDER.getConfig();
- String path = unit.toString().toLowerCase() + "." + repairable.toString().toLowerCase();
+ String path = unit.name().toLowerCase() + "." + repairable.name().toLowerCase();
- if (!overrideDeleted && ConfigHolder.UNIT_REPAIR_HOLDER.isDeleted(path)) return false;
- if (config.contains(path)) return false;
+ if(!overrideDeleted && ConfigHolder.UNIT_REPAIR_HOLDER.isDeleted(path)) return false;
+ if(config.contains(path)) return false;
// Set unit repair
return setUnitRepair(unit, repairable, value);
@@ -108,24 +82,11 @@ public class UnitRepairApi {
* @param value The amount to be repaired by every unit. (1% = 0.01)
* @return true if successful.
*/
- public static boolean setUnitRepair(@NotNull Material unit, @NotNull Material repairable, double value) {
- return setUnitRepair(unit.getKey(), repairable.getKey(), value);
- }
-
- /**
- * Write and add a custom anvil unit repair recipe.
- * Do not check if it previously existed or exist.
- *
- * @param unit The unit material used to repair the bellow item.
- * @param repairable The item to be repaired.
- * @param value The amount to be repaired by every unit. (1% = 0.01)
- * @return true if successful.
- */
- public static boolean setUnitRepair(@NotNull NamespacedKey unit, @NotNull NamespacedKey repairable, double value) {
+ public static boolean setUnitRepair(@NotNull Material unit, @NotNull Material repairable, double value){
FileConfiguration config = ConfigHolder.UNIT_REPAIR_HOLDER.getConfig();
- String repairableName = repairable.toString().toLowerCase();
- String path = unit.toString().toLowerCase() + "." + repairableName;
+ String repairableName = repairable.name().toLowerCase();
+ String path = unit.name().toLowerCase() + "." + repairableName;
// Add to config then prepare save
config.set(path, value);
@@ -133,10 +94,10 @@ public class UnitRepairApi {
// Add to gui
UnitRepairConfigGui repairConfigGui = UnitRepairConfigGui.getCurrentInstance();
- if (repairConfigGui != null) {
+ if(repairConfigGui != null) {
UnitRepairElementListGui elementGui = repairConfigGui.getInstanceOrCreate(unit).getStored();
- if (elementGui != null) elementGui.updateValueForGeneric(repairable, true);
+ if(elementGui != null) elementGui.updateValueForGeneric(repairableName, true);
repairConfigGui.updateValueForGeneric(unit, true);
}
@@ -150,56 +111,48 @@ public class UnitRepairApi {
* @param repairable The item used to be repaired.
* @return true if successful.
*/
- public static boolean removeUnitRepair(@NotNull Material unit, @NotNull Material repairable) {
- return removeUnitRepair(unit.getKey(), repairable.getKey());
- }
-
- /**
- * Remove a custom anvil unit repair recipe.
- *
- * @param unit The unit material used to repair the bellow item.
- * @param repairable The item used to be repaired.
- * @return true if successful.
- */
- public static boolean removeUnitRepair(@NotNull NamespacedKey unit, @NotNull NamespacedKey repairable) {
+ public static boolean removeUnitRepair(@NotNull Material unit, @NotNull Material repairable){
// Delete every possible variation and save to file
+ String unitName = unit.name();
+ String repairableName = repairable.name();
FileConfiguration config = ConfigHolder.UNIT_REPAIR_HOLDER.getConfig();
- config.set(unit.getKey() + "." + repairable.getKey(), null);
- config.set(unit.getKey() + "." + repairable, null);
- config.set(unit + "." + repairable.getKey(), null);
- config.set(unit + "." + repairable, null);
+ config.set(unitName.toLowerCase() + "." + repairableName.toUpperCase(), null);
+ config.set(unitName.toUpperCase() + "." + repairableName.toLowerCase(), null);
+ config.set(unitName.toUpperCase() + "." + repairableName.toUpperCase(), null);
+ config.set(unitName.toLowerCase() + "." + repairableName.toLowerCase(), null);
// Test if it was the last value of this section
boolean lastValue = false;
- if (config.isConfigurationSection(unit.toString())) {
- ConfigurationSection section = config.getConfigurationSection(unit.toString());
+ if(config.isConfigurationSection(unitName.toLowerCase())) {
+ ConfigurationSection section = config.getConfigurationSection(unitName.toLowerCase());
- if (section != null && section.getKeys(false).isEmpty()) {
+ if(section != null && section.getKeys(false).isEmpty()) {
lastValue = true;
- config.set(unit.toString(), null);
+ config.set(unitName.toLowerCase(), null);
}
- } else if (config.isConfigurationSection(unit.getKey())) {
- ConfigurationSection section = config.getConfigurationSection(unit.getKey());
- if (section != null && section.getKeys(false).isEmpty()) {
+ } else if (config.isConfigurationSection(unitName.toUpperCase())) {
+ ConfigurationSection section = config.getConfigurationSection(unitName.toUpperCase());
+ if(section != null && section.getKeys(false).isEmpty()) {
lastValue = true;
- config.set(unit.getKey(), null);
+ config.set(unitName.toUpperCase(), null);
}
} else lastValue = true;
- ConfigHolder.UNIT_REPAIR_HOLDER.delete(unit.toString().toLowerCase() + "." + repairable.toString().toLowerCase());
+ // We only need to "delete" as the lower case to be counted as deleted
+ ConfigHolder.UNIT_REPAIR_HOLDER.delete(unitName.toLowerCase() + "." + repairableName.toLowerCase());
prepareSaveTask();
// Remove from gui
UnitRepairConfigGui repairConfigGui = UnitRepairConfigGui.getCurrentInstance();
- if (repairConfigGui != null) {
+ if(repairConfigGui != null) {
UnitRepairElementListGui elementGui = repairConfigGui.getInstanceOrCreate(unit).getStored();
- if (elementGui != null) elementGui.removeGeneric(repairable);
- if (lastValue) {
+ if(elementGui != null) elementGui.removeGeneric(repairableName);
+ if(lastValue){
repairConfigGui.removeGeneric(unit);
}
}
@@ -211,9 +164,9 @@ public class UnitRepairApi {
* Prepare a task to save custom unit repair recipe configuration.
*/
private static void prepareSaveTask() {
- if (saveChangeTask != null) return;
+ if(saveChangeTask != null) return;
- saveChangeTask = DependencyManager.scheduler.scheduleGlobally(CustomAnvil.instance, () -> {
+ saveChangeTask = DependencyManager.scheduler.scheduleGlobally(CustomAnvil.instance, ()->{
ConfigHolder.UNIT_REPAIR_HOLDER.saveToDisk(true);
saveChangeTask = null;
});
@@ -221,7 +174,6 @@ public class UnitRepairApi {
/**
* Get every unit repair recipes.
- *
* @return An immutable collection of unit repair recipes.
*
* Each element of the provided triple represent a part of the recipe
@@ -230,32 +182,29 @@ public class UnitRepairApi {
*
Second object is the item to be repaired.
* Last object is the amount to be repaired by every unit. (1% = 0.01)
*
- * @deprecated some may be missing. use {@link #getModernUnitRepairs()}
- *
*/
- @Deprecated
@NotNull
- public static List> getUnitRepairs() {
+ public static List> getUnitRepairs(){
List> mutableList = new ArrayList<>();
FileConfiguration config = ConfigHolder.UNIT_REPAIR_HOLDER.getConfig();
for (String unitKey : config.getKeys(false)) {
// Test if config section exist
- if (!config.isConfigurationSection(unitKey)) continue;
+ if(!config.isConfigurationSection(unitKey)) continue;
// Test if unit is a material
Material unit = Material.getMaterial(unitKey.toUpperCase());
- if (unit == null) continue;
+ if(unit == null) continue;
// Iterate over reparable items
ConfigurationSection section = config.getConfigurationSection(unitKey);
for (String repairableKey : section.getKeys(false)) {
// Test if value section exist
- if (!section.isDouble(repairableKey)) continue;
+ if(!section.isDouble(repairableKey)) continue;
// Test if repairable is valid a material
Material repairable = Material.getMaterial(repairableKey.toUpperCase());
- if (repairable == null) continue;
+ if(repairable == null) continue;
// Add the values
mutableList.add(new Triple<>(unit, repairable, section.getDouble(repairableKey)));
@@ -266,53 +215,4 @@ public class UnitRepairApi {
return Collections.unmodifiableList(mutableList);
}
- /**
- * Get every unit repair recipes.
- *
- * @return An immutable collection of unit repair recipes.
- *
- *
First map contain a key the unit material used to repair the bellow item and value the second map
- * Second map contain as key the item to be repaired and as value the amount to be repaired by every unit. (1% = 0.01)
- *
- */
- @NotNull
- public static Map> getModernUnitRepairs() {
- Map> mutableList = new HashMap<>();
-
- FileConfiguration config = ConfigHolder.UNIT_REPAIR_HOLDER.getConfig();
- for (String unitKey : config.getKeys(false)) {
- // Test if config section exist
- if (!config.isConfigurationSection(unitKey)) continue;
-
- // Test if unit is a material
- NamespacedKey unit = NamespacedKey.fromString(unitKey.toLowerCase());
- if (unit == null) continue;
-
- Map map;
- if (!mutableList.containsKey(unit)) {
- map = new HashMap<>();
- mutableList.put(unit, map);
- } else {
- map = mutableList.get(unit);
- }
-
- // Iterate over reparable items
- ConfigurationSection section = config.getConfigurationSection(unitKey);
- for (String repairableKey : section.getKeys(false)) {
- // Test if value section exist
- if (!section.isDouble(repairableKey)) continue;
-
- // Test if repairable is valid a material
- NamespacedKey repairable = NamespacedKey.fromString(repairableKey.toLowerCase());
- if (repairable == null) continue;
-
- // Add the values
- map.put(repairable, section.getDouble(repairableKey));
-
- }
- }
-
- return mutableList;
- }
-
}
diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/GroupConfigGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/GroupConfigGui.java
index 7f85278e..fa53174c 100644
--- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/GroupConfigGui.java
+++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/GroupConfigGui.java
@@ -1,7 +1,6 @@
package xyz.alexcrea.cuanvil.gui.config.global;
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
-import com.github.stefvanschie.inventoryframework.gui.type.util.Gui;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
@@ -44,10 +43,6 @@ public class GroupConfigGui extends MappedGuiListConfigGui
@@ -105,29 +103,4 @@ public class ItemConfigGui extends ChestGui {
return enchantConflictGui;
}
-
- private GroupConfigGui getGroupConfigGui(NamespacedKey material) {
- if (groupConfigGui == null) {
- groupConfigGui = new GroupConfigGui(this);
- groupConfigGui.setFilter(group ->
- group.contain(material)
- );
- groupConfigGui.init();
- }
-
- return groupConfigGui;
- }
-
- /*private UnitRepairConfigGui getUnitRepairConfigGui(NamespacedKey material) {
- if (unitRepairConfigGui == null) {
- unitRepairConfigGui = new UnitRepairConfigGui(this);
- unitRepairConfigGui.setFilter(otherMat ->
- group.contain(material) //TODO check material & what inside
- );
- unitRepairConfigGui.init();
- }
-
- return unitRepairConfigGui;
- }*/
-
}
diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/UnitRepairConfigGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/UnitRepairConfigGui.java
index cc4a981f..c3e8bcb0 100644
--- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/UnitRepairConfigGui.java
+++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/global/UnitRepairConfigGui.java
@@ -1,10 +1,9 @@
package xyz.alexcrea.cuanvil.gui.config.global;
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
-import com.github.stefvanschie.inventoryframework.gui.type.util.Gui;
import io.delilaheve.CustomAnvil;
import org.bukkit.Material;
-import org.bukkit.NamespacedKey;
+import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.jetbrains.annotations.NotNull;
@@ -14,25 +13,24 @@ import xyz.alexcrea.cuanvil.gui.config.ask.SelectItemTypeGui;
import xyz.alexcrea.cuanvil.gui.config.list.MappedGuiListConfigGui;
import xyz.alexcrea.cuanvil.gui.config.list.UnitRepairElementListGui;
import xyz.alexcrea.cuanvil.util.CasedStringUtil;
-import xyz.alexcrea.cuanvil.util.MaterialUtil;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
-import java.util.HashSet;
public class UnitRepairConfigGui extends
- MappedGuiListConfigGui> {
+ MappedGuiListConfigGui> {
private static UnitRepairConfigGui INSTANCE;
@Nullable
- public static UnitRepairConfigGui getCurrentInstance() {
+ public static UnitRepairConfigGui getCurrentInstance(){
return INSTANCE;
}
@NotNull
- public static UnitRepairConfigGui getInstance() {
- if (INSTANCE == null) INSTANCE = new UnitRepairConfigGui();
+ public static UnitRepairConfigGui getInstance(){
+ if(INSTANCE == null) INSTANCE = new UnitRepairConfigGui();
return INSTANCE;
}
@@ -43,12 +41,8 @@ public class UnitRepairConfigGui extends
init();
}
- public UnitRepairConfigGui(Gui parent) {
- super("Unit Repair Config", parent);
- }
-
@Override
- protected LazyElement newInstanceOfGui(NamespacedKey material, GuiItem item) {
+ protected LazyElement newInstanceOfGui(Material material, GuiItem item) {
return new LazyElement<>(item, () -> {
UnitRepairElementListGui element = new UnitRepairElementListGui(material, this);
element.init();
@@ -57,34 +51,23 @@ public class UnitRepairConfigGui extends
}
@Override
- protected ItemStack createItemForGeneric(@NotNull NamespacedKey material) {
- var unitConfig = ConfigHolder.UNIT_REPAIR_HOLDER.getConfig();
- var section = unitConfig.getConfigurationSection(material.toString().toLowerCase());
- var legacySection = unitConfig.getConfigurationSection(material.toString().toLowerCase());
+ protected ItemStack createItemForGeneric(Material material) {
+ ConfigurationSection materialSection = ConfigHolder.UNIT_REPAIR_HOLDER.getConfig().getConfigurationSection(material.name().toLowerCase());
+ String materialName = CasedStringUtil.snakeToUpperSpacedCase(material.name().toLowerCase());
- String materialName = CasedStringUtil.snakeToUpperSpacedCase(material.getKey().toLowerCase());
-
- var display = MaterialUtil.INSTANCE.getMatFromKey(material);
-
- if (display == null || display.isAir()) {
- display = Material.BARRIER;
+ if(material.isAir()){
+ material = Material.BARRIER;
}
- var reparable = new HashSet();
- if (section != null)
- reparable.addAll(section.getKeys(false));
- if (legacySection != null)
- reparable.addAll(legacySection.getKeys(false));
+ int reparableItemCount = materialSection == null ? 0 : materialSection.getKeys(false).size(); // Probably an expensive call but... why not
- var reparableItemCount = reparable.size();
-
- ItemStack item = new ItemStack(display);
+ ItemStack item = new ItemStack(material);
ItemMeta meta = item.getItemMeta();
assert meta != null;
- meta.setDisplayName("§eRepaired by " + materialName);
+ meta.setDisplayName("§eRepaired by " +materialName);
meta.setLore(Arrays.asList(
- "§7There is currently §e" + reparableItemCount + " §7reparable item with " + materialName,
+ "§7There is currently §e" +reparableItemCount+ " §7reparable item with "+materialName,
"§7Click here to open the menu to edit reparable item by " + materialName
));
@@ -94,16 +77,13 @@ public class UnitRepairConfigGui extends
}
@Override
- protected Collection getEveryInstanceOfGeneric() {
- var materials = new HashSet();
- var config = ConfigHolder.UNIT_REPAIR_HOLDER.getConfig();
+ protected Collection getEveryInstanceOfGeneric() {
+ ArrayList materials = new ArrayList<>();
- for (String matName : config.getKeys(false)) {
- if(!config.isConfigurationSection(matName)) continue;
-
- NamespacedKey material = NamespacedKey.fromString(matName.toLowerCase());
- if (material != null) {
- materials.add(material);
+ for (String matName : ConfigHolder.UNIT_REPAIR_HOLDER.getConfig().getKeys(false)) {
+ Material mat = Material.getMaterial(matName.toUpperCase());
+ if(mat != null){
+ materials.add(mat);
}
}
return materials;
@@ -133,7 +113,7 @@ public class UnitRepairConfigGui extends
"§7You like to be an unit repair item",
this,
(itemStack, player) -> {
- NamespacedKey type = MaterialUtil.INSTANCE.getCustomType(itemStack);
+ Material type = itemStack.getType();
// Add new material
updateValueForGeneric(type, true);
@@ -146,9 +126,9 @@ public class UnitRepairConfigGui extends
}
@NotNull
- public LazyElement getInstanceOrCreate(NamespacedKey mat) {
+ public LazyElement getInstanceOrCreate(Material mat){
LazyElement element = this.elementGuiMap.get(mat);
- if (element == null) {
+ if(element == null){
updateValueForGeneric(mat, false);
element = this.elementGuiMap.get(mat);
@@ -161,10 +141,8 @@ public class UnitRepairConfigGui extends
protected String genericDisplayedName() {
return "this function Should not be used.";
}
-
@Override // Not used in this implementation.
- protected NamespacedKey createAndSaveNewEmptyGeneric(String name) {
+ protected Material createAndSaveNewEmptyGeneric(String name) {
return null;
}
-
}
diff --git a/src/main/java/xyz/alexcrea/cuanvil/gui/config/list/UnitRepairElementListGui.java b/src/main/java/xyz/alexcrea/cuanvil/gui/config/list/UnitRepairElementListGui.java
index 9b879fdc..c9f2ada2 100644
--- a/src/main/java/xyz/alexcrea/cuanvil/gui/config/list/UnitRepairElementListGui.java
+++ b/src/main/java/xyz/alexcrea/cuanvil/gui/config/list/UnitRepairElementListGui.java
@@ -3,14 +3,12 @@ package xyz.alexcrea.cuanvil.gui.config.list;
import com.github.stefvanschie.inventoryframework.gui.GuiItem;
import com.github.stefvanschie.inventoryframework.gui.type.util.Gui;
import org.bukkit.Material;
-import org.bukkit.NamespacedKey;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.HumanEntity;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.meta.Damageable;
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.gui.config.ask.SelectItemTypeGui;
import xyz.alexcrea.cuanvil.gui.config.global.UnitRepairConfigGui;
@@ -19,25 +17,26 @@ import xyz.alexcrea.cuanvil.gui.config.settings.DoubleSettingGui;
import xyz.alexcrea.cuanvil.gui.util.GuiGlobalItems;
import xyz.alexcrea.cuanvil.gui.util.GuiSharedConstant;
import xyz.alexcrea.cuanvil.util.CasedStringUtil;
-import xyz.alexcrea.cuanvil.util.MaterialUtil;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
import java.util.function.Consumer;
-public class UnitRepairElementListGui extends SettingGuiListConfigGui implements ElementMappedToListGui {
+public class UnitRepairElementListGui extends SettingGuiListConfigGui implements ElementMappedToListGui {
- private final NamespacedKey parentMaterial;
+ private final Material parentMaterial;
private final UnitRepairConfigGui parentGui;
private final String materialName;
private boolean shouldWork = true;
-
- public UnitRepairElementListGui(@NotNull NamespacedKey parentMaterial,
+ public UnitRepairElementListGui(@NotNull Material parentMaterial,
@NotNull UnitRepairConfigGui parentGui) {
- super("§e" + CasedStringUtil.snakeToUpperSpacedCase(parentMaterial.getKey().toLowerCase()) + " §rUnit repair");
+ super("§e" + CasedStringUtil.snakeToUpperSpacedCase(parentMaterial.name().toLowerCase()) + " §rUnit repair");
this.parentMaterial = parentMaterial;
this.parentGui = parentGui;
- this.materialName = CasedStringUtil.snakeToUpperSpacedCase(parentMaterial.getKey().toLowerCase());
+ this.materialName = CasedStringUtil.snakeToUpperSpacedCase(parentMaterial.name().toLowerCase());
GuiGlobalItems.addBackItem(this.backgroundPane, parentGui);
}
@@ -55,7 +54,7 @@ public class UnitRepairElementListGui extends SettingGuiListConfigGui getCreateClickConsumer() {
return event -> {
event.setCancelled(true);
- if (!this.shouldWork) {
+ if(!this.shouldWork){
return;
}
event.setCancelled(true);
@@ -67,28 +66,28 @@ public class UnitRepairElementListGui extends SettingGuiListConfigGui {
ItemMeta meta = itemStack.getItemMeta();
- NamespacedKey type = MaterialUtil.INSTANCE.getCustomType(itemStack);
+ Material type = itemStack.getType();
- if (!(meta instanceof Damageable)) {
+ if(!(meta instanceof Damageable) || (type.getMaxDurability() <= 0)) {
player.sendMessage("§cThis item can't be damaged, so it can't be repaired.");
return;
}
- if (type.equals(this.parentMaterial)) {
+ if(type == this.parentMaterial){
player.sendMessage("§cItem can't repair something of the same type.");
return;
}
- String materialName = type.toString();
+ String materialName = type.name().toLowerCase();
// Add new material
- ConfigHolder.UNIT_REPAIR_HOLDER.getConfig().set(parentMaterial.toString().toLowerCase() + "." + materialName, 0.25);
+ ConfigHolder.UNIT_REPAIR_HOLDER.getConfig().set(parentMaterial.name().toLowerCase() + "." + materialName,0.25);
if (GuiSharedConstant.TEMPORARY_DO_SAVE_TO_DISK_EVERY_CHANGE) {
ConfigHolder.UNIT_REPAIR_HOLDER.saveToDisk(GuiSharedConstant.TEMPORARY_DO_BACKUP_EVERY_SAVE);
}
// Update gui
- updateValueForGeneric(type, true);
+ updateValueForGeneric(materialName, true);
this.parentGui.updateValueForGeneric(this.parentMaterial, true);
@@ -107,17 +106,17 @@ public class UnitRepairElementListGui extends SettingGuiListConfigGui getEveryInstanceOfGeneric() {
- Set keys = new HashSet<>();
- if (!this.shouldWork) {
+ protected Collection getEveryInstanceOfGeneric() {
+ ArrayList keys = new ArrayList<>();
+ if(!this.shouldWork){
return keys;
}
- ConfigurationSection legacySection = ConfigHolder.UNIT_REPAIR_HOLDER.getConfig().getConfigurationSection(parentMaterial.getKey().toLowerCase());
- ConfigurationSection materialSection = ConfigHolder.UNIT_REPAIR_HOLDER.getConfig().getConfigurationSection(parentMaterial.toString().toLowerCase());
-
- addAllKeys(legacySection, keys);
- addAllKeys(materialSection, keys);
-
+ ConfigurationSection materialSection = ConfigHolder.UNIT_REPAIR_HOLDER.getConfig().getConfigurationSection(parentMaterial.name().toLowerCase());
+ if(materialSection == null){
+ return keys;
+ }
+ keys.addAll(materialSection.getKeys(false));
return keys;
}
- private void addAllKeys(@Nullable ConfigurationSection section, @NotNull Set keys) {
- if (section == null) return;
- for (var key : section.getKeys(false)) {
- var material = NamespacedKey.fromString(key);
- if (material == null) continue;
-
- keys.add(material);
- }
- }
-
- private Material materialFromName(NamespacedKey material) {
- Material mat = MaterialUtil.INSTANCE.getMatFromKey(material);
- if (mat == null || mat.isAir()) return Material.BARRIER;
+ private Material materialFromName(String materialName){
+ Material mat = Material.getMaterial(materialName.toUpperCase());
+ if(mat == null || mat.isAir()) return Material.BARRIER;
return mat;
}
@@ -175,8 +163,7 @@ public class UnitRepairElementListGui extends SettingGuiListConfigGui 0) return result
-
- // Get default
- val userDefault = config.getDouble(UNIT_REPAIR_DEFAULT_PATH, DEFAULT_DEFAULT_UNIT_REPAIR)
- if (userDefault <= 0)
- return DEFAULT_DEFAULT_UNIT_REPAIR
- return userDefault
+ return getRepairAmount(this, section, userDefault)
}
- private fun findRepairValue(
- self: ItemStack,
- other: ItemStack,
- config: FileConfiguration
- ): Double? {
- val material = other.customType
- val selfType = self.customType
-
- val result = checkSection(config, material.toString(), selfType)
- if (result != null) return result
-
- return checkSection(config, material.key, selfType)
- }
-
- fun checkSection(
- config: FileConfiguration,
- path: String,
- material: NamespacedKey
- ): Double? {
- val section = config.getConfigurationSection(path) ?: return null
-
- if (section.isDouble(material.toString()))
- return section.getDouble(material.toString())
- if (section.isDouble(material.key))
- return section.getDouble(material.key)
-
- return null
+ /**
+ * Get the item % repaired by this configuration section of a unit repair.
+ * null if not found.
+ * If value is set to less than or equal to 0 then it will be set to default
+ */
+ private fun getRepairAmount(item: ItemStack, section: ConfigurationSection, default: Double): Double? {
+ val itemName = item.customType.key.lowercase()
+ val repairValue = if (section.isDouble(itemName)) {
+ section.getDouble(itemName)
+ } else if (section.isDouble(itemName.uppercase())) {
+ section.getDouble(itemName.uppercase())
+ } else {
+ return null
+ }
+ if (repairValue <= 0)
+ return default
+ return repairValue
}
}
\ No newline at end of file