36f34f01c0
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: da9ef3c5 #496: Add methods to get/set ItemStacks in EquipmentSlots 3abebc9f #492: Let Tameable extend Animals rather than Entity 941111a0 #495: Expose ItemStack and hand used in PlayerShearEntityEvent 4fe19cae #494: InventoryView - Add missing Brewing FUEL_TIME CraftBukkit Changes: 933e9094 #664: Add methods to get/set ItemStacks in EquipmentSlots 18722312 #662: Expose ItemStack and hand used in PlayerShearEntityEvent
270 lines
17 KiB
Diff
270 lines
17 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: BillyGalbreath <Blake.Galbreath@GMail.com>
|
|
Date: Sat, 21 Jul 2018 03:11:03 -0500
|
|
Subject: [PATCH] PlayerLaunchProjectileEvent
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/InteractionResultWrapper.java b/src/main/java/net/minecraft/server/InteractionResultWrapper.java
|
|
index 5cab47a2821adf869693132f8ce1193b1543f896..886babdcda0b559fc6a760b48074bec44e0f9da1 100644
|
|
--- a/src/main/java/net/minecraft/server/InteractionResultWrapper.java
|
|
+++ b/src/main/java/net/minecraft/server/InteractionResultWrapper.java
|
|
@@ -10,6 +10,7 @@ public class InteractionResultWrapper<T> {
|
|
this.b = t0;
|
|
}
|
|
|
|
+ public EnumInteractionResult getResult() { return this.a(); } // Paper - OBFHELPER
|
|
public EnumInteractionResult a() {
|
|
return this.a;
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/ItemEgg.java b/src/main/java/net/minecraft/server/ItemEgg.java
|
|
index 6fccd70a034b5d70729f57e0f2ee56e59e6f9cbc..16f1b734e01ee7cf917d2f9a4a4dc1e98e4f2af9 100644
|
|
--- a/src/main/java/net/minecraft/server/ItemEgg.java
|
|
+++ b/src/main/java/net/minecraft/server/ItemEgg.java
|
|
@@ -16,21 +16,35 @@ public class ItemEgg extends Item {
|
|
|
|
entityegg.setItem(itemstack);
|
|
entityegg.a(entityhuman, entityhuman.pitch, entityhuman.yaw, 0.0F, 1.5F, 1.0F);
|
|
- // CraftBukkit start
|
|
- if (!world.addEntity(entityegg)) {
|
|
+ // Paper start
|
|
+ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) entityegg.getBukkitEntity());
|
|
+ if (event.callEvent() && world.addEntity(entityegg)) {
|
|
+ if (event.shouldConsume() && !entityhuman.abilities.canInstantlyBuild) {
|
|
+ itemstack.subtract(1);
|
|
+ } else if (entityhuman instanceof EntityPlayer) {
|
|
+ ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
|
|
+ }
|
|
+
|
|
+ world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_EGG_THROW, SoundCategory.PLAYERS, 0.5F, 0.4F / (Entity.SHARED_RANDOM.nextFloat() * 0.4F + 0.8F));
|
|
+ entityhuman.b(StatisticList.ITEM_USED.b(this));
|
|
+ } else {
|
|
if (entityhuman instanceof EntityPlayer) {
|
|
((EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
|
|
}
|
|
- return InteractionResultWrapper.fail(itemstack);
|
|
+ return new InteractionResultWrapper<ItemStack>(EnumInteractionResult.FAIL, itemstack);
|
|
}
|
|
- // CraftBukkit end
|
|
+ // Paper end
|
|
+
|
|
+
|
|
}
|
|
world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_EGG_THROW, SoundCategory.PLAYERS, 0.5F, 0.4F / (ItemEgg.i.nextFloat() * 0.4F + 0.8F)); // CraftBukkit - from above
|
|
|
|
+ /* // Paper start - moved up
|
|
entityhuman.b(StatisticList.ITEM_USED.b(this));
|
|
if (!entityhuman.abilities.canInstantlyBuild) {
|
|
itemstack.subtract(1);
|
|
}
|
|
+ */ // Paper end
|
|
|
|
return InteractionResultWrapper.success(itemstack);
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/ItemEnderPearl.java b/src/main/java/net/minecraft/server/ItemEnderPearl.java
|
|
index cab869e8e9b6a505e23c109c4434178a8824ba45..b57e9f7e72b892165129c3857d5d03a088bee3ee 100644
|
|
--- a/src/main/java/net/minecraft/server/ItemEnderPearl.java
|
|
+++ b/src/main/java/net/minecraft/server/ItemEnderPearl.java
|
|
@@ -16,22 +16,37 @@ public class ItemEnderPearl extends Item {
|
|
|
|
entityenderpearl.setItem(itemstack);
|
|
entityenderpearl.a(entityhuman, entityhuman.pitch, entityhuman.yaw, 0.0F, 1.5F, 1.0F);
|
|
- if (!world.addEntity(entityenderpearl)) {
|
|
+ // Paper start
|
|
+ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) entityenderpearl.getBukkitEntity());
|
|
+ if (event.callEvent() && world.addEntity(entityenderpearl)) {
|
|
+ if (event.shouldConsume() && !entityhuman.abilities.canInstantlyBuild) {
|
|
+ itemstack.subtract(1);
|
|
+ } else if (entityhuman instanceof EntityPlayer) {
|
|
+ ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
|
|
+ }
|
|
+
|
|
+ world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_ENDER_PEARL_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (Entity.SHARED_RANDOM.nextFloat() * 0.4F + 0.8F));
|
|
+ entityhuman.b(StatisticList.ITEM_USED.b(this));
|
|
+ entityhuman.getCooldownTracker().setCooldown(this, 20);
|
|
+ } else {
|
|
+ // Paper end
|
|
if (entityhuman instanceof EntityPlayer) {
|
|
((EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
|
|
}
|
|
- return new InteractionResultWrapper(EnumInteractionResult.FAIL, itemstack);
|
|
+ return new InteractionResultWrapper<ItemStack>(EnumInteractionResult.FAIL, itemstack);
|
|
}
|
|
}
|
|
|
|
- world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_ENDER_PEARL_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (ItemEnderPearl.i.nextFloat() * 0.4F + 0.8F));
|
|
- entityhuman.getCooldownTracker().setCooldown(this, 20);
|
|
- // CraftBukkit end
|
|
-
|
|
- entityhuman.b(StatisticList.ITEM_USED.b(this));
|
|
- if (!entityhuman.abilities.canInstantlyBuild) {
|
|
- itemstack.subtract(1);
|
|
- }
|
|
+ // Paper start - moved up
|
|
+// world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_ENDER_PEARL_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (ItemEnderPearl.i.nextFloat() * 0.4F + 0.8F));
|
|
+// entityhuman.getCooldownTracker().setCooldown(this, 20);
|
|
+// // CraftBukkit end
|
|
+//
|
|
+// entityhuman.b(StatisticList.ITEM_USED.b(this));
|
|
+// if (!entityhuman.abilities.canInstantlyBuild) {
|
|
+// itemstack.subtract(1);
|
|
+// }
|
|
+ // Paper end
|
|
|
|
return InteractionResultWrapper.success(itemstack);
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/ItemExpBottle.java b/src/main/java/net/minecraft/server/ItemExpBottle.java
|
|
index 071688b3ab45a527a642c3d16c8d8b1f3682e63c..1d575af5269762f6f2616884a7733470cca06be5 100644
|
|
--- a/src/main/java/net/minecraft/server/ItemExpBottle.java
|
|
+++ b/src/main/java/net/minecraft/server/ItemExpBottle.java
|
|
@@ -15,19 +15,38 @@ public class ItemExpBottle extends Item {
|
|
public InteractionResultWrapper<ItemStack> a(World world, EntityHuman entityhuman, EnumHand enumhand) {
|
|
ItemStack itemstack = entityhuman.b(enumhand);
|
|
|
|
- world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_EXPERIENCE_BOTTLE_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (ItemExpBottle.i.nextFloat() * 0.4F + 0.8F));
|
|
+// world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_EXPERIENCE_BOTTLE_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (ItemExpBottle.i.nextFloat() * 0.4F + 0.8F)); // Paper - moved down
|
|
if (!world.isClientSide) {
|
|
EntityThrownExpBottle entitythrownexpbottle = new EntityThrownExpBottle(world, entityhuman);
|
|
|
|
entitythrownexpbottle.setItem(itemstack);
|
|
entitythrownexpbottle.a(entityhuman, entityhuman.pitch, entityhuman.yaw, -20.0F, 0.7F, 1.0F);
|
|
- world.addEntity(entitythrownexpbottle);
|
|
+ // Paper start
|
|
+ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) entitythrownexpbottle.getBukkitEntity());
|
|
+ if (event.callEvent() && world.addEntity(entitythrownexpbottle)) {
|
|
+ if (event.shouldConsume() && !entityhuman.abilities.canInstantlyBuild) {
|
|
+ itemstack.subtract(1);
|
|
+ } else if (entityhuman instanceof EntityPlayer) {
|
|
+ ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
|
|
+ }
|
|
+
|
|
+ world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_EXPERIENCE_BOTTLE_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (Entity.SHARED_RANDOM.nextFloat() * 0.4F + 0.8F));
|
|
+ entityhuman.b(StatisticList.ITEM_USED.b(this));
|
|
+ } else {
|
|
+ if (entityhuman instanceof EntityPlayer) {
|
|
+ ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
|
|
+ }
|
|
+ return new InteractionResultWrapper<ItemStack>(EnumInteractionResult.FAIL, itemstack);
|
|
+ }
|
|
+ // Paper end
|
|
}
|
|
|
|
+ /* // Paper start - moved up
|
|
entityhuman.b(StatisticList.ITEM_USED.b(this));
|
|
if (!entityhuman.abilities.canInstantlyBuild) {
|
|
itemstack.subtract(1);
|
|
}
|
|
+ */ // Paper end
|
|
|
|
return InteractionResultWrapper.success(itemstack);
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/ItemLingeringPotion.java b/src/main/java/net/minecraft/server/ItemLingeringPotion.java
|
|
index c19b678cfb2bc3c27858488031e119d482905f8b..7672e31fc0c915c49c8752ba864c2706f1292e86 100644
|
|
--- a/src/main/java/net/minecraft/server/ItemLingeringPotion.java
|
|
+++ b/src/main/java/net/minecraft/server/ItemLingeringPotion.java
|
|
@@ -8,7 +8,11 @@ public class ItemLingeringPotion extends ItemPotionThrowable {
|
|
|
|
@Override
|
|
public InteractionResultWrapper<ItemStack> a(World world, EntityHuman entityhuman, EnumHand enumhand) {
|
|
- world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_LINGERING_POTION_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (ItemLingeringPotion.i.nextFloat() * 0.4F + 0.8F));
|
|
- return super.a(world, entityhuman, enumhand);
|
|
+ // Paper start
|
|
+ InteractionResultWrapper<ItemStack> wrapper = super.a(world, entityhuman, enumhand);
|
|
+ if (wrapper.getResult() != EnumInteractionResult.FAIL)
|
|
+ world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_LINGERING_POTION_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (ItemLingeringPotion.i.nextFloat() * 0.4F + 0.8F));
|
|
+ return wrapper;
|
|
+ // Paper end
|
|
}
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/ItemPotionThrowable.java b/src/main/java/net/minecraft/server/ItemPotionThrowable.java
|
|
index 5d1f118c5139540a809dbaeee0982fbc7e9c3996..d1beab1ab72dffd3ee671982991d414b9244973d 100644
|
|
--- a/src/main/java/net/minecraft/server/ItemPotionThrowable.java
|
|
+++ b/src/main/java/net/minecraft/server/ItemPotionThrowable.java
|
|
@@ -15,13 +15,31 @@ public class ItemPotionThrowable extends ItemPotion {
|
|
|
|
entitypotion.setItem(itemstack);
|
|
entitypotion.a(entityhuman, entityhuman.pitch, entityhuman.yaw, -20.0F, 0.5F, 1.0F);
|
|
- world.addEntity(entitypotion);
|
|
+ // Paper start
|
|
+ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) entitypotion.getBukkitEntity());
|
|
+ if (event.callEvent() && world.addEntity(entitypotion)) {
|
|
+ if (event.shouldConsume() && !entityhuman.abilities.canInstantlyBuild) {
|
|
+ itemstack.subtract(1);
|
|
+ } else if (entityhuman instanceof EntityPlayer) {
|
|
+ ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
|
|
+ }
|
|
+
|
|
+ entityhuman.b(StatisticList.ITEM_USED.b(this));
|
|
+ } else {
|
|
+ if (entityhuman instanceof EntityPlayer) {
|
|
+ ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
|
|
+ }
|
|
+ return new InteractionResultWrapper<ItemStack>(EnumInteractionResult.FAIL, itemstack);
|
|
+ }
|
|
+ // Paper end
|
|
}
|
|
|
|
+ /* // Paper start - moved up
|
|
entityhuman.b(StatisticList.ITEM_USED.b(this));
|
|
if (!entityhuman.abilities.canInstantlyBuild) {
|
|
itemstack.subtract(1);
|
|
}
|
|
+ */ // Paper end
|
|
|
|
return InteractionResultWrapper.success(itemstack);
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/ItemSnowball.java b/src/main/java/net/minecraft/server/ItemSnowball.java
|
|
index 56ec5089596de4209780a823a2a3f37676ec515b..e6044e654b78ab8ef9d73ef7bd6ad82a079745a8 100644
|
|
--- a/src/main/java/net/minecraft/server/ItemSnowball.java
|
|
+++ b/src/main/java/net/minecraft/server/ItemSnowball.java
|
|
@@ -17,19 +17,27 @@ public class ItemSnowball extends Item {
|
|
|
|
entitysnowball.setItem(itemstack);
|
|
entitysnowball.a(entityhuman, entityhuman.pitch, entityhuman.yaw, 0.0F, 1.5F, 1.0F);
|
|
- if (world.addEntity(entitysnowball)) {
|
|
- if (!entityhuman.abilities.canInstantlyBuild) {
|
|
+ // Paper start
|
|
+ com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent event = new com.destroystokyo.paper.event.player.PlayerLaunchProjectileEvent((org.bukkit.entity.Player) entityhuman.getBukkitEntity(), org.bukkit.craftbukkit.inventory.CraftItemStack.asCraftMirror(itemstack), (org.bukkit.entity.Projectile) entitysnowball.getBukkitEntity());
|
|
+ if (event.callEvent() && world.addEntity(entitysnowball)) {
|
|
+ if (event.shouldConsume() && !entityhuman.abilities.canInstantlyBuild) {
|
|
itemstack.subtract(1);
|
|
+ } else if (entityhuman instanceof EntityPlayer) {
|
|
+ ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
|
|
}
|
|
|
|
- world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_SNOWBALL_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (ItemSnowball.i.nextFloat() * 0.4F + 0.8F));
|
|
- } else if (entityhuman instanceof EntityPlayer) {
|
|
- ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
|
|
+ world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_SNOWBALL_THROW, SoundCategory.NEUTRAL, 0.5F, 0.4F / (Entity.SHARED_RANDOM.nextFloat() * 0.4F + 0.8F));
|
|
+ entityhuman.b(StatisticList.ITEM_USED.b(this));
|
|
+ } else {
|
|
+ if (entityhuman instanceof EntityPlayer) {
|
|
+ ((EntityPlayer) entityhuman).getBukkitEntity().updateInventory();
|
|
+ }
|
|
+ return new InteractionResultWrapper<ItemStack>(EnumInteractionResult.FAIL, itemstack);
|
|
}
|
|
}
|
|
// CraftBukkit end
|
|
|
|
- entityhuman.b(StatisticList.ITEM_USED.b(this));
|
|
+// entityhuman.b(StatisticList.ITEM_USED.b(this)); // Paper - moved up
|
|
// CraftBukkit start - moved up
|
|
/*
|
|
if (!entityhuman.abilities.canInstantlyBuild) {
|
|
diff --git a/src/main/java/net/minecraft/server/ItemSplashPotion.java b/src/main/java/net/minecraft/server/ItemSplashPotion.java
|
|
index 18bd846ceecf638fa1184a6cceb5c909ec49372c..e71e933fffb04aa4a00d02cfbc284da8ad3ee925 100644
|
|
--- a/src/main/java/net/minecraft/server/ItemSplashPotion.java
|
|
+++ b/src/main/java/net/minecraft/server/ItemSplashPotion.java
|
|
@@ -8,7 +8,11 @@ public class ItemSplashPotion extends ItemPotionThrowable {
|
|
|
|
@Override
|
|
public InteractionResultWrapper<ItemStack> a(World world, EntityHuman entityhuman, EnumHand enumhand) {
|
|
- world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_SPLASH_POTION_THROW, SoundCategory.PLAYERS, 0.5F, 0.4F / (ItemSplashPotion.i.nextFloat() * 0.4F + 0.8F));
|
|
- return super.a(world, entityhuman, enumhand);
|
|
+ // Paper start
|
|
+ InteractionResultWrapper<ItemStack> wrapper = super.a(world, entityhuman, enumhand);
|
|
+ if (wrapper.getResult() != EnumInteractionResult.FAIL)
|
|
+ world.playSound((EntityHuman) null, entityhuman.locX(), entityhuman.locY(), entityhuman.locZ(), SoundEffects.ENTITY_SPLASH_POTION_THROW, SoundCategory.PLAYERS, 0.5F, 0.4F / (ItemSplashPotion.i.nextFloat() * 0.4F + 0.8F));
|
|
+ return wrapper;
|
|
+ // Paper end
|
|
}
|
|
}
|