c9fd745840
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: ff0672ca SPIGOT-5211: Add Raid API CraftBukkit Changes: 96bc85f0 SPIGOT-5298: Remove unexplained 0.1 drop chance offset 6ed8a189 SPIGOT-5290: Invulnerable and/or Marker armor stand triggers EntityDamageEvent 631eaeb0 SPIGOT-5297: PlayerBedLeaveEvent.getBed() returns player location 8d4bc541 SPIGOT-5293: Sponge behaviour differs from Vanilla e91fd75e SPIGOT-5291: Missing event for ravagers trampling crops cbdd7139 SPIGOT-5211: Add Raid API edd8fdfb SPIGOT-5287: Fix rare CME generating new chunks 3fc97f08 SPIGOT-5265: FireworkExplodeEvent only fired when rockets explode in air Spigot Changes: 065a3734 Rebuild patches a5961826 SPIGOT-5286: tick-inactive-villagers invokes the AI for NoAI villagers
149 lines
6.7 KiB
Diff
149 lines
6.7 KiB
Diff
From 76db7975abcdafa9fcfec1b5448d2bde8f9b4cff Mon Sep 17 00:00:00 2001
|
|
From: Aikar <aikar@aikar.co>
|
|
Date: Wed, 28 Dec 2016 07:18:33 +0100
|
|
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 8f4116cde..dbbb96ac5 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityFireworks.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityFireworks.java
|
|
@@ -3,6 +3,8 @@ package net.minecraft.server;
|
|
import java.util.Iterator;
|
|
import java.util.List;
|
|
import java.util.OptionalInt;
|
|
+import java.util.UUID;
|
|
+
|
|
import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
|
|
|
|
public class EntityFireworks extends Entity implements IProjectile {
|
|
@@ -12,7 +14,8 @@ public class EntityFireworks extends Entity implements IProjectile {
|
|
public static final DataWatcherObject<Boolean> d = DataWatcher.a(EntityFireworks.class, DataWatcherRegistry.i); // PAIL
|
|
private int ticksFlown;
|
|
public int expectedLifespan;
|
|
- private EntityLiving ridingEntity;
|
|
+ private EntityLiving ridingEntity; public final EntityLiving getBoostedEntity() { return this.ridingEntity; } // Paper - OBFHELPER
|
|
+ public UUID spawningEntity; // Paper
|
|
|
|
public EntityFireworks(EntityTypes<? extends EntityFireworks> entitytypes, World world) {
|
|
super(entitytypes, world);
|
|
@@ -271,6 +274,11 @@ public class EntityFireworks extends Entity implements IProjectile {
|
|
}
|
|
|
|
nbttagcompound.setBoolean("ShotAtAngle", (Boolean) this.datawatcher.get(EntityFireworks.d));
|
|
+ // Paper start
|
|
+ if (this.spawningEntity != null) {
|
|
+ nbttagcompound.setUUID("SpawningEntity", this.spawningEntity);
|
|
+ }
|
|
+ // Paper end
|
|
}
|
|
|
|
@Override
|
|
@@ -286,7 +294,11 @@ public class EntityFireworks extends Entity implements IProjectile {
|
|
if (nbttagcompound.hasKey("ShotAtAngle")) {
|
|
this.datawatcher.set(EntityFireworks.d, nbttagcompound.getBoolean("ShotAtAngle"));
|
|
}
|
|
-
|
|
+ // Paper start
|
|
+ if (nbttagcompound.hasUUID("SpawningEntity")) {
|
|
+ this.spawningEntity = nbttagcompound.getUUID("SpawningEntity");
|
|
+ }
|
|
+ // Paper end
|
|
}
|
|
|
|
@Override
|
|
diff --git a/src/main/java/net/minecraft/server/ItemCrossbow.java b/src/main/java/net/minecraft/server/ItemCrossbow.java
|
|
index 28d7fdeef..874d9f500 100644
|
|
--- a/src/main/java/net/minecraft/server/ItemCrossbow.java
|
|
+++ b/src/main/java/net/minecraft/server/ItemCrossbow.java
|
|
@@ -199,6 +199,7 @@ public class ItemCrossbow extends ItemProjectileWeapon {
|
|
|
|
if (flag1) {
|
|
object = new EntityFireworks(world, itemstack1, entityliving.locX, entityliving.locY + (double) entityliving.getHeadHeight() - 0.15000000596046448D, entityliving.locZ, true);
|
|
+ ((EntityFireworks) object).spawningEntity = entityliving.getUniqueID(); // Paper
|
|
} else {
|
|
object = a(world, entityliving, itemstack, itemstack1);
|
|
if (flag || f3 != 0.0F) {
|
|
diff --git a/src/main/java/net/minecraft/server/ItemFireworks.java b/src/main/java/net/minecraft/server/ItemFireworks.java
|
|
index 37caa79cb..aea46ffae 100644
|
|
--- a/src/main/java/net/minecraft/server/ItemFireworks.java
|
|
+++ b/src/main/java/net/minecraft/server/ItemFireworks.java
|
|
@@ -17,6 +17,7 @@ public class ItemFireworks extends Item {
|
|
ItemStack itemstack = itemactioncontext.getItemStack();
|
|
Vec3D vec3d = itemactioncontext.j();
|
|
EntityFireworks entityfireworks = new EntityFireworks(world, vec3d.x, vec3d.y, vec3d.z, itemstack);
|
|
+ entityfireworks.spawningEntity = itemactioncontext.getEntity().getUniqueID(); // Paper
|
|
|
|
world.addEntity(entityfireworks);
|
|
itemstack.subtract(1);
|
|
@@ -31,7 +32,11 @@ public class ItemFireworks extends Item {
|
|
ItemStack itemstack = entityhuman.b(enumhand);
|
|
|
|
if (!world.isClientSide) {
|
|
- world.addEntity(new EntityFireworks(world, itemstack, entityhuman));
|
|
+ // Paper start
|
|
+ final EntityFireworks entityfireworks = new EntityFireworks(world, itemstack, entityhuman);
|
|
+ entityfireworks.spawningEntity = entityhuman.getUniqueID();
|
|
+ world.addEntity(entityfireworks);
|
|
+ // Paper end
|
|
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 3f6d2676e..b1fd18151 100644
|
|
--- a/src/main/java/net/minecraft/server/NBTTagCompound.java
|
|
+++ b/src/main/java/net/minecraft/server/NBTTagCompound.java
|
|
@@ -112,7 +112,7 @@ public class NBTTagCompound implements NBTBase {
|
|
return new UUID(this.getLong(s + "Most"), this.getLong(s + "Least"));
|
|
}
|
|
|
|
- public boolean b(String s) {
|
|
+ public final boolean hasUUID(String s) { return this.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 d3cbad9a5..219a1e4c0 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFirework.java
|
|
@@ -2,6 +2,7 @@ package org.bukkit.craftbukkit.entity;
|
|
|
|
import java.util.Random;
|
|
import net.minecraft.server.EntityFireworks;
|
|
+import net.minecraft.server.EntityLiving;
|
|
import net.minecraft.server.ItemStack;
|
|
import net.minecraft.server.Items;
|
|
import org.bukkit.Material;
|
|
@@ -9,8 +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.UUID;
|
|
+
|
|
public class CraftFirework extends CraftEntity implements Firework {
|
|
|
|
private final Random random = new Random();
|
|
@@ -78,4 +82,17 @@ public class CraftFirework extends CraftEntity implements Firework {
|
|
public void setShotAtAngle(boolean shotAtAngle) {
|
|
getHandle().getDataWatcher().set(EntityFireworks.d, shotAtAngle);
|
|
}
|
|
+
|
|
+ // 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.23.0
|
|
|