@@ -5,7 +5,7 @@ Subject: [PATCH] More Projectile API
5
5
6
6
7
7
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
8
- index be86114eac3975b82ca74d4d6ed3f0402a642e8a..a28178f2c2d4dda6481a58c73bada95aa95e6764 100644
8
+ index be86114eac3975b82ca74d4d6ed3f0402a642e8a..93fd9e87de3078f50431b5d80540d4335d7c79e5 100644
9
9
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
10
10
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
11
11
@@ -14,24 +14,26 @@ import org.bukkit.inventory.meta.FireworkMeta;
@@ -49,7 +49,7 @@ index be86114eac3975b82ca74d4d6ed3f0402a642e8a..a28178f2c2d4dda6481a58c73bada95a
49
49
}
50
50
51
51
@Override
52
- @@ -51,13 +53,13 @@ public class CraftFirework extends CraftProjectile implements Firework {
52
+ @@ -51,12 +53,12 @@ public class CraftFirework extends CraftProjectile implements Firework {
53
53
54
54
@Override
55
55
public FireworkMeta getFireworkMeta() {
@@ -60,12 +60,11 @@ index be86114eac3975b82ca74d4d6ed3f0402a642e8a..a28178f2c2d4dda6481a58c73bada95a
60
60
@Override
61
61
public void setFireworkMeta(FireworkMeta meta) {
62
62
- this.item.setItemMeta(meta);
63
-
64
63
+ applyFireworkEffect(meta); // Paper - Expose firework item directly
64
+
65
65
// Copied from EntityFireworks constructor, update firework lifetime/power
66
66
this.getHandle().lifetime = 10 * (1 + meta.getPower()) + this.random.nextInt(6) + this.random.nextInt(7);
67
-
68
- @@ -91,4 +93,43 @@ public class CraftFirework extends CraftProjectile implements Firework {
67
+ @@ -91,4 +93,46 @@ public class CraftFirework extends CraftProjectile implements Firework {
69
68
return boostedEntity != null ? (org.bukkit.entity.LivingEntity) boostedEntity.getBukkitEntity() : null;
70
69
}
71
70
// Paper end
@@ -78,7 +77,7 @@ index be86114eac3975b82ca74d4d6ed3f0402a642e8a..a28178f2c2d4dda6481a58c73bada95a
78
77
+ @Override
79
78
+ public void setItem(org.bukkit.inventory.ItemStack itemStack) {
80
79
+ FireworkMeta meta = getFireworkMeta();
81
- + var nmsItem = itemStack == null ? ItemStack.EMPTY : CraftItemStack.asNMSCopy(itemStack);
80
+ + ItemStack nmsItem = itemStack == null ? ItemStack.EMPTY : CraftItemStack.asNMSCopy(itemStack);
82
81
+ this.getHandle().getEntityData().set(FireworkRocketEntity.DATA_ID_FIREWORKS_ITEM, nmsItem);
83
82
+
84
83
+ applyFireworkEffect(meta);
@@ -105,15 +104,18 @@ index be86114eac3975b82ca74d4d6ed3f0402a642e8a..a28178f2c2d4dda6481a58c73bada95a
105
104
+ }
106
105
+
107
106
+ void applyFireworkEffect(FireworkMeta meta) {
108
- + CraftItemStack.applyMetaToItem(this.getHandle().getEntityData().get(FireworkRocketEntity.DATA_ID_FIREWORKS_ITEM), meta);
107
+ + ItemStack item = this.getHandle().getItem();
108
+ + CraftItemStack.applyMetaToItem(item, meta);
109
+ +
110
+ + this.getHandle().getEntityData().set(FireworkRocketEntity.DATA_ID_FIREWORKS_ITEM, item);
109
111
+ }
110
112
+ // Paper end - Expose firework item directly + manually setting flight
111
113
}
112
114
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftThrownPotion.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftThrownPotion.java
113
- index b08739dd1ffd041f0885af6c1f57dca9027763b6..aa3afdf320852e83bb530fff5616a61e33dbc30c 100644
115
+ index b08739dd1ffd041f0885af6c1f57dca9027763b6..2edaae449f936b210a48c52ab8d921544c8a0005 100644
114
116
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftThrownPotion.java
115
117
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftThrownPotion.java
116
- @@ -39,11 +39,25 @@ public class CraftThrownPotion extends CraftProjectile implements ThrownPotion {
118
+ @@ -39,11 +39,26 @@ public class CraftThrownPotion extends CraftProjectile implements ThrownPotion {
117
119
Validate.notNull(item, "ItemStack cannot be null.");
118
120
119
121
// The ItemStack must be a potion.
@@ -133,8 +135,9 @@ index b08739dd1ffd041f0885af6c1f57dca9027763b6..aa3afdf320852e83bb530fff5616a61e
133
135
+
134
136
+ @Override
135
137
+ public void setPotionMeta(org.bukkit.inventory.meta.PotionMeta meta) {
136
- + CraftItemStack.applyMetaToItem(this.getHandle().getItemRaw(), meta);
137
- + this.getHandle().setItem(this.getHandle().getItemRaw()); // Reset item
138
+ + net.minecraft.world.item.ItemStack item = this.getHandle().getItem();
139
+ + CraftItemStack.applyMetaToItem(item, meta);
140
+ + this.getHandle().setItem(item); // Reset item
138
141
+ }
139
142
+ // Paper end
140
143
@Override
0 commit comments