094bb03a37
- Lots of itemstack cloning removed. Only clone if the item is actually moved - Return true when a plugin cancels inventory move item event instead of false, as false causes pulls to cycle through all items. However, pushes do not exhibit the same behavior, so this is not something plugins could of been relying on. - Add option (Default on) to cooldown hoppers when they fail to move an item due to full inventory - Skip subsequent InventoryMoveItemEvents if a plugin does not use the item after first event fire for an iteration
134 Zeilen
5.3 KiB
Diff
134 Zeilen
5.3 KiB
Diff
From 9dacf738239c564182dad1fcd99b6bd43cf38c61 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 48cdef5db..bd0ec95f2 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 bd() {
|
|
diff --git a/src/main/java/net/minecraft/server/ItemFireworks.java b/src/main/java/net/minecraft/server/ItemFireworks.java
|
|
index b0bb4aa23..44a997215 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 e15c23367..82c2537b3 100644
|
|
--- a/src/main/java/net/minecraft/server/NBTTagCompound.java
|
|
+++ b/src/main/java/net/minecraft/server/NBTTagCompound.java
|
|
@@ -106,7 +106,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 99746b3c2..d4fbe31d6 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.16.1
|
|
|