From 3d02ce3ce0a0835c0b84510edf7563ddf020ca63 Mon Sep 17 00:00:00 2001 From: 1whohears <1whohears28@gmail.com> Date: Thu, 26 May 2022 03:04:13 -0500 Subject: [PATCH] world.rayCastBlock uses double[] for parameters --- src/main/java/noppes/npcs/scripted/ScriptWorld.java | 13 +++++++------ .../noppes/npcs/scripted/entity/ScriptPlayer.java | 7 ++++--- .../noppes/npcs/scripted/interfaces/IWorld.java | 2 +- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/main/java/noppes/npcs/scripted/ScriptWorld.java b/src/main/java/noppes/npcs/scripted/ScriptWorld.java index 07b932133..8cbc7457a 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptWorld.java +++ b/src/main/java/noppes/npcs/scripted/ScriptWorld.java @@ -144,17 +144,18 @@ public class ScriptWorld implements IWorld { world.setBlock(x, y, z, Blocks.air); } - public IBlock rayCastBlock(Vec3 pos, Vec3 look, int maxDistance) { - Vec3 currentPos = pos; int rep = 0; + public IBlock rayCastBlock(double[] pos, double[] look, int maxDistance) { + if (pos.length != 3 || look.length != 3) return null; + Vec3 currentPos = Vec3.createVectorHelper(pos[0], pos[1], pos[2]); int rep = 0; while (rep++ < maxDistance + 10) { - currentPos = currentPos.addVector(look.xCoord, look.yCoord, look.zCoord); + currentPos = currentPos.addVector(look[0], look[1], look[2]); IBlock block = getBlock((int)currentPos.xCoord, (int)currentPos.yCoord, (int)currentPos.zCoord); //System.out.println("Checking block at ["+(int)currentPos.xCoord+","+(int)currentPos.yCoord+","+(int)currentPos.zCoord+"]"); if (block == null) continue; double distance = Math.pow( - Math.pow(currentPos.xCoord-pos.xCoord,2) - +Math.pow(currentPos.yCoord-pos.yCoord,2) - +Math.pow(currentPos.zCoord-pos.zCoord,2) + Math.pow(currentPos.xCoord-pos[0],2) + +Math.pow(currentPos.yCoord-pos[1],2) + +Math.pow(currentPos.zCoord-pos[2],2) , 0.5); //System.out.println("current distance check: "+distance+" on rep "+rep); if (distance > maxDistance) return null; diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java index e0b1b3359..a64bf92ad 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java @@ -479,10 +479,11 @@ public class ScriptPlayer extends ScriptLivingBase } public IBlock getLookingAtBlock(int maxDistance) { - Vec3 posVec = Vec3.createVectorHelper(player.posX, - player.posY+player.getEyeHeight(), player.posZ); Vec3 lookVec = player.getLookVec(); - return getWorld().rayCastBlock(posVec, lookVec, maxDistance); + return getWorld().rayCastBlock( + new double[] {player.posX, player.posY+player.getEyeHeight(), player.posZ}, + new double[] {lookVec.xCoord, lookVec.yCoord, lookVec.zCoord}, + maxDistance); } public ITimers getTimers() { diff --git a/src/main/java/noppes/npcs/scripted/interfaces/IWorld.java b/src/main/java/noppes/npcs/scripted/interfaces/IWorld.java index 5071ffba3..0fb1f4cb2 100644 --- a/src/main/java/noppes/npcs/scripted/interfaces/IWorld.java +++ b/src/main/java/noppes/npcs/scripted/interfaces/IWorld.java @@ -69,7 +69,7 @@ public interface IWorld { */ public void removeBlock(int x, int y, int z); - public IBlock rayCastBlock(Vec3 pos, Vec3 look, int maxDistance); + public IBlock rayCastBlock(double[] pos, double[] look, int maxDistance); public IPos getNearestAir(IPos pos, int maxHeight);