9
0
mirror of https://github.com/SparklyPower/SparklyPaper.git synced 2025-12-28 11:29:07 +00:00
Files
SparklyPaperMC/sparklypaper-server/minecraft-patches/features/0018-Add-EntityGetProjectileForWeaponEvent.patch
MrPowerGamerBR 09aebcf7f5 (NOT FINISHED) Update to Paper 1.21.5
Yes, the update is COMPLETELY borked, there are broken patches, it does not compile, there are even diff conflict things inside of patches

This is still very unfinished and you should not use it
2025-04-23 15:36:07 -03:00

41 lines
3.2 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrPowerGamerBR <git@mrpowergamerbr.com>
Date: Sun, 23 Feb 2025 18:53:43 -0300
Subject: [PATCH] Add EntityGetProjectileForWeaponEvent
diff --git a/net/minecraft/world/entity/monster/Monster.java b/net/minecraft/world/entity/monster/Monster.java
index 5ef9566b16a4d0300ee45a993c46e734db156416..023cc77b31c5e2ad651a51ccb6c7f6b13811beb3 100644
--- a/net/minecraft/world/entity/monster/Monster.java
+++ b/net/minecraft/world/entity/monster/Monster.java
@@ -137,6 +137,12 @@ public abstract class Monster extends PathfinderMob implements Enemy {
@Override
public ItemStack getProjectile(ItemStack shootable) {
if (shootable.getItem() instanceof ProjectileWeaponItem) {
+ // SparklyPaper start - Add EntityGetProjectileForWeaponEvent
+ net.sparklypower.sparklypaper.event.entity.EntityGetProjectileForWeaponEvent event = new net.sparklypower.sparklypaper.event.entity.EntityGetProjectileForWeaponEvent(this.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(shootable));
+ event.callEvent();
+ if (event.getArrow() != null)
+ return org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(event.getArrow());
+ // SparklyPaper end
Predicate<ItemStack> supportedHeldProjectiles = ((ProjectileWeaponItem)shootable.getItem()).getSupportedHeldProjectiles();
ItemStack heldProjectile = ProjectileWeaponItem.getHeldProjectile(this, supportedHeldProjectiles);
return heldProjectile.isEmpty() ? new ItemStack(Items.ARROW) : heldProjectile;
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
index 2046c4d3ad5ea3254ad6bc83e6437e5c237c92b6..7c3219bf17d7724e2d91748034e4e63a96a1556f 100644
--- a/net/minecraft/world/entity/player/Player.java
+++ b/net/minecraft/world/entity/player/Player.java
@@ -2127,6 +2127,12 @@ public abstract class Player extends LivingEntity {
if (!(shootable.getItem() instanceof ProjectileWeaponItem)) {
return ItemStack.EMPTY;
} else {
+ // SparklyPaper start - Add EntityGetProjectileForWeaponEvent
+ net.sparklypower.sparklypaper.event.entity.EntityGetProjectileForWeaponEvent event = new net.sparklypower.sparklypaper.event.entity.EntityGetProjectileForWeaponEvent(this.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(shootable));
+ event.callEvent();
+ if (event.getArrow() != null)
+ return org.bukkit.craftbukkit.inventory.CraftItemStack.asNMSCopy(event.getArrow());
+ // SparklyPaper end
final org.apache.commons.lang3.mutable.MutableBoolean anyEventCancelled = new org.apache.commons.lang3.mutable.MutableBoolean(); // Paper - PlayerReadyArrowEvent
Predicate<ItemStack> supportedHeldProjectiles = ((ProjectileWeaponItem)shootable.getItem()).getSupportedHeldProjectiles().and(item -> this.tryReadyArrow(shootable, item, anyEventCancelled)); // Paper - PlayerReadyArrowEvent
ItemStack heldProjectile = ProjectileWeaponItem.getHeldProjectile(this, supportedHeldProjectiles);