459987d69f
improved the water code so that immunity wont trigger if the entity has the water pathfinder system active, so this improves support for all entities that know how to behave in water. Merged 2 EAR patches together, and removed an MCUtil method that doesnt have a purpose anymore
135 Zeilen
5.5 KiB
Diff
135 Zeilen
5.5 KiB
Diff
From 38fd6ea28a3b7560f0ec309f7bfa7ea6571c8655 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.19.0
|
|
|