Really fix riding mobs (no client mod needed)

This commit is contained in:
William Blake Galbreath
2019-12-21 02:01:04 -06:00
parent 7525042e5b
commit 2d0b0501a5
2 changed files with 7 additions and 108 deletions

View File

@@ -1,4 +1,4 @@
From 84127fe99d1b2d97fbc22300ae017c72fdb0627f Mon Sep 17 00:00:00 2001
From eb9bf7c8e7ca877d3461bd56c6ade52c42f3a7c7 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <blake.galbreath@gmail.com>
Date: Tue, 30 Apr 2019 19:17:21 -0500
Subject: [PATCH] Integrate ridables
@@ -77,7 +77,7 @@ Subject: [PATCH] Integrate ridables
.../server/EntityZombieVillager.java | 3 +-
src/main/java/net/minecraft/server/Vec3D.java | 1 +
.../java/net/pl3x/purpur/PurpurConfig.java | 124 ++++++++++++++++++
.../purpur/controller/ControllerLookWASD.java | 74 +++++++++++
.../purpur/controller/ControllerLookWASD.java | 75 +++++++++++
.../purpur/controller/ControllerMoveWASD.java | 77 +++++++++++
.../controller/ControllerMoveWASDFlying.java | 62 +++++++++
.../ControllerMoveWASDFlyingWithSpacebar.java | 65 +++++++++
@@ -85,7 +85,7 @@ Subject: [PATCH] Integrate ridables
.../pathfinder/PathfinderGoalHasRider.java | 20 +++
.../craftbukkit/entity/CraftLivingEntity.java | 10 ++
.../bukkit/craftbukkit/entity/CraftMob.java | 12 ++
81 files changed, 1360 insertions(+), 124 deletions(-)
81 files changed, 1361 insertions(+), 124 deletions(-)
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASD.java
create mode 100644 src/main/java/net/pl3x/purpur/controller/ControllerMoveWASDFlying.java
@@ -2997,10 +2997,10 @@ index 960361ff7..c4955fae6 100644
}
diff --git a/src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java b/src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java
new file mode 100644
index 000000000..99e184d36
index 000000000..7c79e23d3
--- /dev/null
+++ b/src/main/java/net/pl3x/purpur/controller/ControllerLookWASD.java
@@ -0,0 +1,74 @@
@@ -0,0 +1,75 @@
+package net.pl3x.purpur.controller;
+
+import net.minecraft.server.ControllerLook;
@@ -3045,7 +3045,8 @@ index 000000000..99e184d36
+ entity.pitch = normalizePitch(pitch + pitchOffset);
+
+ entity.getTracker().broadcast(new PacketPlayOutEntity
+ .PacketPlayOutEntityLook(entity.getId(),
+ .PacketPlayOutRelEntityMoveLook(entity.getId(),
+ (short) 0, (short) 0, (short) 0,
+ (byte) MathHelper.d(entity.yaw * 256.0F / 360.0F),
+ (byte) MathHelper.d(entity.pitch * 256.0F / 360.0F),
+ entity.onGround));

View File

@@ -1,102 +0,0 @@
From 2f6c2fb4db5eda2d786d13a0894e7e5c5e4bc572 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
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 86600fce0..f381e2ab4 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;
@@ -396,6 +397,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);
ridableBee = getBoolean("settings.ridable.bee", ridableBee);
@@ -455,6 +457,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