aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches/0192-Firework-API-s.patch
diff options
context:
space:
mode:
Diffstat (limited to 'Spigot-Server-Patches/0192-Firework-API-s.patch')
-rw-r--r--Spigot-Server-Patches/0192-Firework-API-s.patch133
1 files changed, 133 insertions, 0 deletions
diff --git a/Spigot-Server-Patches/0192-Firework-API-s.patch b/Spigot-Server-Patches/0192-Firework-API-s.patch
new file mode 100644
index 0000000000..c31386a122
--- /dev/null
+++ b/Spigot-Server-Patches/0192-Firework-API-s.patch
@@ -0,0 +1,133 @@
+From efd9d25626205508f7eebb859fbbf11dd67f67d1 Mon Sep 17 00:00:00 2001
+From: Aikar <[email protected]>
+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 572f4dea..f9cf382b 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 aV() {
+diff --git a/src/main/java/net/minecraft/server/ItemFireworks.java b/src/main/java/net/minecraft/server/ItemFireworks.java
+index 4fc36d24..5cd68bfa 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 2a2f53c8..266741fc 100644
+--- a/src/main/java/net/minecraft/server/NBTTagCompound.java
++++ b/src/main/java/net/minecraft/server/NBTTagCompound.java
+@@ -103,7 +103,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 99746b3c..d4fbe31d 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.12.2
+