mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-19 15:09:25 +00:00
Cleanup fix to be better
Cleanup and always use updated projectile data on crossbow
This commit is contained in:
@@ -65,7 +65,7 @@ index d49a5360d4a21e5b15bac94a823831e25d242a3d..04286fdba0c22d5b6d7b3ab71ee1a1fe
|
||||
CriteriaTriggers.SHOT_CROSSBOW.trigger(serverPlayer, weapon);
|
||||
serverPlayer.awardStat(Stats.ITEM_USED.get(weapon.getItem()));
|
||||
diff --git a/net/minecraft/world/item/ProjectileWeaponItem.java b/net/minecraft/world/item/ProjectileWeaponItem.java
|
||||
index f12b9e4e8a78c713782af548d1cb15ef363305b4..d24b5e8baa6920d8736fe8686200bf39b0ae727a 100644
|
||||
index f12b9e4e8a78c713782af548d1cb15ef363305b4..799652853481b6d93619d6afaf82185060ebaa41 100644
|
||||
--- a/net/minecraft/world/item/ProjectileWeaponItem.java
|
||||
+++ b/net/minecraft/world/item/ProjectileWeaponItem.java
|
||||
@@ -40,7 +40,20 @@ public abstract class ProjectileWeaponItem extends Item {
|
||||
@@ -133,7 +133,7 @@ index f12b9e4e8a78c713782af548d1cb15ef363305b4..d24b5e8baa6920d8736fe8686200bf39
|
||||
|
||||
if (event.getProjectile() == projectile.getBukkitEntity()) {
|
||||
if (Projectile.spawnProjectile(
|
||||
@@ -79,7 +114,26 @@ public abstract class ProjectileWeaponItem extends Item {
|
||||
@@ -79,7 +114,27 @@ public abstract class ProjectileWeaponItem extends Item {
|
||||
level,
|
||||
itemStack
|
||||
).isRemoved()) {
|
||||
@@ -150,18 +150,19 @@ index f12b9e4e8a78c713782af548d1cb15ef363305b4..d24b5e8baa6920d8736fe8686200bf39
|
||||
+ if (!event.shouldConsumeItem() && projectile instanceof final AbstractArrow abstractArrow)
|
||||
+ abstractArrow.pickup = AbstractArrow.Pickup.CREATIVE_ONLY;
|
||||
+ if (event.shouldConsumeItem()) {
|
||||
+ // Update item reference to explicitly use crossbow on hand, since plugin can change item in inventory during this stage
|
||||
+ weapon = shooter.getItemInHand(hand);
|
||||
+ if (weapon.is(Items.CROSSBOW)) {
|
||||
+ List<ItemStack> newProjectiles = new ArrayList<>(projectileItems);
|
||||
+ List<ItemStack> newProjectiles = new ArrayList<>(weapon.get(DataComponents.CHARGED_PROJECTILES).getItems());
|
||||
+ newProjectiles.remove(i - (projectileItems.size() - newProjectiles.size()));
|
||||
+ // Explicitly update new data to crossbow on hand, since plugin can change item in inventory during this stage
|
||||
+ if (shooter.getItemInHand(hand).is(Items.CROSSBOW)) shooter.getItemInHand(hand).set(DataComponents.CHARGED_PROJECTILES, net.minecraft.world.item.component.ChargedProjectiles.of(newProjectiles));
|
||||
+ weapon.set(DataComponents.CHARGED_PROJECTILES, net.minecraft.world.item.component.ChargedProjectiles.of(newProjectiles));
|
||||
+ } else if (level.shouldConsumeArrow) {
|
||||
+ unrealizedDrawResult.consumeProjectilesFromPlayerInventory(i);
|
||||
+ // Paper PR end - prevent item consumption for cancelled events
|
||||
}
|
||||
}
|
||||
// CraftBukkit end
|
||||
@@ -89,6 +143,7 @@ public abstract class ProjectileWeaponItem extends Item {
|
||||
@@ -89,6 +144,7 @@ public abstract class ProjectileWeaponItem extends Item {
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -169,7 +170,7 @@ index f12b9e4e8a78c713782af548d1cb15ef363305b4..d24b5e8baa6920d8736fe8686200bf39
|
||||
}
|
||||
|
||||
protected int getDurabilityUse(ItemStack stack) {
|
||||
@@ -112,11 +167,21 @@ public abstract class ProjectileWeaponItem extends Item {
|
||||
@@ -112,11 +168,21 @@ public abstract class ProjectileWeaponItem extends Item {
|
||||
}
|
||||
|
||||
protected static List<ItemStack> draw(ItemStack weapon, ItemStack ammo, LivingEntity shooter) {
|
||||
@@ -195,7 +196,7 @@ index f12b9e4e8a78c713782af548d1cb15ef363305b4..d24b5e8baa6920d8736fe8686200bf39
|
||||
if (ammo.isEmpty()) {
|
||||
return List.of();
|
||||
} else {
|
||||
@@ -124,8 +189,9 @@ public abstract class ProjectileWeaponItem extends Item {
|
||||
@@ -124,8 +190,9 @@ public abstract class ProjectileWeaponItem extends Item {
|
||||
List<ItemStack> list = new ArrayList<>(i);
|
||||
ItemStack itemStack = ammo.copy();
|
||||
|
||||
@@ -206,7 +207,7 @@ index f12b9e4e8a78c713782af548d1cb15ef363305b4..d24b5e8baa6920d8736fe8686200bf39
|
||||
if (!itemStack1.isEmpty()) {
|
||||
list.add(itemStack1);
|
||||
}
|
||||
@@ -136,17 +202,23 @@ public abstract class ProjectileWeaponItem extends Item {
|
||||
@@ -136,17 +203,23 @@ public abstract class ProjectileWeaponItem extends Item {
|
||||
}
|
||||
|
||||
protected static ItemStack useAmmo(ItemStack weapon, ItemStack ammo, LivingEntity shooter, boolean intangable) {
|
||||
|
||||
Reference in New Issue
Block a user