d089acb3bd
ForgeFlower is better than Spigots FernFlower at decompiling the source. However, in order to maintain the CraftBukkit patches, we must keep using spigots for the primary. However, for any file that we import on top of Spigots imported files there is nothing stopping us from using better decompiled files. So these changes will use ForgeFlower to maintain a better set of decomped files, so anything we add on top of Paper can start off in a better spot.
134 lines
5.5 KiB
Diff
134 lines
5.5 KiB
Diff
From ac66f2245259ac48df1900cb170f67b3c4b0571b 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 6e2592e96d..7ff57d9cda 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(EntityTypes.FIREWORK_ROCKET, world);
|
|
@@ -197,6 +200,12 @@ public class EntityFireworks extends Entity {
|
|
nbttagcompound.set("FireworksItem", itemstack.save(new NBTTagCompound()));
|
|
}
|
|
|
|
+ // Paper start
|
|
+ if (spawningEntity != null) {
|
|
+ nbttagcompound.setUUID("SpawningEntity", spawningEntity);
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
}
|
|
|
|
public void a(NBTTagCompound nbttagcompound) {
|
|
@@ -207,7 +216,11 @@ public class EntityFireworks extends Entity {
|
|
if (!itemstack.isEmpty()) {
|
|
this.datawatcher.set(EntityFireworks.FIREWORK_ITEM, itemstack);
|
|
}
|
|
-
|
|
+ // Paper start
|
|
+ if (nbttagcompound.hasUUID("SpawningEntity")) {
|
|
+ spawningEntity = nbttagcompound.getUUID("SpawningEntity");
|
|
+ }
|
|
+ // Paper end
|
|
}
|
|
|
|
public boolean bk() {
|
|
diff --git a/src/main/java/net/minecraft/server/ItemFireworks.java b/src/main/java/net/minecraft/server/ItemFireworks.java
|
|
index 936faccbf8..d971bbc76c 100644
|
|
--- a/src/main/java/net/minecraft/server/ItemFireworks.java
|
|
+++ b/src/main/java/net/minecraft/server/ItemFireworks.java
|
|
@@ -14,6 +14,7 @@ public class ItemFireworks extends Item {
|
|
BlockPosition blockposition = itemactioncontext.getClickPosition();
|
|
ItemStack itemstack = itemactioncontext.getItemStack();
|
|
EntityFireworks entityfireworks = new EntityFireworks(world, (double)((float)blockposition.getX() + itemactioncontext.m()), (double)((float)blockposition.getY() + itemactioncontext.n()), (double)((float)blockposition.getZ() + itemactioncontext.o()), itemstack);
|
|
+ entityfireworks.spawningEntity = itemactioncontext.b.getUniqueID(); // Paper
|
|
world.addEntity(entityfireworks);
|
|
itemstack.subtract(1);
|
|
}
|
|
@@ -26,6 +27,7 @@ public class ItemFireworks extends Item {
|
|
ItemStack itemstack = entityhuman.b(enumhand);
|
|
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 2a66a30264..6046e3e7b9 100644
|
|
--- a/src/main/java/net/minecraft/server/NBTTagCompound.java
|
|
+++ b/src/main/java/net/minecraft/server/NBTTagCompound.java
|
|
@@ -101,7 +101,7 @@ public class NBTTagCompound implements 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 7b3b206823..b39e33f4f0 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
|
|
|