From c120fa6a4d63e144b4e7c35d767a0131ca957ab9 Mon Sep 17 00:00:00 2001 From: Luck Date: Sat, 16 May 2020 11:52:51 +0100 Subject: [PATCH] Fix startup on Nukkit (#2290) --- .../permissible/DummyPermissibleBase.java | 2 +- .../common/util/EmptyCollections.java | 25 +++++++++++++++++++ .../permissible/DummyPermissibleBase.java | 4 +-- 3 files changed, 28 insertions(+), 3 deletions(-) diff --git a/bukkit/src/main/java/me/lucko/luckperms/bukkit/inject/permissible/DummyPermissibleBase.java b/bukkit/src/main/java/me/lucko/luckperms/bukkit/inject/permissible/DummyPermissibleBase.java index c12682763..ae76882c1 100644 --- a/bukkit/src/main/java/me/lucko/luckperms/bukkit/inject/permissible/DummyPermissibleBase.java +++ b/bukkit/src/main/java/me/lucko/luckperms/bukkit/inject/permissible/DummyPermissibleBase.java @@ -71,7 +71,7 @@ public class DummyPermissibleBase extends PermissibleBase { try { ATTACHMENTS_FIELD.set(this, EmptyCollections.list()); PERMISSIONS_FIELD.set(this, EmptyCollections.map()); - } catch (ReflectiveOperationException e) { + } catch (Exception e) { e.printStackTrace(); } } diff --git a/common/src/main/java/me/lucko/luckperms/common/util/EmptyCollections.java b/common/src/main/java/me/lucko/luckperms/common/util/EmptyCollections.java index 370b761a8..94a77982a 100644 --- a/common/src/main/java/me/lucko/luckperms/common/util/EmptyCollections.java +++ b/common/src/main/java/me/lucko/luckperms/common/util/EmptyCollections.java @@ -27,7 +27,9 @@ package me.lucko.luckperms.common.util; import java.util.AbstractList; import java.util.AbstractMap; +import java.util.AbstractSet; import java.util.Collections; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -39,6 +41,7 @@ public final class EmptyCollections { private EmptyCollections() {} private static final EmptyList LIST = new EmptyList<>(); + private static final EmptySet SET = new EmptySet<>(); private static final EmptyMap MAP = new EmptyMap<>(); @SuppressWarnings("unchecked") @@ -46,6 +49,11 @@ public final class EmptyCollections { return (List) LIST; } + @SuppressWarnings("unchecked") + public static Set set() { + return (Set) SET; + } + @SuppressWarnings("unchecked") public static Map map() { return (Map) MAP; @@ -78,6 +86,23 @@ public final class EmptyCollections { } } + private static final class EmptySet extends AbstractSet { + @Override + public Iterator iterator() { + return Collections.emptyIterator(); + } + + @Override + public int size() { + return 0; + } + + @Override + public boolean add(E e) { + return true; + } + } + private static final class EmptyMap extends AbstractMap { @Override public Set> entrySet() { diff --git a/nukkit/src/main/java/me/lucko/luckperms/nukkit/inject/permissible/DummyPermissibleBase.java b/nukkit/src/main/java/me/lucko/luckperms/nukkit/inject/permissible/DummyPermissibleBase.java index e219ccc55..8257c371a 100644 --- a/nukkit/src/main/java/me/lucko/luckperms/nukkit/inject/permissible/DummyPermissibleBase.java +++ b/nukkit/src/main/java/me/lucko/luckperms/nukkit/inject/permissible/DummyPermissibleBase.java @@ -68,9 +68,9 @@ public class DummyPermissibleBase extends PermissibleBase { super(null); try { - ATTACHMENTS_FIELD.set(this, EmptyCollections.list()); + ATTACHMENTS_FIELD.set(this, EmptyCollections.set()); PERMISSIONS_FIELD.set(this, EmptyCollections.map()); - } catch (ReflectiveOperationException e) { + } catch (Exception e) { e.printStackTrace(); } }