mirror of
https://github.com/PaperMC/Paper.git
synced 2025-03-02 11:22:01 +01:00
Add more complete resource pack API
This commit is contained in:
parent
74b4a248ab
commit
a80a692e2b
112
Spigot-API-Patches/Complete-resource-pack-API.patch
Normal file
112
Spigot-API-Patches/Complete-resource-pack-API.patch
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jedediah Smith <jedediah@silencegreys.com>
|
||||||
|
Date: Sat, 4 Apr 2015 22:59:54 -0400
|
||||||
|
Subject: [PATCH] Complete resource pack API
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/org/bukkit/entity/Player.java
|
||||||
|
+++ b/src/main/java/org/bukkit/entity/Player.java
|
||||||
|
@@ -0,0 +0,0 @@ public interface Player extends HumanEntity, Conversable, CommandSender, Offline
|
||||||
|
* @throws IllegalArgumentException Thrown if the URL is null.
|
||||||
|
* @throws IllegalArgumentException Thrown if the URL is too long. The
|
||||||
|
* length restriction is an implementation specific arbitrary value.
|
||||||
|
+ * @deprecated use {@link #setResourcePack(String, String)}
|
||||||
|
*/
|
||||||
|
+ @Deprecated // Paper
|
||||||
|
public void setResourcePack(String url);
|
||||||
|
|
||||||
|
/**
|
||||||
|
@@ -0,0 +0,0 @@ public interface Player extends HumanEntity, Conversable, CommandSender, Offline
|
||||||
|
*/
|
||||||
|
public void setViewDistance(int viewDistance);
|
||||||
|
|
||||||
|
+ // Paper start
|
||||||
|
+ /**
|
||||||
|
+ * Request that the player's client download and switch resource packs.
|
||||||
|
+ * <p>
|
||||||
|
+ * The player's client will download the new resource pack asynchronously
|
||||||
|
+ * in the background, and will automatically switch to it once the
|
||||||
|
+ * download is complete. If the client has downloaded and cached the same
|
||||||
|
+ * resource pack in the past, it will perform a quick timestamp check
|
||||||
|
+ * over the network to determine if the resource pack has changed and
|
||||||
|
+ * needs to be downloaded again. When this request is sent for the very
|
||||||
|
+ * first time from a given server, the client will first display a
|
||||||
|
+ * confirmation GUI to the player before proceeding with the download.
|
||||||
|
+ * <p>
|
||||||
|
+ * Notes:
|
||||||
|
+ * <ul>
|
||||||
|
+ * <li>Players can disable server resources on their client, in which
|
||||||
|
+ * case this method will have no affect on them.
|
||||||
|
+ * <li>There is no concept of resetting resource packs back to default
|
||||||
|
+ * within Minecraft, so players will have to relog to do so.
|
||||||
|
+ * </ul>
|
||||||
|
+ *
|
||||||
|
+ * @param url The URL from which the client will download the resource
|
||||||
|
+ * pack. The string must contain only US-ASCII characters and should
|
||||||
|
+ * be encoded as per RFC 1738.
|
||||||
|
+ * @param hash A 40 character hexadecimal and lowercase SHA-1 digest of
|
||||||
|
+ * the resource pack file.
|
||||||
|
+ * @throws IllegalArgumentException Thrown if the URL is null.
|
||||||
|
+ * @throws IllegalArgumentException Thrown if the URL is too long. The
|
||||||
|
+ * length restriction is an implementation specific arbitrary value.
|
||||||
|
+ */
|
||||||
|
+ void setResourcePack(String url, String hash);
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * @return the most recent resource pack status received from the player,
|
||||||
|
+ * or null if no status has ever been received from this player.
|
||||||
|
+ */
|
||||||
|
+ org.bukkit.event.player.PlayerResourcePackStatusEvent.Status getResourcePackStatus();
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * @return the most recent resource pack hash received from the player,
|
||||||
|
+ * or null if no hash has ever been received from this player.
|
||||||
|
+ */
|
||||||
|
+ String getResourcePackHash();
|
||||||
|
+
|
||||||
|
+ /**
|
||||||
|
+ * @return true if the last resource pack status received from this player
|
||||||
|
+ * was {@link org.bukkit.event.player.PlayerResourcePackStatusEvent.Status#SUCCESSFULLY_LOADED}
|
||||||
|
+ */
|
||||||
|
+ boolean hasResourcePack();
|
||||||
|
+ // Paper end
|
||||||
|
+
|
||||||
|
// Spigot start
|
||||||
|
public class Spigot extends Entity.Spigot
|
||||||
|
{
|
||||||
|
diff --git a/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java b/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java
|
||||||
|
+++ b/src/main/java/org/bukkit/event/player/PlayerResourcePackStatusEvent.java
|
||||||
|
@@ -0,0 +0,0 @@ import org.bukkit.event.HandlerList;
|
||||||
|
public class PlayerResourcePackStatusEvent extends PlayerEvent {
|
||||||
|
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
+ private final String hash; // Paper
|
||||||
|
private final Status status;
|
||||||
|
|
||||||
|
+ @Deprecated // Paper
|
||||||
|
public PlayerResourcePackStatusEvent(final Player who, Status resourcePackStatus) {
|
||||||
|
super(who);
|
||||||
|
+ this.hash = null; // Paper
|
||||||
|
this.status = resourcePackStatus;
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // Paper start
|
||||||
|
+ public PlayerResourcePackStatusEvent(final Player who, Status resourcePackStatus, String hash) {
|
||||||
|
+ super(who);
|
||||||
|
+ this.hash = hash; // Paper
|
||||||
|
+ this.status = resourcePackStatus;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public String getHash() {
|
||||||
|
+ return this.hash;
|
||||||
|
+ }
|
||||||
|
+ // Paper end
|
||||||
|
+
|
||||||
|
/**
|
||||||
|
* Gets the status of this pack.
|
||||||
|
*
|
||||||
|
--
|
88
Spigot-Server-Patches/Complete-resource-pack-API.patch
Normal file
88
Spigot-Server-Patches/Complete-resource-pack-API.patch
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Jedediah Smith <jedediah@silencegreys.com>
|
||||||
|
Date: Sat, 4 Apr 2015 23:17:52 -0400
|
||||||
|
Subject: [PATCH] Complete resource pack API
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java b/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java
|
||||||
|
@@ -0,0 +0,0 @@ import java.io.IOException;
|
||||||
|
|
||||||
|
public class PacketPlayInResourcePackStatus implements Packet<PacketListenerPlayIn> {
|
||||||
|
|
||||||
|
- private String a;
|
||||||
|
+ public String a; // Paper - make public
|
||||||
|
public PacketPlayInResourcePackStatus.EnumResourcePackStatus status;
|
||||||
|
|
||||||
|
public PacketPlayInResourcePackStatus() {}
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/PlayerConnection.java
|
||||||
|
@@ -0,0 +0,0 @@ public class PlayerConnection implements PacketListenerPlayIn, ITickable {
|
||||||
|
|
||||||
|
// CraftBukkit start
|
||||||
|
public void a(PacketPlayInResourcePackStatus packetplayinresourcepackstatus) {
|
||||||
|
- this.server.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(getPlayer(), PlayerResourcePackStatusEvent.Status.values()[packetplayinresourcepackstatus.status.ordinal()]));
|
||||||
|
+ //this.server.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(getPlayer(), PlayerResourcePackStatusEvent.Status.values()[packetplayinresourcepackstatus.status.ordinal()])); // Paper - comment
|
||||||
|
+ // Paper start
|
||||||
|
+ PlayerConnectionUtils.ensureMainThread(packetplayinresourcepackstatus, this, this.player.x());
|
||||||
|
+ final PlayerResourcePackStatusEvent.Status status = PlayerResourcePackStatusEvent.Status.values()[packetplayinresourcepackstatus.status.ordinal()];
|
||||||
|
+ this.getPlayer().setResourcePackStatus(status, packetplayinresourcepackstatus.a);
|
||||||
|
+ this.server.getPluginManager().callEvent(new PlayerResourcePackStatusEvent(getPlayer(), status, packetplayinresourcepackstatus.a));
|
||||||
|
+ // paper end
|
||||||
|
}
|
||||||
|
// CraftBukkit end
|
||||||
|
|
||||||
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||||
|
@@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||||
|
private double health = 20;
|
||||||
|
private boolean scaledHealth = false;
|
||||||
|
private double healthScale = 20;
|
||||||
|
+ // Paper start
|
||||||
|
+ private org.bukkit.event.player.PlayerResourcePackStatusEvent.Status resourcePackStatus;
|
||||||
|
+ private String resourcePackHash;
|
||||||
|
+ // Paper end
|
||||||
|
|
||||||
|
public CraftPlayer(CraftServer server, EntityPlayer entity) {
|
||||||
|
super(server, entity);
|
||||||
|
@@ -0,0 +0,0 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||||
|
public void setViewDistance(int viewDistance) {
|
||||||
|
((WorldServer) getHandle().world).getPlayerChunkMap().updateViewDistance(getHandle(), viewDistance);
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public void setResourcePack(String url, String hash) {
|
||||||
|
+ Validate.notNull(url, "Resource pack URL cannot be null");
|
||||||
|
+ Validate.notNull(hash, "Hash cannot be null");
|
||||||
|
+ this.getHandle().setResourcePack(url, hash);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public org.bukkit.event.player.PlayerResourcePackStatusEvent.Status getResourcePackStatus() {
|
||||||
|
+ return this.resourcePackStatus;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public String getResourcePackHash() {
|
||||||
|
+ return this.resourcePackHash;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean hasResourcePack() {
|
||||||
|
+ return this.resourcePackStatus == org.bukkit.event.player.PlayerResourcePackStatusEvent.Status.SUCCESSFULLY_LOADED;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public void setResourcePackStatus(org.bukkit.event.player.PlayerResourcePackStatusEvent.Status status, String hash) {
|
||||||
|
+ this.resourcePackStatus = status;
|
||||||
|
+ this.resourcePackHash = hash;
|
||||||
|
+ }
|
||||||
|
// Paper end
|
||||||
|
|
||||||
|
// Spigot start
|
||||||
|
--
|
@ -4778,6 +4778,44 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+
|
+
|
||||||
+ public void b(int i, BlockPosition blockposition, int j) {}
|
+ public void b(int i, BlockPosition blockposition, int j) {}
|
||||||
+}
|
+}
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java b/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/net/minecraft/server/PacketPlayInResourcePackStatus.java
|
||||||
|
@@ -0,0 +0,0 @@
|
||||||
|
+package net.minecraft.server;
|
||||||
|
+
|
||||||
|
+import java.io.IOException;
|
||||||
|
+
|
||||||
|
+public class PacketPlayInResourcePackStatus implements Packet<PacketListenerPlayIn> {
|
||||||
|
+
|
||||||
|
+ private String a;
|
||||||
|
+ public PacketPlayInResourcePackStatus.EnumResourcePackStatus status;
|
||||||
|
+
|
||||||
|
+ public PacketPlayInResourcePackStatus() {}
|
||||||
|
+
|
||||||
|
+ public void a(PacketDataSerializer packetdataserializer) throws IOException {
|
||||||
|
+ this.a = packetdataserializer.c(40);
|
||||||
|
+ this.status = (PacketPlayInResourcePackStatus.EnumResourcePackStatus) packetdataserializer.a(PacketPlayInResourcePackStatus.EnumResourcePackStatus.class);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public void b(PacketDataSerializer packetdataserializer) throws IOException {
|
||||||
|
+ packetdataserializer.a(this.a);
|
||||||
|
+ packetdataserializer.a((Enum) this.status);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public void a(PacketListenerPlayIn packetlistenerplayin) {
|
||||||
|
+ packetlistenerplayin.a(this);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public static enum EnumResourcePackStatus {
|
||||||
|
+
|
||||||
|
+ SUCCESSFULLY_LOADED, DECLINED, FAILED_DOWNLOAD, ACCEPTED;
|
||||||
|
+
|
||||||
|
+ private EnumResourcePackStatus() {}
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalFloat.java b/src/main/java/net/minecraft/server/PathfinderGoalFloat.java
|
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalFloat.java b/src/main/java/net/minecraft/server/PathfinderGoalFloat.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
|
||||||
|
Loading…
Reference in New Issue
Block a user