mirror of
https://github.com/BentoBoxWorld/Level.git
synced 2024-12-25 18:47:56 +01:00
Fixes some small issues with TopLevelPanel
Add Utils class that contains some useful things.
This commit is contained in:
parent
e16fad882e
commit
43fcde5781
@ -8,10 +8,9 @@ package world.bentobox.level.panels;
|
|||||||
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.permissions.PermissionAttachmentInfo;
|
import org.bukkit.event.inventory.ClickType;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import world.bentobox.bentobox.api.panels.PanelItem;
|
import world.bentobox.bentobox.api.panels.PanelItem;
|
||||||
@ -23,6 +22,7 @@ import world.bentobox.bentobox.api.user.User;
|
|||||||
import world.bentobox.bentobox.database.objects.Island;
|
import world.bentobox.bentobox.database.objects.Island;
|
||||||
import world.bentobox.bentobox.managers.RanksManager;
|
import world.bentobox.bentobox.managers.RanksManager;
|
||||||
import world.bentobox.level.Level;
|
import world.bentobox.level.Level;
|
||||||
|
import world.bentobox.level.util.Utils;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -194,10 +194,13 @@ public class TopLevelPanel
|
|||||||
{
|
{
|
||||||
for (ItemTemplateRecord.ActionRecords action : activeActions)
|
for (ItemTemplateRecord.ActionRecords action : activeActions)
|
||||||
{
|
{
|
||||||
if (clickType == action.clickType() && "VIEW".equalsIgnoreCase(action.actionType()))
|
if ((clickType == action.clickType() || action.clickType() == ClickType.UNKNOWN) &&
|
||||||
|
"VIEW".equalsIgnoreCase(action.actionType()))
|
||||||
{
|
{
|
||||||
this.user.closeInventory();
|
this.user.closeInventory();
|
||||||
// Open Detailed GUI.
|
// Open Detailed GUI.
|
||||||
|
|
||||||
|
DetailsPanel.openPanel(this.addon, this.world, this.user);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -279,7 +282,8 @@ public class TopLevelPanel
|
|||||||
User owner = island.getOwner() == null ? null : User.getInstance(island.getOwner());
|
User owner = island.getOwner() == null ? null : User.getInstance(island.getOwner());
|
||||||
|
|
||||||
// Get permission or island icon
|
// Get permission or island icon
|
||||||
String permissionIcon = TopLevelPanel.getPermissionValue(owner, this.iconPermission);
|
String permissionIcon = owner == null ? null :
|
||||||
|
Utils.getPermissionValue(owner, this.iconPermission, null);
|
||||||
|
|
||||||
Material material;
|
Material material;
|
||||||
|
|
||||||
@ -375,7 +379,7 @@ public class TopLevelPanel
|
|||||||
"[number]", String.valueOf(index));
|
"[number]", String.valueOf(index));
|
||||||
|
|
||||||
String levelText = this.user.getTranslation(reference + "level",
|
String levelText = this.user.getTranslation(reference + "level",
|
||||||
"[number]", String.valueOf(islandTopRecord.level()));
|
"[number]", this.addon.getManager().formatLevel(islandTopRecord.level()));
|
||||||
|
|
||||||
// Template specific description is always more important than custom one.
|
// Template specific description is always more important than custom one.
|
||||||
if (template.description() != null && !template.description().isBlank())
|
if (template.description() != null && !template.description().isBlank())
|
||||||
@ -445,51 +449,6 @@ public class TopLevelPanel
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This method gets string value of given permission prefix. If user does not have given permission or it have all
|
|
||||||
* (*), then return default value.
|
|
||||||
*
|
|
||||||
* @param user User who's permission should be checked.
|
|
||||||
* @param permissionPrefix Prefix that need to be found.
|
|
||||||
* @return String value that follows permissionPrefix.
|
|
||||||
*/
|
|
||||||
private static String getPermissionValue(User user, String permissionPrefix)
|
|
||||||
{
|
|
||||||
if (user != null && user.isPlayer())
|
|
||||||
{
|
|
||||||
if (permissionPrefix.endsWith("."))
|
|
||||||
{
|
|
||||||
permissionPrefix = permissionPrefix.substring(0, permissionPrefix.length() - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
String permPrefix = permissionPrefix + ".";
|
|
||||||
|
|
||||||
List<String> permissions = user.getEffectivePermissions().stream().
|
|
||||||
map(PermissionAttachmentInfo::getPermission).
|
|
||||||
filter(permission -> permission.startsWith(permPrefix)).
|
|
||||||
collect(Collectors.toList());
|
|
||||||
|
|
||||||
for (String permission : permissions)
|
|
||||||
{
|
|
||||||
if (permission.contains(permPrefix + "*"))
|
|
||||||
{
|
|
||||||
// * means all. So continue to search more specific.
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
String[] parts = permission.split(permPrefix);
|
|
||||||
|
|
||||||
if (parts.length > 1)
|
|
||||||
{
|
|
||||||
return parts[1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ---------------------------------------------------------------------
|
// ---------------------------------------------------------------------
|
||||||
// Section: Record
|
// Section: Record
|
||||||
// ---------------------------------------------------------------------
|
// ---------------------------------------------------------------------
|
||||||
|
76
src/main/java/world/bentobox/level/util/Utils.java
Normal file
76
src/main/java/world/bentobox/level/util/Utils.java
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
//
|
||||||
|
// Created by BONNe
|
||||||
|
// Copyright - 2021
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
package world.bentobox.level.util;
|
||||||
|
|
||||||
|
|
||||||
|
import org.bukkit.permissions.PermissionAttachmentInfo;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import world.bentobox.bentobox.api.user.User;
|
||||||
|
|
||||||
|
|
||||||
|
public class Utils
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* This method sends a message to the user with appended "prefix" text before message.
|
||||||
|
* @param user User who receives message.
|
||||||
|
* @param translationText Translation text of the message.
|
||||||
|
* @param parameters Parameters for the translation text.
|
||||||
|
*/
|
||||||
|
public static void sendMessage(User user, String translationText, String... parameters)
|
||||||
|
{
|
||||||
|
user.sendMessage(user.getTranslation( "level.conversations.prefix") +
|
||||||
|
user.getTranslation( translationText, parameters));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method gets string value of given permission prefix. If user does not have given permission or it have all
|
||||||
|
* (*), then return default value.
|
||||||
|
*
|
||||||
|
* @param user User who's permission should be checked.
|
||||||
|
* @param permissionPrefix Prefix that need to be found.
|
||||||
|
* @param defaultValue Default value that will be returned if permission not found.
|
||||||
|
* @return String value that follows permissionPrefix.
|
||||||
|
*/
|
||||||
|
public static String getPermissionValue(User user, String permissionPrefix, String defaultValue)
|
||||||
|
{
|
||||||
|
if (user.isPlayer())
|
||||||
|
{
|
||||||
|
if (permissionPrefix.endsWith("."))
|
||||||
|
{
|
||||||
|
permissionPrefix = permissionPrefix.substring(0, permissionPrefix.length() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
String permPrefix = permissionPrefix + ".";
|
||||||
|
|
||||||
|
List<String> permissions = user.getEffectivePermissions().stream().
|
||||||
|
map(PermissionAttachmentInfo::getPermission).
|
||||||
|
filter(permission -> permission.startsWith(permPrefix)).
|
||||||
|
collect(Collectors.toList());
|
||||||
|
|
||||||
|
for (String permission : permissions)
|
||||||
|
{
|
||||||
|
if (permission.contains(permPrefix + "*"))
|
||||||
|
{
|
||||||
|
// * means all. So continue to search more specific.
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
String[] parts = permission.split(permPrefix);
|
||||||
|
|
||||||
|
if (parts.length > 1)
|
||||||
|
{
|
||||||
|
return parts[1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user