mirror of
https://github.com/LuckPerms/LuckPerms.git
synced 2024-11-24 11:38:40 +01:00
misc refactor for PermissionHolder & DummySender
This commit is contained in:
parent
3201d10bdd
commit
22006617d0
@ -30,6 +30,7 @@ import com.google.common.collect.ImmutableSet;
|
||||
|
||||
import me.lucko.luckperms.common.commands.CommandManager;
|
||||
import me.lucko.luckperms.common.commands.CommandResult;
|
||||
import me.lucko.luckperms.common.commands.sender.DummySender;
|
||||
import me.lucko.luckperms.common.commands.sender.Sender;
|
||||
import me.lucko.luckperms.common.commands.utils.CommandUtils;
|
||||
import me.lucko.luckperms.common.locale.Message;
|
||||
|
@ -23,11 +23,10 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.backup;
|
||||
package me.lucko.luckperms.common.commands.sender;
|
||||
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
import me.lucko.luckperms.common.commands.CommandManager;
|
||||
import me.lucko.luckperms.common.commands.sender.Sender;
|
||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||
import me.lucko.luckperms.common.utils.TextUtils;
|
||||
|
@ -747,9 +747,11 @@ public abstract class PermissionHolder {
|
||||
|
||||
if (perms.putIfAbsent(perm, node.getValuePrimitive()) == null) {
|
||||
if (applyShorthand) {
|
||||
List<String> sh = node.resolveShorthand();
|
||||
if (!sh.isEmpty()) {
|
||||
sh.stream().map(s -> lowerCase ? s.toLowerCase() : s).forEach(s -> perms.putIfAbsent(s, node.getValuePrimitive()));
|
||||
List<String> shorthand = node.resolveShorthand();
|
||||
if (!shorthand.isEmpty()) {
|
||||
for (String s : shorthand) {
|
||||
perms.putIfAbsent(lowerCase ? s.toLowerCase() : s, node.getValuePrimitive());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -28,6 +28,7 @@ package me.lucko.luckperms.common.utils;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
/**
|
||||
* A cycle of elements, backed by a list. All operations are thread safe.
|
||||
@ -35,42 +36,55 @@ import java.util.List;
|
||||
* @param <E> the element type
|
||||
*/
|
||||
public class Cycle<E> {
|
||||
protected final List<E> objects;
|
||||
protected int index = 0;
|
||||
|
||||
/**
|
||||
* The list that backs this instance
|
||||
*/
|
||||
private final List<E> objects;
|
||||
|
||||
/**
|
||||
* The number of elements in the cycle
|
||||
*/
|
||||
private final int size;
|
||||
|
||||
/**
|
||||
* The current position of the cursor
|
||||
*/
|
||||
private AtomicInteger cursor = new AtomicInteger(0);
|
||||
|
||||
public Cycle(List<E> objects) {
|
||||
if (objects == null || objects.isEmpty()) {
|
||||
throw new IllegalArgumentException("List of objects cannot be null/empty.");
|
||||
}
|
||||
this.objects = ImmutableList.copyOf(objects);
|
||||
this.size = this.objects.size();
|
||||
}
|
||||
|
||||
public int getIndex() {
|
||||
return this.index;
|
||||
public int cursor() {
|
||||
return this.cursor.get();
|
||||
}
|
||||
|
||||
public E current() {
|
||||
synchronized (this) {
|
||||
return this.objects.get(this.index);
|
||||
}
|
||||
return this.objects.get(cursor());
|
||||
}
|
||||
|
||||
public E next() {
|
||||
synchronized (this) {
|
||||
this.index++;
|
||||
this.index = this.index > this.objects.size() - 1 ? 0 : this.index;
|
||||
|
||||
return this.objects.get(this.index);
|
||||
}
|
||||
return this.objects.get(this.cursor.updateAndGet(i -> {
|
||||
int n = i + 1;
|
||||
if (n >= this.size) {
|
||||
return 0;
|
||||
}
|
||||
return n;
|
||||
}));
|
||||
}
|
||||
|
||||
public E back() {
|
||||
synchronized (this) {
|
||||
this.index--;
|
||||
this.index = this.index == -1 ? this.objects.size() - 1 : this.index;
|
||||
|
||||
return this.objects.get(this.index);
|
||||
}
|
||||
public E previous() {
|
||||
return this.objects.get(this.cursor.updateAndGet(i -> {
|
||||
if (i == 0) {
|
||||
return this.size - 1;
|
||||
}
|
||||
return i - 1;
|
||||
}));
|
||||
}
|
||||
|
||||
public List<E> getBacking() {
|
||||
|
@ -33,13 +33,13 @@ import me.lucko.luckperms.api.platform.PlatformType;
|
||||
import me.lucko.luckperms.common.actionlog.LogDispatcher;
|
||||
import me.lucko.luckperms.common.api.ApiRegistrationUtil;
|
||||
import me.lucko.luckperms.common.api.LuckPermsApiProvider;
|
||||
import me.lucko.luckperms.common.backup.DummySender;
|
||||
import me.lucko.luckperms.common.buffers.BufferedRequest;
|
||||
import me.lucko.luckperms.common.buffers.UpdateTaskBuffer;
|
||||
import me.lucko.luckperms.common.caching.handlers.CachedStateManager;
|
||||
import me.lucko.luckperms.common.calculators.CalculatorFactory;
|
||||
import me.lucko.luckperms.common.commands.CommandPermission;
|
||||
import me.lucko.luckperms.common.commands.abstraction.Command;
|
||||
import me.lucko.luckperms.common.commands.sender.DummySender;
|
||||
import me.lucko.luckperms.common.commands.sender.Sender;
|
||||
import me.lucko.luckperms.common.config.AbstractConfiguration;
|
||||
import me.lucko.luckperms.common.config.ConfigKeys;
|
||||
|
Loading…
Reference in New Issue
Block a user