Files
Purpur/purpur-server/paper-patches/features/0002-Ridables.patch
granny c3870bda5a Updated Upstream (Paper)
Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@4511edb8 [ci/skip] Don't promote checking enchantment by legacy lore (#12421)
PaperMC/Paper@8f62e0fb Correctly order getArmorContents
PaperMC/Paper@652cea57 Allow `getAsString()`-ing non-persistent entities (#12424)
PaperMC/Paper@de64e704 Update spark
PaperMC/Paper@1b889688 Add Entity#isTrackedBy (#12332)
PaperMC/Paper@8ff94c63 Update a bunch of dependencies
PaperMC/Paper@79036210 Remove json-simple imports from API, keep it as implementation in server
PaperMC/Paper@dcb755ac Update log4j jd link
PaperMC/Paper@91bfb6fb Fix freeze locked (#12434)
PaperMC/Paper@121a7bf4 Make GameRule a FeatureDependant (#12429)
PaperMC/Paper@7d5695d7 Improve ItemMeta#hasCustomModelData compatibility (#12414)
PaperMC/Paper@de410d13 Fix reobf mappings regression in GameRules.Type (#12437)
PaperMC/Paper@33e8928f Add support for bonus chest configuration in WorldCreator (#12344)
PaperMC/Paper@723b511f Clone exit location passed to teleport event (#12354)
PaperMC/Paper@ed322043 Clone blockpos in InsideBlockEffectApplier record
PaperMC/Paper@6b4ad082 Add PlayerRespawnEvent#isMissingRespawnBlock (#12422)
PaperMC/Paper@c0bd5688 Add logic for Human canUseEquipmentSlot (#12433)
2025-04-14 16:14:39 -07:00

66 lines
2.8 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: William Blake Galbreath <Blake.Galbreath@GMail.com>
Date: Sun, 5 Jul 2020 22:19:49 -0500
Subject: [PATCH] Ridables
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
index 362df928a8e8bfe35a844d0a6de6985dd01a49d3..825bbc16338b25bdd1d81bbf6efebe6a8435a789 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
@@ -1305,4 +1305,26 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return this.entity.get(io.papermc.paper.datacomponent.PaperDataComponentType.bukkitToMinecraft(type)) != null;
}
+ // Purpur start - Ridables
+ @Override
+ public org.bukkit.entity.Player getRider() {
+ net.minecraft.world.entity.player.Player rider = getHandle().getRider();
+ return rider != null ? (org.bukkit.entity.Player) rider.getBukkitEntity() : null;
+ }
+
+ @Override
+ public boolean hasRider() {
+ return getHandle().getRider() != null;
+ }
+
+ @Override
+ public boolean isRidable() {
+ return getHandle().isRidable();
+ }
+
+ @Override
+ public boolean isRidableInWater() {
+ return !getHandle().dismountsUnderwater();
+ }
+ // Purpur end - Ridables
}
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
index a7e3afe04ffbb0fd5fa5fcf7cd15efd7cea1c4e0..f32316b0357f1cb0501a052361a0221f8e9d1438 100644
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
@@ -514,6 +514,15 @@ public class CraftEventFactory {
}
craftServer.getPluginManager().callEvent(event);
+ // Purpur start - Ridables
+ if (player != null) {
+ switch (action) {
+ case LEFT_CLICK_BLOCK, LEFT_CLICK_AIR -> player.processClick(InteractionHand.MAIN_HAND);
+ case RIGHT_CLICK_BLOCK, RIGHT_CLICK_AIR -> player.processClick(InteractionHand.OFF_HAND);
+ }
+ }
+ // Purpur end - Ridables
+
return event;
}
@@ -1046,6 +1055,7 @@ public class CraftEventFactory {
EntityDamageEvent event;
if (damager != null) {
event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical);
+ damager.processClick(InteractionHand.MAIN_HAND); // Purpur - Ridables
} else {
event = new EntityDamageEvent(damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions);
}