mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Updated Upstream (Paper)
Upstream has released updates that appears to apply and compile correctly Paper Changes: 9a7ca3db Updated Upstream (Bukkit/CraftBukkit/Spigot)
This commit is contained in:
2
Paper
2
Paper
Submodule Paper updated: 68ec946c7a...9a7ca3dbc5
@@ -1 +1 @@
|
||||
1.15.2--113335b5bf0b02c37e970cfc7509f8f17995f7b7
|
||||
1.15.2--6bd55b50decf4d03379c445466a73c86735d830a
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From e20cb2d48ea29c7f5330233ade4aa7a5ef2b156b Mon Sep 17 00:00:00 2001
|
||||
From ee2e3f5670923c7e90dd298163822152ec56296e Mon Sep 17 00:00:00 2001
|
||||
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
||||
Date: Fri, 14 Dec 2018 21:52:29 -0800
|
||||
Subject: [PATCH] Tuinity API Patches
|
||||
@@ -71,10 +71,10 @@ index 80f9abdca..55ec8d2d0 100644
|
||||
* Sends the component to the player
|
||||
*
|
||||
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
|
||||
index af0637f76..a3ed3154a 100644
|
||||
index db18f70ec..be92b1a3e 100644
|
||||
--- a/src/main/java/org/bukkit/World.java
|
||||
+++ b/src/main/java/org/bukkit/World.java
|
||||
@@ -3165,6 +3165,34 @@ public interface World extends PluginMessageRecipient, Metadatable {
|
||||
@@ -3166,6 +3166,34 @@ public interface World extends PluginMessageRecipient, Metadatable {
|
||||
int getViewDistance();
|
||||
// Spigot end
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 0a5979ad09792249e6c4b56860bbcf45cb5b9634 Mon Sep 17 00:00:00 2001
|
||||
From 66e13328cfc3db8a10f81e958e8d760754215fd4 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Sat, 1 Feb 2020 22:22:07 -0600
|
||||
Subject: [PATCH] Add moon phase API
|
||||
@@ -11,7 +11,7 @@ Subject: [PATCH] Add moon phase API
|
||||
|
||||
diff --git a/src/main/java/net/pl3x/purpur/MoonPhase.java b/src/main/java/net/pl3x/purpur/MoonPhase.java
|
||||
new file mode 100644
|
||||
index 00000000..f5ad98c6
|
||||
index 000000000..f5ad98c62
|
||||
--- /dev/null
|
||||
+++ b/src/main/java/net/pl3x/purpur/MoonPhase.java
|
||||
@@ -0,0 +1,36 @@
|
||||
@@ -52,10 +52,10 @@ index 00000000..f5ad98c6
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
|
||||
index a3ed3154..01d7204b 100644
|
||||
index be92b1a3e..97441dcae 100644
|
||||
--- a/src/main/java/org/bukkit/World.java
|
||||
+++ b/src/main/java/org/bukkit/World.java
|
||||
@@ -3243,6 +3243,16 @@ public interface World extends PluginMessageRecipient, Metadatable {
|
||||
@@ -3244,6 +3244,16 @@ public interface World extends PluginMessageRecipient, Metadatable {
|
||||
@NotNull
|
||||
public List<Raid> getRaids();
|
||||
|
||||
@@ -70,8 +70,8 @@ index a3ed3154..01d7204b 100644
|
||||
+ // Purpur end
|
||||
+
|
||||
/**
|
||||
* Represents various map environment types that a world may be
|
||||
*/
|
||||
* Get the {@link DragonBattle} associated with this world.
|
||||
*
|
||||
--
|
||||
2.24.0
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 0080a35f149be736b9d274e7272d24842da4e985 Mon Sep 17 00:00:00 2001
|
||||
From 0a22c90004e121545e4e96662f7ce11a53a5059d Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Sat, 19 Oct 2019 00:34:36 -0500
|
||||
Subject: [PATCH] Add getPlacementBlockData to World
|
||||
@@ -8,10 +8,10 @@ Subject: [PATCH] Add getPlacementBlockData to World
|
||||
1 file changed, 10 insertions(+)
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
|
||||
index 01d7204b..be430fb0 100644
|
||||
index 97441dcae..5bf0e2252 100644
|
||||
--- a/src/main/java/org/bukkit/World.java
|
||||
+++ b/src/main/java/org/bukkit/World.java
|
||||
@@ -3251,6 +3251,16 @@ public interface World extends PluginMessageRecipient, Metadatable {
|
||||
@@ -3252,6 +3252,16 @@ public interface World extends PluginMessageRecipient, Metadatable {
|
||||
*/
|
||||
@NotNull
|
||||
net.pl3x.purpur.MoonPhase getMoonPhase();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 846acefc7a33c752d574f2ca0876f917afda04ba Mon Sep 17 00:00:00 2001
|
||||
From d0753522c812ed12669f90b13afa74d3a83f4f36 Mon Sep 17 00:00:00 2001
|
||||
From: Spottedleaf <Spottedleaf@users.noreply.github.com>
|
||||
Date: Fri, 14 Dec 2018 21:53:58 -0800
|
||||
Subject: [PATCH] Tuinity Server Patches
|
||||
@@ -3751,7 +3751,7 @@ index 55f9f4e6e7..d3c616e72d 100644
|
||||
this.a(ChunkCoordIntPair.a, i, j, flag);
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/ChunkMapDistance.java b/src/main/java/net/minecraft/server/ChunkMapDistance.java
|
||||
index 73d1570765..6826c0369c 100644
|
||||
index 0244768f76..a56cffbbb2 100644
|
||||
--- a/src/main/java/net/minecraft/server/ChunkMapDistance.java
|
||||
+++ b/src/main/java/net/minecraft/server/ChunkMapDistance.java
|
||||
@@ -1,5 +1,6 @@
|
||||
@@ -4053,8 +4053,8 @@ index 73d1570765..6826c0369c 100644
|
||||
+ com.tuinity.tuinity.util.TickThread.softEnsureTickThread("Async ticket remove"); // Tuinity
|
||||
Ticket<T> target = new Ticket<>(ticketType, ticketLevel, ticketIdentifier);
|
||||
|
||||
for (java.util.Iterator<ArraySetSorted<Ticket<?>>> iterator = this.tickets.values().iterator(); iterator.hasNext();) {
|
||||
@@ -327,6 +474,222 @@ public abstract class ChunkMapDistance {
|
||||
for (java.util.Iterator<Entry<ArraySetSorted<Ticket<?>>>> iterator = this.tickets.long2ObjectEntrySet().fastIterator(); iterator.hasNext();) {
|
||||
@@ -332,6 +479,222 @@ public abstract class ChunkMapDistance {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4277,7 +4277,7 @@ index 73d1570765..6826c0369c 100644
|
||||
class c extends ChunkMapDistance.b {
|
||||
|
||||
private int e = 0;
|
||||
@@ -344,7 +707,7 @@ public abstract class ChunkMapDistance {
|
||||
@@ -349,7 +712,7 @@ public abstract class ChunkMapDistance {
|
||||
}
|
||||
|
||||
public void a(int i) {
|
||||
@@ -4286,7 +4286,7 @@ index 73d1570765..6826c0369c 100644
|
||||
|
||||
while (objectiterator.hasNext()) {
|
||||
it.unimi.dsi.fastutil.longs.Long2ByteMap.Entry it_unimi_dsi_fastutil_longs_long2bytemap_entry = (it.unimi.dsi.fastutil.longs.Long2ByteMap.Entry) objectiterator.next();
|
||||
@@ -425,7 +788,7 @@ public abstract class ChunkMapDistance {
|
||||
@@ -430,7 +793,7 @@ public abstract class ChunkMapDistance {
|
||||
|
||||
class b extends ChunkMap {
|
||||
|
||||
@@ -9267,7 +9267,7 @@ index f70468adab..2be7962bc5 100644
|
||||
public void restart() {
|
||||
org.spigotmc.RestartCommand.restart();
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
index 1a5ee34103..339ec053c7 100644
|
||||
index 051506fce8..4db397d9f9 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
@@ -3,6 +3,7 @@ package org.bukkit.craftbukkit;
|
||||
@@ -9278,7 +9278,7 @@ index 1a5ee34103..339ec053c7 100644
|
||||
import it.unimi.dsi.fastutil.longs.Long2ObjectLinkedOpenHashMap;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
@@ -287,9 +288,9 @@ public class CraftWorld implements World {
|
||||
@@ -291,9 +292,9 @@ public class CraftWorld implements World {
|
||||
}
|
||||
public int getTileEntityCount() {
|
||||
// We don't use the full world tile entity list, so we must iterate chunks
|
||||
@@ -9290,7 +9290,7 @@ index 1a5ee34103..339ec053c7 100644
|
||||
net.minecraft.server.Chunk chunk = playerchunk.getChunk();
|
||||
if (chunk == null) {
|
||||
continue;
|
||||
@@ -304,7 +305,7 @@ public class CraftWorld implements World {
|
||||
@@ -308,7 +309,7 @@ public class CraftWorld implements World {
|
||||
public int getChunkCount() {
|
||||
int ret = 0;
|
||||
|
||||
@@ -9299,7 +9299,7 @@ index 1a5ee34103..339ec053c7 100644
|
||||
if (chunkHolder.getChunk() != null) {
|
||||
++ret;
|
||||
}
|
||||
@@ -428,8 +429,8 @@ public class CraftWorld implements World {
|
||||
@@ -432,8 +433,8 @@ public class CraftWorld implements World {
|
||||
|
||||
@Override
|
||||
public Chunk[] getLoadedChunks() {
|
||||
@@ -9310,7 +9310,7 @@ index 1a5ee34103..339ec053c7 100644
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -458,6 +459,7 @@ public class CraftWorld implements World {
|
||||
@@ -462,6 +463,7 @@ public class CraftWorld implements World {
|
||||
net.minecraft.server.IChunkAccess chunk = world.getChunkProvider().getChunkAt(x, z, ChunkStatus.FULL, false);
|
||||
if (chunk != null) {
|
||||
world.getChunkProvider().removeTicket(TicketType.PLUGIN, chunk.getPos(), 1, Unit.INSTANCE);
|
||||
@@ -9318,7 +9318,7 @@ index 1a5ee34103..339ec053c7 100644
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -1090,16 +1092,16 @@ public class CraftWorld implements World {
|
||||
@@ -1094,16 +1096,16 @@ public class CraftWorld implements World {
|
||||
|
||||
@Override
|
||||
public List<Entity> getEntities() {
|
||||
@@ -9338,7 +9338,7 @@ index 1a5ee34103..339ec053c7 100644
|
||||
list.add(bukkitEntity);
|
||||
}
|
||||
}
|
||||
@@ -1110,16 +1112,16 @@ public class CraftWorld implements World {
|
||||
@@ -1114,16 +1116,16 @@ public class CraftWorld implements World {
|
||||
|
||||
@Override
|
||||
public List<LivingEntity> getLivingEntities() {
|
||||
@@ -9358,7 +9358,7 @@ index 1a5ee34103..339ec053c7 100644
|
||||
list.add((LivingEntity) bukkitEntity);
|
||||
}
|
||||
}
|
||||
@@ -1140,7 +1142,7 @@ public class CraftWorld implements World {
|
||||
@@ -1144,7 +1146,7 @@ public class CraftWorld implements World {
|
||||
public <T extends Entity> Collection<T> getEntitiesByClass(Class<T> clazz) {
|
||||
Collection<T> list = new ArrayList<T>();
|
||||
|
||||
@@ -9367,7 +9367,7 @@ index 1a5ee34103..339ec053c7 100644
|
||||
if (entity instanceof net.minecraft.server.Entity) {
|
||||
if (((net.minecraft.server.Entity) entity).shouldBeRemoved) continue; // Paper
|
||||
Entity bukkitEntity = ((net.minecraft.server.Entity) entity).getBukkitEntity();
|
||||
@@ -1151,7 +1153,7 @@ public class CraftWorld implements World {
|
||||
@@ -1155,7 +1157,7 @@ public class CraftWorld implements World {
|
||||
|
||||
Class<?> bukkitClass = bukkitEntity.getClass();
|
||||
|
||||
@@ -9376,7 +9376,7 @@ index 1a5ee34103..339ec053c7 100644
|
||||
list.add((T) bukkitEntity);
|
||||
}
|
||||
}
|
||||
@@ -1164,7 +1166,7 @@ public class CraftWorld implements World {
|
||||
@@ -1168,7 +1170,7 @@ public class CraftWorld implements World {
|
||||
public Collection<Entity> getEntitiesByClasses(Class<?>... classes) {
|
||||
Collection<Entity> list = new ArrayList<Entity>();
|
||||
|
||||
@@ -9385,7 +9385,7 @@ index 1a5ee34103..339ec053c7 100644
|
||||
if (entity instanceof net.minecraft.server.Entity) {
|
||||
if (((net.minecraft.server.Entity) entity).shouldBeRemoved) continue; // Paper
|
||||
Entity bukkitEntity = ((net.minecraft.server.Entity) entity).getBukkitEntity();
|
||||
@@ -1177,7 +1179,7 @@ public class CraftWorld implements World {
|
||||
@@ -1181,7 +1183,7 @@ public class CraftWorld implements World {
|
||||
|
||||
for (Class<?> clazz : classes) {
|
||||
if (clazz.isAssignableFrom(bukkitClass)) {
|
||||
@@ -9394,7 +9394,7 @@ index 1a5ee34103..339ec053c7 100644
|
||||
list.add(bukkitEntity);
|
||||
}
|
||||
break;
|
||||
@@ -2454,10 +2456,43 @@ public class CraftWorld implements World {
|
||||
@@ -2467,10 +2469,43 @@ public class CraftWorld implements World {
|
||||
// Spigot start
|
||||
@Override
|
||||
public int getViewDistance() {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 10588016b28dcf38698b7e90134e60f1aa76685e Mon Sep 17 00:00:00 2001
|
||||
From 413346301d87c28a9fdc6a12ad8be444a9b77226 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Fri, 7 Feb 2020 04:42:57 -0600
|
||||
Subject: [PATCH] Ender dragon always drop egg
|
||||
@@ -9,15 +9,15 @@ Subject: [PATCH] Ender dragon always drop egg
|
||||
2 files changed, 5 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/EnderDragonBattle.java b/src/main/java/net/minecraft/server/EnderDragonBattle.java
|
||||
index 218c04245b..48398aa9f0 100644
|
||||
index 687efa022d..ead3346072 100644
|
||||
--- a/src/main/java/net/minecraft/server/EnderDragonBattle.java
|
||||
+++ b/src/main/java/net/minecraft/server/EnderDragonBattle.java
|
||||
@@ -21,7 +21,7 @@ public class EnderDragonBattle {
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
private static final Predicate<Entity> b = IEntitySelector.a.and(IEntitySelector.a(0.0D, 128.0D, 0.0D, 192.0D));
|
||||
public final BossBattleServer bossBattle;
|
||||
- private final WorldServer d;
|
||||
+ private final WorldServer d; public WorldServer getWorld() { return d; } // Purpur - OBFHELPER
|
||||
- public final WorldServer d; // CraftBukkit PAIL private -> public, rename world
|
||||
+ public final WorldServer d; public WorldServer getWorld() { return d; } // Purpur - OBFHELPER
|
||||
private final List<Integer> e;
|
||||
private final ShapeDetector f;
|
||||
private int g;
|
||||
|
||||
@@ -1,20 +1,21 @@
|
||||
From f5e5f66187d41368f78a3d3e57615d41f6ac4fc5 Mon Sep 17 00:00:00 2001
|
||||
From 458fd315ee6aec1a13dd76ae82f0520a1307c09e Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Sat, 1 Feb 2020 22:22:16 -0600
|
||||
Subject: [PATCH] Add moon phase API
|
||||
|
||||
---
|
||||
src/main/java/org/bukkit/craftbukkit/CraftWorld.java | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
src/main/java/org/bukkit/craftbukkit/CraftWorld.java | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
index 339ec053c7..e873d77db2 100644
|
||||
index 4db397d9f9..a49b3469a3 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
@@ -2434,6 +2434,13 @@ public class CraftWorld implements World {
|
||||
return persistentRaid.raids.values().stream().map(CraftRaid::new).collect(Collectors.toList());
|
||||
}
|
||||
@@ -2447,6 +2447,14 @@ public class CraftWorld implements World {
|
||||
|
||||
return new CraftDragonBattle(((WorldProviderTheEnd) worldProvider).o()); // PAIL rename getDragonBattle
|
||||
}
|
||||
+
|
||||
+ // Purpur start
|
||||
+ @Override
|
||||
+ public net.pl3x.purpur.MoonPhase getMoonPhase() {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 53db874caac91ef3a2ccd51af5d1c0e10097aa6a Mon Sep 17 00:00:00 2001
|
||||
From dcf5faf511f1cdbfbbbf318a2e50cb159881aeae Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
|
||||
Date: Sat, 8 Feb 2020 23:30:17 -0600
|
||||
Subject: [PATCH] Add getPlacementBlockData to World
|
||||
@@ -66,10 +66,10 @@ index 9c9b93f280..74a722cce5 100644
|
||||
public static final Item bZ = a(Blocks.CHEST, CreativeModeTab.c);
|
||||
public static final Item ca = a(Blocks.DIAMOND_ORE, CreativeModeTab.b);
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
index e873d77db2..0659bc1df0 100644
|
||||
index a49b3469a3..56033969f9 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
@@ -2439,6 +2439,11 @@ public class CraftWorld implements World {
|
||||
@@ -2453,6 +2453,11 @@ public class CraftWorld implements World {
|
||||
public net.pl3x.purpur.MoonPhase getMoonPhase() {
|
||||
return net.pl3x.purpur.MoonPhase.getPhase(getFullTime() / 24000L);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 81e3208c185e85395958ca9331ccfd30e660cddf Mon Sep 17 00:00:00 2001
|
||||
From 7aceb4634f8438371fc92f8ac28abaf4e1839792 Mon Sep 17 00:00:00 2001
|
||||
From: William Blake Galbreath <blake.galbreath@gmail.com>
|
||||
Date: Sat, 19 Oct 2019 01:42:50 -0500
|
||||
Subject: [PATCH] Fix SpawnChangeEvent not firing for all use-cases
|
||||
@@ -9,7 +9,7 @@ Subject: [PATCH] Fix SpawnChangeEvent not firing for all use-cases
|
||||
2 files changed, 11 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/World.java b/src/main/java/net/minecraft/server/World.java
|
||||
index 0cf3a64fcf..5cf24b2470 100644
|
||||
index ae3073bd54..846a59305d 100644
|
||||
--- a/src/main/java/net/minecraft/server/World.java
|
||||
+++ b/src/main/java/net/minecraft/server/World.java
|
||||
@@ -1408,8 +1408,11 @@ public abstract class World implements GeneratorAccess, AutoCloseable {
|
||||
@@ -25,10 +25,10 @@ index 0cf3a64fcf..5cf24b2470 100644
|
||||
|
||||
public boolean a(EntityHuman entityhuman, BlockPosition blockposition) {
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
index 0659bc1df0..561931f639 100644
|
||||
index 56033969f9..0dafa7666f 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
@@ -376,12 +376,16 @@ public class CraftWorld implements World {
|
||||
@@ -380,12 +380,16 @@ public class CraftWorld implements World {
|
||||
@Override
|
||||
public boolean setSpawnLocation(int x, int y, int z) {
|
||||
try {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 2eb8ed62d0984187ba4614e4b106ca5e689732da Mon Sep 17 00:00:00 2001
|
||||
From 81f98328efd0a673f6c9e07e454e604859c44258 Mon Sep 17 00:00:00 2001
|
||||
From: chase <chasewhip20@gmail.com>
|
||||
Date: Sun, 15 Mar 2020 18:32:22 -0600
|
||||
Subject: [PATCH] Per World Spawn limits
|
||||
@@ -31,10 +31,10 @@ index 629fbca11c..88b704b50b 100644
|
||||
public boolean batRidableInWater = false;
|
||||
public boolean batRequireShiftToMount = true;
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
index 561931f639..2960c94d0c 100644
|
||||
index 0dafa7666f..5410a416af 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
@@ -325,6 +325,13 @@ public class CraftWorld implements World {
|
||||
@@ -329,6 +329,13 @@ public class CraftWorld implements World {
|
||||
this.generator = gen;
|
||||
|
||||
environment = env;
|
||||
|
||||
Reference in New Issue
Block a user