geforkt von Mirrors/Paper
be13705177
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing CraftBukkit Changes: 6b8cd9a7 SPIGOT-6207: forcibly drop the items of a converted zombie villager
50 Zeilen
2.7 KiB
Diff
50 Zeilen
2.7 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: jmp <jasonpenilla2@me.com>
|
|
Date: Wed, 25 Nov 2020 23:20:44 -0800
|
|
Subject: [PATCH] Implement TargetHitEvent
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/BlockTarget.java b/src/main/java/net/minecraft/world/level/block/BlockTarget.java
|
|
index c336490815dc17991d3d84d8c6f0fc58571a3e3a..a9316ce8eb3d8a645f4c0e41ac668a90f584c263 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/BlockTarget.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/BlockTarget.java
|
|
@@ -1,5 +1,6 @@
|
|
package net.minecraft.world.level.block;
|
|
|
|
+import io.papermc.paper.event.block.TargetHitEvent; // Paper - Need to import because 'io' class exists in nms
|
|
import java.util.Random;
|
|
import net.minecraft.advancements.CriterionTriggers;
|
|
import net.minecraft.core.BlockPosition;
|
|
@@ -34,6 +35,10 @@ public class BlockTarget extends Block {
|
|
@Override
|
|
public void a(World world, IBlockData iblockdata, MovingObjectPositionBlock movingobjectpositionblock, IProjectile iprojectile) {
|
|
int i = a((GeneratorAccess) world, iblockdata, movingobjectpositionblock, (Entity) iprojectile);
|
|
+ // Paper start
|
|
+ }
|
|
+ private static void awardTargetHitCriteria(IProjectile iprojectile, MovingObjectPositionBlock movingobjectpositionblock, int i) {
|
|
+ // Paper end
|
|
Entity entity = iprojectile.getShooter();
|
|
|
|
if (entity instanceof EntityPlayer) {
|
|
@@ -49,6 +54,20 @@ public class BlockTarget extends Block {
|
|
int i = a(movingobjectpositionblock, movingobjectpositionblock.getPos());
|
|
int j = entity instanceof EntityArrow ? 20 : 8;
|
|
|
|
+ // Paper start
|
|
+ if (entity instanceof IProjectile) {
|
|
+ final IProjectile projectile = (IProjectile) entity;
|
|
+ final org.bukkit.craftbukkit.block.CraftBlock craftBlock = org.bukkit.craftbukkit.block.CraftBlock.at(generatoraccess, movingobjectpositionblock.getBlockPosition());
|
|
+ final org.bukkit.block.BlockFace blockFace = org.bukkit.craftbukkit.block.CraftBlock.notchToBlockFace(movingobjectpositionblock.getDirection());
|
|
+ final TargetHitEvent targetHitEvent = new TargetHitEvent((org.bukkit.entity.Projectile) projectile.getBukkitEntity(), craftBlock, blockFace, i);
|
|
+ if (targetHitEvent.callEvent()) {
|
|
+ i = targetHitEvent.getSignalStrength();
|
|
+ awardTargetHitCriteria(projectile, movingobjectpositionblock, i);
|
|
+ } else {
|
|
+ return i;
|
|
+ }
|
|
+ }
|
|
+ // Paper end
|
|
if (!generatoraccess.getBlockTickList().a(movingobjectpositionblock.getBlockPosition(), iblockdata.getBlock())) {
|
|
a(generatoraccess, iblockdata, i, movingobjectpositionblock.getBlockPosition(), j);
|
|
}
|