Make PlayerProfile.getProperties mutable
Most other collections returned like this is mutable, lets be consistent.
This commit is contained in:
parent
91977496cc
commit
8173d569d6
2 changed files with 60 additions and 8 deletions
|
@ -1,4 +1,4 @@
|
||||||
From e34afb295fa89ab296a403e9c67f1f22bfbfd03e Mon Sep 17 00:00:00 2001
|
From a81aa18c534bcbca348329135c312a5725210352 Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Mon, 15 Jan 2018 21:46:46 -0500
|
Date: Mon, 15 Jan 2018 21:46:46 -0500
|
||||||
Subject: [PATCH] Basic PlayerProfile API
|
Subject: [PATCH] Basic PlayerProfile API
|
||||||
|
@ -7,7 +7,7 @@ Provides basic elements of a PlayerProfile to be used by future API/events
|
||||||
|
|
||||||
diff --git a/src/main/java/com/destroystokyo/paper/profile/PlayerProfile.java b/src/main/java/com/destroystokyo/paper/profile/PlayerProfile.java
|
diff --git a/src/main/java/com/destroystokyo/paper/profile/PlayerProfile.java b/src/main/java/com/destroystokyo/paper/profile/PlayerProfile.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 00000000..f3868f94
|
index 00000000..a7b69cab
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/com/destroystokyo/paper/profile/PlayerProfile.java
|
+++ b/src/main/java/com/destroystokyo/paper/profile/PlayerProfile.java
|
||||||
@@ -0,0 +1,90 @@
|
@@ -0,0 +1,90 @@
|
||||||
|
@ -37,7 +37,7 @@ index 00000000..f3868f94
|
||||||
+ @Nullable UUID getId();
|
+ @Nullable UUID getId();
|
||||||
+
|
+
|
||||||
+ /**
|
+ /**
|
||||||
+ * @return A copy of this players properties, such as textures.
|
+ * @return A Mutable set of this players properties, such as textures.
|
||||||
+ * Values specified here are subject to implementation details.
|
+ * Values specified here are subject to implementation details.
|
||||||
+ */
|
+ */
|
||||||
+ @Nonnull Set<ProfileProperty> getProperties();
|
+ @Nonnull Set<ProfileProperty> getProperties();
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
From 96b4614b35bf8df7a2d95c91f6b7df1b05641359 Mon Sep 17 00:00:00 2001
|
From 2eae14bc83b8875e5949e811fbcc404dc353d468 Mon Sep 17 00:00:00 2001
|
||||||
From: Aikar <aikar@aikar.co>
|
From: Aikar <aikar@aikar.co>
|
||||||
Date: Mon, 15 Jan 2018 22:11:48 -0500
|
Date: Mon, 15 Jan 2018 22:11:48 -0500
|
||||||
Subject: [PATCH] Basic PlayerProfile API
|
Subject: [PATCH] Basic PlayerProfile API
|
||||||
|
@ -6,19 +6,22 @@ Subject: [PATCH] Basic PlayerProfile API
|
||||||
|
|
||||||
diff --git a/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
|
diff --git a/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 000000000..6868ee9a4
|
index 000000000..171b1aaf5
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
|
+++ b/src/main/java/com/destroystokyo/paper/profile/CraftPlayerProfile.java
|
||||||
@@ -0,0 +1,133 @@
|
@@ -0,0 +1,185 @@
|
||||||
+package com.destroystokyo.paper.profile;
|
+package com.destroystokyo.paper.profile;
|
||||||
+
|
+
|
||||||
+import com.mojang.authlib.GameProfile;
|
+import com.mojang.authlib.GameProfile;
|
||||||
+import com.mojang.authlib.properties.Property;
|
+import com.mojang.authlib.properties.Property;
|
||||||
+import com.mojang.authlib.properties.PropertyMap;
|
+import com.mojang.authlib.properties.PropertyMap;
|
||||||
|
+import com.oracle.webservices.internal.api.message.PropertySet;
|
||||||
+
|
+
|
||||||
+import javax.annotation.Nonnull;
|
+import javax.annotation.Nonnull;
|
||||||
+import javax.annotation.Nullable;
|
+import javax.annotation.Nullable;
|
||||||
|
+import java.util.AbstractSet;
|
||||||
+import java.util.Collection;
|
+import java.util.Collection;
|
||||||
|
+import java.util.Iterator;
|
||||||
+import java.util.Set;
|
+import java.util.Set;
|
||||||
+import java.util.UUID;
|
+import java.util.UUID;
|
||||||
+import java.util.stream.Collectors;
|
+import java.util.stream.Collectors;
|
||||||
|
@ -26,6 +29,7 @@ index 000000000..6868ee9a4
|
||||||
+public class CraftPlayerProfile implements PlayerProfile {
|
+public class CraftPlayerProfile implements PlayerProfile {
|
||||||
+
|
+
|
||||||
+ private final GameProfile profile;
|
+ private final GameProfile profile;
|
||||||
|
+ private final PropertySet properties;
|
||||||
+
|
+
|
||||||
+ /**
|
+ /**
|
||||||
+ * Constructs a new Game Profile with the specified ID and name.
|
+ * Constructs a new Game Profile with the specified ID and name.
|
||||||
|
@ -37,11 +41,12 @@ index 000000000..6868ee9a4
|
||||||
+ * @throws IllegalArgumentException Both ID and name are either null or empty
|
+ * @throws IllegalArgumentException Both ID and name are either null or empty
|
||||||
+ */
|
+ */
|
||||||
+ public CraftPlayerProfile(UUID id, String name) {
|
+ public CraftPlayerProfile(UUID id, String name) {
|
||||||
+ this.profile = new GameProfile(id, name);
|
+ this(new GameProfile(id, name));
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public CraftPlayerProfile(GameProfile profile) {
|
+ public CraftPlayerProfile(GameProfile profile) {
|
||||||
+ this.profile = profile;
|
+ this.profile = profile;
|
||||||
|
+ this.properties = new PropertySet();
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public GameProfile getGameProfile() {
|
+ public GameProfile getGameProfile() {
|
||||||
|
@ -57,7 +62,7 @@ index 000000000..6868ee9a4
|
||||||
+ @Nonnull
|
+ @Nonnull
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public Set<ProfileProperty> getProperties() {
|
+ public Set<ProfileProperty> getProperties() {
|
||||||
+ return profile.getProperties().values().stream().map(CraftPlayerProfile::toBukkit).collect(Collectors.toSet());
|
+ return properties;
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ @Nullable
|
+ @Nullable
|
||||||
|
@ -142,6 +147,53 @@ index 000000000..6868ee9a4
|
||||||
+ CraftPlayerProfile craft = ((CraftPlayerProfile) profile);
|
+ CraftPlayerProfile craft = ((CraftPlayerProfile) profile);
|
||||||
+ return craft.getGameProfile();
|
+ return craft.getGameProfile();
|
||||||
+ }
|
+ }
|
||||||
|
+
|
||||||
|
+ private class PropertySet extends AbstractSet<ProfileProperty> {
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public Iterator<ProfileProperty> iterator() {
|
||||||
|
+ Iterator<Property> iterator = profile.getProperties().values().iterator();
|
||||||
|
+ return new Iterator<ProfileProperty>() {
|
||||||
|
+ @Override
|
||||||
|
+ public boolean hasNext() {
|
||||||
|
+ return iterator.hasNext();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public ProfileProperty next() {
|
||||||
|
+ return toBukkit(iterator.next());
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public void remove() {
|
||||||
|
+ iterator().remove();
|
||||||
|
+ }
|
||||||
|
+ };
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public int size() {
|
||||||
|
+ return profile.getProperties().size();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean add(ProfileProperty property) {
|
||||||
|
+ setProperty(property);
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean addAll(Collection<? extends ProfileProperty> c) {
|
||||||
|
+ //noinspection unchecked
|
||||||
|
+ setProperties((Collection<ProfileProperty>) c);
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean contains(Object o) {
|
||||||
|
+ return o instanceof ProfileProperty && profile.getProperties().containsKey(((ProfileProperty) o).getName());
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/MCUtil.java b/src/main/java/net/minecraft/server/MCUtil.java
|
diff --git a/src/main/java/net/minecraft/server/MCUtil.java b/src/main/java/net/minecraft/server/MCUtil.java
|
||||||
index 02940d697..4539b5601 100644
|
index 02940d697..4539b5601 100644
|
||||||
|
|
Loading…
Reference in a new issue