aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches/0189-Firework-API-s.patch
blob: 23f21865784382619eeb2108d8afe87bb9bde001 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
From 0596e4e92bdc6e00405b6a5604e55110229e5716 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
Date: Wed, 28 Dec 2016 01:18:33 -0500
Subject: [PATCH] Firework API's


diff --git a/src/main/java/net/minecraft/server/EntityFireworks.java b/src/main/java/net/minecraft/server/EntityFireworks.java
index 48cdef5db..bd0ec95f2 100644
--- a/src/main/java/net/minecraft/server/EntityFireworks.java
+++ b/src/main/java/net/minecraft/server/EntityFireworks.java
@@ -2,6 +2,8 @@ package net.minecraft.server;
 
 import java.util.Iterator;
 import java.util.List;
+import java.util.UUID;
+
 import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
 
 public class EntityFireworks extends Entity {
@@ -10,7 +12,8 @@ public class EntityFireworks extends Entity {
     private static final DataWatcherObject<Integer> b = DataWatcher.a(EntityFireworks.class, DataWatcherRegistry.b);
     private int ticksFlown;
     public int expectedLifespan;
-    private EntityLiving e;
+    public UUID spawningEntity; // Paper
+    private EntityLiving e;public EntityLiving getBoostedEntity() { return e; } // Paper - OBFHELPER
 
     public EntityFireworks(World world) {
         super(world);
@@ -203,6 +206,11 @@ public class EntityFireworks extends Entity {
         if (!itemstack.isEmpty()) {
             nbttagcompound.set("FireworksItem", itemstack.save(new NBTTagCompound()));
         }
+        // Paper start
+        if (spawningEntity != null) {
+            nbttagcompound.setUUID("SpawningEntity", spawningEntity);
+        }
+        // Paper end
 
     }
 
@@ -218,7 +226,11 @@ public class EntityFireworks extends Entity {
                 this.datawatcher.set(EntityFireworks.FIREWORK_ITEM, itemstack);
             }
         }
-
+        // Paper start
+        if (nbttagcompound.hasUUID("SpawningEntity")) {
+            spawningEntity = nbttagcompound.getUUID("SpawningEntity");
+        }
+        // Paper end
     }
 
     public boolean bd() {
diff --git a/src/main/java/net/minecraft/server/ItemFireworks.java b/src/main/java/net/minecraft/server/ItemFireworks.java
index b0bb4aa23..44a997215 100644
--- a/src/main/java/net/minecraft/server/ItemFireworks.java
+++ b/src/main/java/net/minecraft/server/ItemFireworks.java
@@ -9,6 +9,7 @@ public class ItemFireworks extends Item {
             ItemStack itemstack = entityhuman.b(enumhand);
             EntityFireworks entityfireworks = new EntityFireworks(world, (double) ((float) blockposition.getX() + f), (double) ((float) blockposition.getY() + f1), (double) ((float) blockposition.getZ() + f2), itemstack);
 
+            entityfireworks.spawningEntity = entityhuman.getUniqueID(); // Paper
             world.addEntity(entityfireworks);
             if (!entityhuman.abilities.canInstantlyBuild) {
                 itemstack.subtract(1);
@@ -25,6 +26,7 @@ public class ItemFireworks extends Item {
             if (!world.isClientSide) {
                 EntityFireworks entityfireworks = new EntityFireworks(world, itemstack, entityhuman);
 
+                entityfireworks.spawningEntity = entityhuman.getUniqueID(); // Paper
                 world.addEntity(entityfireworks);
                 if (!entityhuman.abilities.canInstantlyBuild) {
                     itemstack.subtract(1);
diff --git a/src/main/java/net/minecraft/server/NBTTagCompound.java b/src/main/java/net/minecraft/server/NBTTagCompound.java
index e15c23367..82c2537b3 100644
--- a/src/main/java/net/minecraft/server/NBTTagCompound.java
+++ b/src/main/java/net/minecraft/server/NBTTagCompound.java
@@ -106,7 +106,7 @@ public class NBTTagCompound extends NBTBase {
         return new UUID(this.getLong(s + "Most"), this.getLong(s + "Least"));
     }
 
-    public boolean b(String s) {
+    public boolean hasUUID(String s) { return b(s); } public boolean b(String s) { // Paper - OBFHELPER
         return this.hasKeyOfType(s + "Most", 99) && this.hasKeyOfType(s + "Least", 99);
     }
 
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
index 99746b3c2..d4fbe31d6 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
@@ -1,6 +1,7 @@
 package org.bukkit.craftbukkit.entity;
 
 import net.minecraft.server.EntityFireworks;
+import net.minecraft.server.EntityLiving;
 import net.minecraft.server.ItemStack;
 import net.minecraft.server.Items;
 
@@ -9,9 +10,11 @@ import org.bukkit.craftbukkit.CraftServer;
 import org.bukkit.craftbukkit.inventory.CraftItemStack;
 import org.bukkit.entity.EntityType;
 import org.bukkit.entity.Firework;
+import org.bukkit.entity.LivingEntity;
 import org.bukkit.inventory.meta.FireworkMeta;
 
 import java.util.Random;
+import java.util.UUID;
 
 public class CraftFirework extends CraftEntity implements Firework {
 
@@ -70,4 +73,18 @@ public class CraftFirework extends CraftEntity implements Firework {
     public void detonate() {
         getHandle().expectedLifespan = 0;
     }
+
+    // Paper start
+
+    @Override
+    public UUID getSpawningEntity() {
+        return getHandle().spawningEntity;
+    }
+
+    @Override
+    public LivingEntity getBoostedEntity() {
+        EntityLiving boostedEntity = getHandle().getBoostedEntity();
+        return boostedEntity != null ? (LivingEntity) boostedEntity.getBukkitEntity() : null;
+    }
+    // Paper end
 }
-- 
2.18.0