geforkt von Mirrors/Paper
e886d8118e
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
50 Zeilen
2.6 KiB
Diff
50 Zeilen
2.6 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/server/BlockTarget.java b/src/main/java/net/minecraft/server/BlockTarget.java
|
|
index 23b298577d8a60ca241abc228732f66ebbe7a7b1..642d7c14bc404d94c8a4f551b984fe235a3816eb 100644
|
|
--- a/src/main/java/net/minecraft/server/BlockTarget.java
|
|
+++ b/src/main/java/net/minecraft/server/BlockTarget.java
|
|
@@ -1,5 +1,6 @@
|
|
package net.minecraft.server;
|
|
|
|
+import io.papermc.paper.event.block.TargetHitEvent; // Paper - Need to import because 'io' class exists in nms
|
|
import java.util.Random;
|
|
|
|
public class BlockTarget extends Block {
|
|
@@ -14,6 +15,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) {
|
|
@@ -29,6 +34,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);
|
|
}
|