diff --git a/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerLeftClicksBlockScriptEvent.java b/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerLeftClicksBlockScriptEvent.java index a16ddad..af44863 100644 --- a/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerLeftClicksBlockScriptEvent.java +++ b/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerLeftClicksBlockScriptEvent.java @@ -116,18 +116,25 @@ public void onLeftClickBlock(InteractBlockEvent.Primary evt, @Root Player player Optional> opt = evt.getTargetBlock().getLocation(); if (opt.isPresent()) { event.location = new LocationTag(opt.get()); - Vector3d point = evt.getInteractionPoint().get(); - event.precise_location = new LocationTag(point, world); - event.intersection_point = new LocationTag(point.sub(opt.get().getPosition())); - event.impact_normal = new LocationTag(evt.getTargetSide().asOffset()); + if (evt.getInteractionPoint().isPresent()) { + Vector3d point = evt.getInteractionPoint().get(); + event.precise_location = new LocationTag(point, world); + event.intersection_point = new LocationTag(point.sub(opt.get().getPosition())); + event.impact_normal = new LocationTag(evt.getTargetSide().asOffset()); + } + else { + BlockRayHit brh = BlockRay.from(player).distanceLimit(Utilities.getHandReach(player)).build().end().get(); + event.precise_location = new LocationTag(brh.getPosition(), world); + event.intersection_point = new LocationTag(brh.getPosition().sub(brh.getBlockPosition().toDouble())); + event.impact_normal = new LocationTag(brh.getNormal()); + } } else { - BlockRayHit brh = BlockRay.from(player) - .distanceLimit(Utilities.getHandReach(player)).build().end().get(); + BlockRayHit brh = BlockRay.from(player).distanceLimit(Utilities.getHandReach(player)).build().end().get(); event.location = new LocationTag(brh.getLocation()); event.precise_location = new LocationTag(brh.getPosition(), world); event.intersection_point = new LocationTag(brh.getPosition().sub(brh.getBlockPosition().toDouble())); - event.impact_normal = new LocationTag(0, 0, 0); + event.impact_normal = new LocationTag(brh.getNormal()); } event.cancelled = evt.isCancelled(); event.run(); diff --git a/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerRightClicksBlockScriptEvent.java b/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerRightClicksBlockScriptEvent.java index e92baa6..c54d90a 100644 --- a/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerRightClicksBlockScriptEvent.java +++ b/src/main/java/com/denizenscript/denizen2sponge/events/player/PlayerRightClicksBlockScriptEvent.java @@ -136,7 +136,7 @@ public void onRightClickBlock(InteractBlockEvent.Secondary evt, @Root Player pla event.location = new LocationTag(brh.getLocation()); event.precise_location = new LocationTag(brh.getPosition(), world); event.intersection_point = new LocationTag(brh.getPosition().sub(brh.getBlockPosition().toDouble())); - event.impact_normal = new LocationTag(0, 0, 0); + event.impact_normal = new LocationTag(brh.getNormal()); } event.hInternal = evt.getHandType(); event.hand = new TextTag(Utilities.getIdWithoutDefaultPrefix(evt.getHandType().getId()));