Do not skip PlayerInteractEvent.

This commit is contained in:
IzzelAliz 2020-09-01 09:42:41 +08:00
parent 0aad4e83ea
commit 2b5f9b69c1

View File

@ -752,17 +752,13 @@ public abstract class ServerPlayNetHandlerMixin implements ServerPlayNetHandlerB
float f8 = f3 * f5; float f8 = f3 * f5;
double d4 = (this.player.interactionManager.getGameType() == GameType.CREATIVE) ? 5.0 : 4.5; double d4 = (this.player.interactionManager.getGameType() == GameType.CREATIVE) ? 5.0 : 4.5;
Vector3d vec3d2 = vec3d.add(f7 * d4, f6 * d4, f8 * d4); Vector3d vec3d2 = vec3d.add(f7 * d4, f6 * d4, f8 * d4);
BlockRayTraceResult movingobjectposition = this.player.world.rayTraceBlocks(new RayTraceContext(vec3d, vec3d2, RayTraceContext.BlockMode.OUTLINE, RayTraceContext.FluidMode.NONE, this.player)); BlockRayTraceResult result = this.player.world.rayTraceBlocks(new RayTraceContext(vec3d, vec3d2, RayTraceContext.BlockMode.OUTLINE, RayTraceContext.FluidMode.NONE, this.player));
boolean cancelled; boolean cancelled;
if (movingobjectposition == null || movingobjectposition.getType() != RayTraceResult.Type.BLOCK) { if (result == null || result.getType() != RayTraceResult.Type.BLOCK) {
PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemstack, enumhand); PlayerInteractEvent event = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_AIR, itemstack, enumhand);
cancelled = (event.useItemInHand() == Event.Result.DENY); cancelled = (event.useItemInHand() == Event.Result.DENY);
} else if (((PlayerInteractionManagerBridge) this.player.interactionManager).bridge$isFiredInteract()) {
((PlayerInteractionManagerBridge) this.player.interactionManager).bridge$setFiredInteract(false);
cancelled = ((PlayerInteractionManagerBridge) this.player.interactionManager).bridge$getInteractResult();
} else { } else {
BlockRayTraceResult movingobjectpositionblock = movingobjectposition; PlayerInteractEvent event2 = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_BLOCK, result.getPos(), result.getFace(), itemstack, true, enumhand);
PlayerInteractEvent event2 = CraftEventFactory.callPlayerInteractEvent(this.player, Action.RIGHT_CLICK_BLOCK, movingobjectpositionblock.getPos(), movingobjectpositionblock.getFace(), itemstack, true, enumhand);
cancelled = (event2.useItemInHand() == Event.Result.DENY); cancelled = (event2.useItemInHand() == Event.Result.DENY);
} }
if (cancelled) { if (cancelled) {