mirror of
https://github.com/BentoBoxWorld/BentoBox.git
synced 2024-11-27 05:05:18 +01:00
Implement duplicated actions click type (#1919)
Some addons may want to introduce two different actions with the same click type. This change will allow to do it, as now actions may be defined as lists instead of configuration sections. To use it, action must be defined a bit differently: ``` actions: - click-type: <value of enum ClickType> # required type: <value of String> # not required content: <value of String> # not required tooltip: <value of String> # not required - click-type: <value of enum ClickType> # required type: <value of String> # not required content: <value of String> # not required tooltip: <value of String> # not required ``` Co-authored-by: tastybento <tastybento@users.noreply.github.com>
This commit is contained in:
parent
56c9f5c28e
commit
54869a400a
@ -6,12 +6,6 @@
|
||||
|
||||
package world.bentobox.bentobox.api.panels.reader;
|
||||
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.InvalidConfigurationException;
|
||||
@ -20,6 +14,12 @@ import org.bukkit.event.inventory.ClickType;
|
||||
import org.eclipse.jdt.annotation.NonNull;
|
||||
import org.eclipse.jdt.annotation.Nullable;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.google.common.base.Enums;
|
||||
|
||||
import world.bentobox.bentobox.api.panels.Panel;
|
||||
@ -345,6 +345,30 @@ public class TemplateReader
|
||||
});
|
||||
}
|
||||
}
|
||||
else if (section.isList("actions"))
|
||||
{
|
||||
// Read Click data as list which allows to have duplicate click types.
|
||||
|
||||
List<Map<?, ?>> actionList = section.getMapList("actions");
|
||||
|
||||
if (!actionList.isEmpty())
|
||||
{
|
||||
actionList.forEach(valueMap -> {
|
||||
ClickType clickType = Enums.getIfPresent(ClickType.class,
|
||||
String.valueOf(valueMap.get("click-type")).toUpperCase()).orNull();
|
||||
|
||||
if (clickType != null)
|
||||
{
|
||||
ItemTemplateRecord.ActionRecords actionData =
|
||||
new ItemTemplateRecord.ActionRecords(clickType,
|
||||
valueMap.containsKey("type") ? String.valueOf(valueMap.get("type")) : null,
|
||||
valueMap.containsKey("content") ? String.valueOf(valueMap.get("content")) : null,
|
||||
valueMap.containsKey("tooltip") ? String.valueOf(valueMap.get("tooltip")) : null);
|
||||
itemRecord.addAction(actionData);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Add item to the map
|
||||
if (reusableItemMap != null && itemKey != null)
|
||||
|
Loading…
Reference in New Issue
Block a user