From 12c9bf645518fc49ef7a9952c3fb7c6f8d0cb289 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Fri, 20 Dec 2019 17:53:29 -0600 Subject: [PATCH] Check for PurpurClient for riding mobs --- ...eck-for-PurpurClient-for-riding-mobs.patch | 102 ++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 patches/server/0091-Check-for-PurpurClient-for-riding-mobs.patch diff --git a/patches/server/0091-Check-for-PurpurClient-for-riding-mobs.patch b/patches/server/0091-Check-for-PurpurClient-for-riding-mobs.patch new file mode 100644 index 000000000..1b49f796d --- /dev/null +++ b/patches/server/0091-Check-for-PurpurClient-for-riding-mobs.patch @@ -0,0 +1,102 @@ +From 618e343c928140ff1bae228def0b56576dbfeb1e Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Thu, 19 Dec 2019 18:09:40 -0600 +Subject: [PATCH] Check for PurpurClient for riding mobs + +--- + src/main/java/net/minecraft/server/EntityHuman.java | 1 + + src/main/java/net/minecraft/server/EntityInsentient.java | 6 ++++++ + src/main/java/net/minecraft/server/PlayerConnection.java | 9 +++++++++ + src/main/java/net/pl3x/purpur/PurpurConfig.java | 6 ++++++ + 4 files changed, 22 insertions(+) + +diff --git a/src/main/java/net/minecraft/server/EntityHuman.java b/src/main/java/net/minecraft/server/EntityHuman.java +index cb5f51638..9b84792ea 100644 +--- a/src/main/java/net/minecraft/server/EntityHuman.java ++++ b/src/main/java/net/minecraft/server/EntityHuman.java +@@ -78,6 +78,7 @@ public abstract class EntityHuman extends EntityLiving { + // Paper start + public boolean affectsSpawning = true; + // Paper end ++ public boolean isUsingPurpurClient = false; // Purpur + + // CraftBukkit start + public boolean fauxSleeping; +diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java +index f9bbc0be4..1ec325f29 100644 +--- a/src/main/java/net/minecraft/server/EntityInsentient.java ++++ b/src/main/java/net/minecraft/server/EntityInsentient.java +@@ -1407,6 +1407,12 @@ public abstract class EntityInsentient extends EntityLiving { + entityhuman.getBukkitEntity().sendMessage("You cannot mount that mob"); + return false; + } ++ if (!entityhuman.isUsingPurpurClient) { ++ if (net.pl3x.purpur.PurpurConfig.ridablesNoClientModWarning != null && !net.pl3x.purpur.PurpurConfig.ridablesNoClientModWarning.isEmpty()) { ++ entityhuman.sendMessage(new ChatMessage(net.pl3x.purpur.PurpurConfig.ridablesNoClientModWarning)); ++ } ++ return false; ++ } + return mountTo(entityhuman); + } + +diff --git a/src/main/java/net/minecraft/server/PlayerConnection.java b/src/main/java/net/minecraft/server/PlayerConnection.java +index a8e053b9f..6578af934 100644 +--- a/src/main/java/net/minecraft/server/PlayerConnection.java ++++ b/src/main/java/net/minecraft/server/PlayerConnection.java +@@ -2735,6 +2735,7 @@ public class PlayerConnection implements PacketListenerPlayIn { + // CraftBukkit start + private static final MinecraftKey CUSTOM_REGISTER = new MinecraftKey("register"); + private static final MinecraftKey CUSTOM_UNREGISTER = new MinecraftKey("unregister"); ++ private static final MinecraftKey PURPUR_CLIENT = new MinecraftKey("purpurclient", "protocol"); // Purpur + + @Override + public void a(PacketPlayInCustomPayload packetplayincustompayload) { +@@ -2759,6 +2760,14 @@ public class PlayerConnection implements PacketListenerPlayIn { + PlayerConnection.LOGGER.error("Couldn\'t unregister custom payload", ex); + this.disconnect("Invalid payload UNREGISTER!"); + } ++ // Purpur start ++ } else if (packetplayincustompayload.tag.equals(PURPUR_CLIENT)) { ++ try { ++ String protocolVersion = packetplayincustompayload.data.toString(com.google.common.base.Charsets.UTF_8); ++ player.isUsingPurpurClient = true; ++ } catch (Exception ignore) { ++ } ++ // Purpur end + } else { + try { + byte[] data = new byte[packetplayincustompayload.data.readableBytes()]; +diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java +index efdf01e98..d242fac8c 100644 +--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java ++++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java +@@ -7,6 +7,7 @@ import net.minecraft.server.IRegistry; + import net.minecraft.server.MinecraftKey; + import net.minecraft.server.MinecraftServer; + import org.bukkit.Bukkit; ++import org.bukkit.ChatColor; + import org.bukkit.command.Command; + import org.bukkit.configuration.ConfigurationSection; + import org.bukkit.configuration.InvalidConfigurationException; +@@ -395,6 +396,7 @@ public class PurpurConfig { + public static boolean ridableZombie = true; + public static boolean ridableHusk = true; + public static boolean ridableZombieVillager = true; ++ public static String ridablesNoClientModWarning = "&cYou must have the PurpurClient mod to ride this mob"; + private static void enableRidableMobs() { + ridableBat = getBoolean("settings.ridable.bat", ridableBat); + ridableBlaze = getBoolean("settings.ridable.blaze", ridableBlaze); +@@ -453,6 +455,10 @@ public class PurpurConfig { + ridableZombie = getBoolean("settings.ridable.zombie", ridableZombie); + ridableZombiePigman = getBoolean("settings.ridable.zombie_pigman", ridableZombiePigman); + ridableZombieVillager = getBoolean("settings.ridable.zombie_villager", ridableZombieVillager); ++ ridablesNoClientModWarning = getString("settings.ridable.no-client-mod-warning", ridablesNoClientModWarning); ++ if (ridablesNoClientModWarning != null && !ridablesNoClientModWarning.isEmpty()) { ++ ridablesNoClientModWarning = ChatColor.translateAlternateColorCodes('&', ridablesNoClientModWarning); ++ } + } + + public static boolean controllableMinecarts = true; +-- +2.24.0.rc1 +