Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,10 @@ index a86f896b44dbdfe3d46e2e95634fbc9c7038aa2d..d65d4d07a0efe0c8264f06297b34b702

return itemstack;
diff --git a/src/main/java/net/minecraft/server/ContainerWorkbench.java b/src/main/java/net/minecraft/server/ContainerWorkbench.java
index 48d524e54a6b9b13dd6d4b3863d328b97bce6a7e..e6bca129ed97e5657405e15a7e1739fbbbac92ca 100644
index 78df2db46005cc9eeb7090a75aee55c02948075f..b0f1a35694f33baaba05f38849d9dbef7e4cea92 100644
--- a/src/main/java/net/minecraft/server/ContainerWorkbench.java
+++ b/src/main/java/net/minecraft/server/ContainerWorkbench.java
@@ -123,6 +123,12 @@ public class ContainerWorkbench extends Container {
@@ -125,6 +125,12 @@ public class ContainerWorkbench extends Container {
}

slot.a(entityhuman, itemstack1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,11 @@ diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.j
index 3dd3d0702c17541083d0d365ca46e93602105bce..b5f16e8cab9e43ad7597b2ea5bc921399b37872b 100644
--- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java
+++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java
@@ -6,6 +6,13 @@ import org.spongepowered.configurate.objectmapping.meta.Comment;
@@ -6,6 +6,12 @@ import org.spongepowered.configurate.objectmapping.meta.Comment;
@ConfigSerializable
@SuppressWarnings({"FieldCanBeLocal", "FieldMayBeFinal"})
public class PandaSpigotWorldConfig {
+ @Comment("How many ticks in between sending time updates to players?\n" +
+ "\n" +
+ "The vanilla option is 20 (every second), but PandaSpigot sets the default\n" +
+ "to 100 (every 5 seconds). You would probably be fine setting this even\n" +
+ "higher, unless you're constantly changing the time, or the server is lagging.")
Expand Down
3 changes: 1 addition & 2 deletions patches/pandaspigot/server/0017-Smooth-teleportation.patch
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,13 @@ diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.j
index b5f16e8cab9e43ad7597b2ea5bc921399b37872b..bde014f003bccca916dbc74fc27436bf4b193fdf 100644
--- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java
+++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java
@@ -13,6 +13,15 @@ public class PandaSpigotWorldConfig {
@@ -12,6 +12,14 @@ public class PandaSpigotWorldConfig {
"higher, unless you're constantly changing the time, or the server is lagging.")
public int timeUpdateFrequency = 100;

+ @Comment("This option makes it so that when players are teleported to a location\n" +
+ "with the same rotation they currently have, the server will send a special\n" +
+ "packet indicating that the client should not update it's rotation at all.\n" +
+ "\n" +
+ "For example, normally constantly teleporting a player to their own location\n" +
+ "will make moving their head very difficult, especially for players with higher latency.\n" +
+ "With this option enabled, they will be able to move their head just like normal.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.j
index bde014f003bccca916dbc74fc27436bf4b193fdf..fb9db2dafcf180dbb25c768936cb59a58a7a3584 100644
--- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java
+++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java
@@ -22,6 +22,15 @@ public class PandaSpigotWorldConfig {
@@ -20,6 +20,15 @@ public class PandaSpigotWorldConfig {
"With this option enabled, they will be able to move their head just like normal.")
public boolean smoothTeleportation = false;

Expand Down
3 changes: 1 addition & 2 deletions patches/pandaspigot/server/0023-Configurable-entity-AI.patch
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,11 @@ diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.j
index fb9db2dafcf180dbb25c768936cb59a58a7a3584..04f04ce721aa06fba935618176c77587e305a5b0 100644
--- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java
+++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java
@@ -31,6 +31,11 @@ public class PandaSpigotWorldConfig {
@@ -29,6 +29,10 @@ public class PandaSpigotWorldConfig {
@Comment("When enabled, this option will disable saving world chunks.")
public boolean disableChunkSaving = false;

+ @Comment("When enabled, entity AI will be disabled.\n" +
+ "\n" +
+ "This has the same effect as Spigot's \"nerf-spawner-mobs\" option, but applies to all entities.")
+ public boolean disableEntityAi = false;
+
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.j
index 04f04ce721aa06fba935618176c77587e305a5b0..05c9ebb76a3cb19e887bea1311ac36035334b9a1 100644
--- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java
+++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java
@@ -36,6 +36,10 @@ public class PandaSpigotWorldConfig {
@@ -33,6 +33,10 @@ public class PandaSpigotWorldConfig {
"This has the same effect as Spigot's \"nerf-spawner-mobs\" option, but applies to all entities.")
public boolean disableEntityAi = false;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.j
index 05c9ebb76a3cb19e887bea1311ac36035334b9a1..1e0393f667029809ac3476069cebe1ef34afadc8 100644
--- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java
+++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java
@@ -52,4 +52,8 @@ public class PandaSpigotWorldConfig {
@@ -49,4 +49,8 @@ public class PandaSpigotWorldConfig {
public double extraHorizontal = 0.5;
public double extraVertical = 0.1;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.j
index 1e0393f667029809ac3476069cebe1ef34afadc8..3e85450bbccc54414be7998562fadc92d2541fb4 100644
--- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java
+++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java
@@ -56,4 +56,6 @@ public class PandaSpigotWorldConfig {
@@ -53,4 +53,6 @@ public class PandaSpigotWorldConfig {
public boolean optimizeTntMovement = false; // May not fully emulate vanilla behavior

public boolean optimizeLiquidExplosions = true; // This seems like a pretty sane default
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.j
index 3e85450bbccc54414be7998562fadc92d2541fb4..360ed37b95fce68941c234615b465090b8ea7308 100644
--- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java
+++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java
@@ -58,4 +58,8 @@ public class PandaSpigotWorldConfig {
@@ -55,4 +55,8 @@ public class PandaSpigotWorldConfig {
public boolean optimizeLiquidExplosions = true; // This seems like a pretty sane default

public boolean optimizeArmorStandMovement = false; // Doesn't fully emulate vanilla behavior, see TacoSpigot issue #1
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.j
index 360ed37b95fce68941c234615b465090b8ea7308..aa2af045e8b5be60b5fae412c8dd29bd2e288639 100644
--- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java
+++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotWorldConfig.java
@@ -62,4 +62,17 @@ public class PandaSpigotWorldConfig {
@@ -59,4 +59,15 @@ public class PandaSpigotWorldConfig {
@Comment("This option controls whether or not there is a chance for arrow crits to deal extra damage.\n" +
"By default, this is true (vanilla behaviour)")
public boolean randomArrowDamage = true;
Expand All @@ -18,11 +18,9 @@ index 360ed37b95fce68941c234615b465090b8ea7308..aa2af045e8b5be60b5fae412c8dd29bd
+ "selects chunks around players for ticking, improving performance at the cost\n" +
+ "of deviating from vanilla chunk ticking behaviour (for example, plant growth\n" +
+ "rates may differ).\n" +
+ "\n" +
+ "When disabled, uses PandaSpigot's chunk ticking implementation based on\n" +
+ "the vanilla 1.9 algorithm, which more closely matches vanilla 1.8/1.9\n" +
+ "behaviour while still providing performance optimizations.\n" +
+ "\n" +
+ "Default: false")
+ public boolean useSpigotChunkTickingSelection = false;
}
Expand Down Expand Up @@ -61,7 +59,7 @@ index 652c07975c7b3a3c5e3dc68cb60ca5fc52e1848c..d93670b5fd2ee58a7b1d4ccd2479cc43
return (this.x << 4) + 8;
}
diff --git a/src/main/java/net/minecraft/server/PlayerChunkMap.java b/src/main/java/net/minecraft/server/PlayerChunkMap.java
index 1c9dbe212cfbeb571f1e09f224fb7ed905dd475b..4e5139ff054fdec1f1c603f720b37a74f572196d 100644
index 1c9dbe212cfbeb571f1e09f224fb7ed905dd475b..6a489b4514d565b47d930a6ed1abf94cd863cf54 100644
--- a/src/main/java/net/minecraft/server/PlayerChunkMap.java
+++ b/src/main/java/net/minecraft/server/PlayerChunkMap.java
@@ -1,5 +1,9 @@
Expand Down Expand Up @@ -101,7 +99,7 @@ index 1c9dbe212cfbeb571f1e09f224fb7ed905dd475b..4e5139ff054fdec1f1c603f720b37a74
+ continue;
+ }
+
+ if (!chunk.u() && chunk.isDone()) {
+ if (PlayerChunkMap.this.world.spigotConfig.randomLightUpdates && !chunk.u() && chunk.isDone()) {
+ return chunk;
+ }
+
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: anzz1 <anzz1@live.com>
Date: Fri, 19 Jun 2026 11:21:11 +0000
Subject: [PATCH] Entity tracking range vanilla option

Allow setting 'entity-tracking-range' to -1 to use vanilla entity
tracking range values
Also functions as a sanity check for negative values

diff --git a/src/main/java/org/spigotmc/TrackingRange.java b/src/main/java/org/spigotmc/TrackingRange.java
index 4bf4d2ac64b14a3fb740af8bbe888130099573c4..9ed203517647d1e81ee04dd2fb1288aa0f1cd7fd 100644
--- a/src/main/java/org/spigotmc/TrackingRange.java
+++ b/src/main/java/org/spigotmc/TrackingRange.java
@@ -21,31 +21,41 @@ public class TrackingRange
*/
public static int getEntityTrackingRange(Entity entity, int defaultRange)
{
+ int i;
SpigotWorldConfig config = entity.world.spigotConfig;
if ( entity instanceof EntityPlayer )
{
- return config.playerTrackingRange;
+ i = config.playerTrackingRange;
} else if ( entity.activationType == 1 )
{
- return config.monsterTrackingRange;
+ i = config.monsterTrackingRange;
} else if ( entity instanceof EntityGhast )
{
if ( config.monsterTrackingRange > config.monsterActivationRange )
{
- return config.monsterTrackingRange;
+ i = config.monsterTrackingRange;
} else
{
- return config.monsterActivationRange;
+ i = config.monsterActivationRange;
}
} else if ( entity.activationType == 2 )
{
- return config.animalTrackingRange;
+ i = config.animalTrackingRange;
} else if ( entity instanceof EntityItemFrame || entity instanceof EntityPainting || entity instanceof EntityItem || entity instanceof EntityExperienceOrb )
{
- return config.miscTrackingRange;
+ i = config.miscTrackingRange;
} else
{
- return config.otherTrackingRange;
+ i = config.otherTrackingRange;
}
+
+ // PandaSpigot start - Entity tracking range vanilla option
+ if (i < 0)
+ {
+ i = defaultRange;
+ }
+ // PandaSpigot end
+
+ return i;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: uRyanxD <familiarodrigues123ro@gmail.com>
Date: Fri, 26 Jun 2026 16:08:57 -0300
Subject: [PATCH] Backport Fix SPIGOT-3348: Skin Cache Bug


diff --git a/src/main/java/net/minecraft/server/TileEntitySkull.java b/src/main/java/net/minecraft/server/TileEntitySkull.java
index 58014c5f142abf72fcf6a7164872bbe7d7bb9d18..2c94ffa6c72d2851513c527fb14f058f24f1e35f 100644
--- a/src/main/java/net/minecraft/server/TileEntitySkull.java
+++ b/src/main/java/net/minecraft/server/TileEntitySkull.java
@@ -162,7 +162,7 @@ public class TileEntitySkull extends TileEntity {
} else if (MinecraftServer.getServer() == null) {
callback.apply(gameprofile);
} else {
- GameProfile profile = skinCache.getIfPresent(gameprofile.getName());
+ GameProfile profile = skinCache.getIfPresent(gameprofile.getName().toLowerCase()); // PandaSpigot - Fix SPIGOT-3348: Skin Cache Bug
if (profile != null && Iterables.getFirst(profile.getProperties().get("textures"), (Object) null) != null) {
callback.apply(profile);
} else {
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: anzz1 <anzz1@live.com>
Date: Thu, 18 Jun 2026 13:36:13 +0000
Subject: [PATCH] Fix MC-87 map scaling/cloning issues

Backport MC-87 fix from 1.11
Fixes map not scaling when shift-clicking the result from workbench
And NBT tags not cloning when cloning a map

diff --git a/src/main/java/net/minecraft/server/ContainerWorkbench.java b/src/main/java/net/minecraft/server/ContainerWorkbench.java
index 48d524e54a6b9b13dd6d4b3863d328b97bce6a7e..78df2db46005cc9eeb7090a75aee55c02948075f 100644
--- a/src/main/java/net/minecraft/server/ContainerWorkbench.java
+++ b/src/main/java/net/minecraft/server/ContainerWorkbench.java
@@ -95,6 +95,8 @@ public class ContainerWorkbench extends Container {

itemstack = itemstack1.cloneItemStack();
if (i == 0) {
+ itemstack1.getItem().d(itemstack1, this.g, entityhuman); // PandaSpigot - Fix MC-87 map scaling/cloning issues
+
if (!this.a(itemstack1, 10, 46, true)) {
return null;
}
diff --git a/src/main/java/net/minecraft/server/ItemWorldMap.java b/src/main/java/net/minecraft/server/ItemWorldMap.java
index 6473ee5b795253994cd482f1c0caea1e83ff985c..0cc720392dfd386324f6a553411d28a0749b9835 100644
--- a/src/main/java/net/minecraft/server/ItemWorldMap.java
+++ b/src/main/java/net/minecraft/server/ItemWorldMap.java
@@ -208,6 +208,8 @@ public class ItemWorldMap extends ItemWorldMapBase {
worldmap1.c();
world.a("map_" + itemstack.getData(), (PersistentBase) worldmap1);

+ itemstack.getTag().remove("map_is_scaling"); // PandaSpigot - Fix MC-87 map scaling/cloning issues
+
// CraftBukkit start
MapInitializeEvent event = new MapInitializeEvent(worldmap1.mapView);
Bukkit.getServer().getPluginManager().callEvent(event);
diff --git a/src/main/java/net/minecraft/server/RecipeMapClone.java b/src/main/java/net/minecraft/server/RecipeMapClone.java
index 579f6d1d2e68c86d11054c3c6c79993ef18f3017..9e3ae8969b1f3bf8a24cb3adb1890d37e1d9bef1 100644
--- a/src/main/java/net/minecraft/server/RecipeMapClone.java
+++ b/src/main/java/net/minecraft/server/RecipeMapClone.java
@@ -66,6 +66,13 @@ public class RecipeMapClone extends ShapelessRecipes implements IRecipe { // Cra
itemstack2.c(itemstack.getName());
}

+ // PandaSpigot start - Fix MC-87 map scaling/cloning issues
+ if (itemstack.hasTag())
+ {
+ itemstack2.setTag(itemstack.getTag());
+ }
+ // PandaSpigot end
+
return itemstack2;
} else {
return null;
51 changes: 51 additions & 0 deletions patches/pandaspigot/server/0132-Better-spawn-protection.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: anzz1 <anzz1@live.com>
Date: Sun, 28 Jun 2026 13:21:04 +0000
Subject: [PATCH] Better spawn protection

Protect spawn from explosions

diff --git a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotConfig.java b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotConfig.java
index f1769ecc8fe0725171b638b7d8b7bbbc9e5250d1..c63cd15c13b503d91ef0245ffe0de7f85dd6f540 100644
--- a/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotConfig.java
+++ b/src/main/java/com/hpfxd/pandaspigot/config/PandaSpigotConfig.java
@@ -127,4 +127,7 @@ public class PandaSpigotConfig {
public int tabSpamIncrement = 10;

public int tabSpamLimit = 500;
+
+ @Comment("Protect spawn from explosions")
+ public boolean betterSpawnProtection = true;
}
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index 67d7f178a43256a3fc37f235cc8b4db990e17c35..0f4e8c767632430a4cda8905331e6cede4351566 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -522,7 +522,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
return false;
*/
// PandaSpigot end
- } else if (this.aP().isOp(entityhuman.getProfile())) {
+ } else if (entityhuman != null && this.aP().isOp(entityhuman.getProfile())) { // PandaSpigot - Better spawn protection
return false;
} else if (this.getSpawnProtection() <= 0) {
return false;
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
index 9d8bb72b469163db7def78f623d18dc4056b1f6b..e2b6f0a788fe56cacbadb457a7c65b3412a1b528 100644
--- a/src/main/java/net/minecraft/server/Entity.java
+++ b/src/main/java/net/minecraft/server/Entity.java
@@ -2056,7 +2056,13 @@ public abstract class Entity implements ICommandListener {
}

public boolean a(Explosion explosion, World world, BlockPosition blockposition, IBlockData iblockdata, float f) {
- return true;
+ // PandaSpigot start - Better spawn protection
+ if (com.hpfxd.pandaspigot.config.PandaSpigotConfig.get().betterSpawnProtection) {
+ return !MinecraftServer.getServer().a(world, blockposition, (this instanceof EntityHuman) ? (EntityHuman)this : null);
+ } else {
+ return true;
+ }
+ // PandaSpigot end
}

public int aE() {
1 change: 0 additions & 1 deletion scripts/applyPatches.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
PS1="$"
basedir="$(cd "$1" && pwd -P)"
workdir="$basedir/base"
minecraftversion=$(cat "$workdir/Paper/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4)
gitcmd="git -c commit.gpgsign=false"
applycmd="$gitcmd am --3way --ignore-whitespace"
# Windows detection to workaround ARG_MAX limitation
Expand Down
1 change: 0 additions & 1 deletion scripts/decompile.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ PS1="$"
basedir="$(cd "$1" && pwd -P)"
workdir="$basedir/base"
minecraftversion=$(cat "$workdir/Paper/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4)
windows="$([[ "$OSTYPE" == "cygwin" || "$OSTYPE" == "msys" ]] && echo "true" || echo "false")"
decompiledir="$workdir/mc-dev"
spigotdecompiledir="$decompiledir/spigot"
pandadecompiledir="$decompiledir/panda"
Expand Down
1 change: 0 additions & 1 deletion scripts/importmcdev.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@ source "$basedir/scripts/functions.sh"
gitcmd="git -c commit.gpgsign=false"

workdir="$basedir/base"
minecraftversion=$(cat "$workdir/Paper/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4)
decompiledir="$workdir/mc-dev/panda"

find "$decompiledir/$nms" -type f -name "*.java" | while read file; do
Expand Down
2 changes: 0 additions & 2 deletions scripts/init.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,9 @@ set -e
PS1="$"
basedir="$(cd "$1" && pwd -P)"
workdir="$basedir/base"
minecraftversion=$(cat "$workdir/Paper/BuildData/info.json" | grep minecraftVersion | cut -d '"' -f 4)
spigotdecompiledir="$workdir/mc-dev/spigot"
nms="$spigotdecompiledir/net/minecraft/server"
cb="src/main/java/net/minecraft/server"
resources="src/main/resources"
gitcmd="git -c commit.gpgsign=false"

# https://stackoverflow.com/a/38595160
Expand Down
1 change: 0 additions & 1 deletion scripts/rebuildPatches.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ function cleanupPatches {

function savePatches {
what=$1
what_name=$(basename "$what")
target=$2
patch_folder=$3
echo "Formatting patches for $what..."
Expand Down
Loading
Loading