mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-09 06:50:32 +08:00
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 offset6ed8a189
SPIGOT-5290: Invulnerable and/or Marker armor stand triggers EntityDamageEvent631eaeb0
SPIGOT-5297: PlayerBedLeaveEvent.getBed() returns player location8d4bc541
SPIGOT-5293: Sponge behaviour differs from Vanillae91fd75e
SPIGOT-5291: Missing event for ravagers trampling cropscbdd7139
SPIGOT-5211: Add Raid APIedd8fdfb
SPIGOT-5287: Fix rare CME generating new chunks3fc97f08
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
150 lines
6.7 KiB
Diff
150 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
|
|
|