diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptLivingBase.java b/src/main/java/noppes/npcs/scripted/entity/ScriptLivingBase.java index e10fd4187..087de24e8 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptLivingBase.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptLivingBase.java @@ -6,6 +6,11 @@ import net.minecraft.potion.Potion; import net.minecraft.potion.PotionEffect; import net.minecraft.util.DamageSource; import net.minecraft.util.EntityDamageSource; +import net.minecraft.util.Vec3; +import net.minecraft.util.math.BlockPos; +import noppes.npcs.scripted.ScriptBlockPos; +import noppes.npcs.scripted.interfaces.IBlock; +import noppes.npcs.scripted.interfaces.IPos; import noppes.npcs.scripted.interfaces.entity.IEntity; import noppes.npcs.scripted.interfaces.item.IItemStack; import noppes.npcs.scripted.constants.EntityType; @@ -13,6 +18,9 @@ import noppes.npcs.scripted.interfaces.entity.IEntityLivingBase; import noppes.npcs.scripted.NpcAPI; import noppes.npcs.scripted.ScriptDamageSource; +import java.util.ArrayList; +import java.util.Collections; + public class ScriptLivingBase extends ScriptEntity implements IEntityLivingBase { protected T entity; @@ -97,6 +105,55 @@ public class ScriptLivingBase extends ScriptEntity entities = new ArrayList<>(); + + Vec3 currentPos = Vec3.createVectorHelper(startPos[0], startPos[1], startPos[2]); int rep = 0; + + while (rep++ < maxDistance + 10) { + currentPos = currentPos.addVector(lookVector[0], lookVector[1], lookVector[2]); + IPos pos = new ScriptBlockPos(new BlockPos(currentPos.xCoord, currentPos.yCoord, currentPos.zCoord)); + + Collections.addAll(entities, getWorld().getEntitiesNear(pos,range)); + + double distance = Math.pow( + Math.pow(currentPos.xCoord-startPos[0],2) + +Math.pow(currentPos.yCoord-startPos[1],2) + +Math.pow(currentPos.zCoord-startPos[2],2) + , 0.5); + if (distance > maxDistance) { + break; + } + } + + return entities.toArray(new IEntity[0]); + } /** * Expert use only @@ -116,10 +173,6 @@ public class ScriptLivingBase extends ScriptEntity/effect command diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java index 4b7ef04ad..b2fa6a261 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java @@ -546,50 +546,6 @@ public class ScriptPlayer extends ScriptLivingBase return new ScriptPixelmonPlayerData(player); } - public IBlock getLookingAtBlock(int maxDistance) { - Vec3 lookVec = player.getLookVec(); - return getWorld().rayCastBlock( - new double[] {player.posX, player.posY+player.getEyeHeight(), player.posZ}, - new double[] {lookVec.xCoord, lookVec.yCoord, lookVec.zCoord}, - maxDistance); - } - - public IPos getLookingAtPos(int maxDistance) { - Vec3 lookVec = player.getLookVec(); - return getWorld().rayCastPos( - new double[] {player.posX, player.posY+player.getEyeHeight(), player.posZ}, - new double[] {lookVec.xCoord, lookVec.yCoord, lookVec.zCoord}, - maxDistance); - } - - public IEntity[] getLookingAtEntities(int maxDistance, int range) { - Vec3 lookVec = player.getLookVec(); - double[] startPos = new double[] {player.posX, player.posY+player.getEyeHeight(), player.posZ}; - double[] lookVector = new double[] {lookVec.xCoord, lookVec.yCoord, lookVec.zCoord}; - - ArrayList entities = new ArrayList<>(); - - Vec3 currentPos = Vec3.createVectorHelper(startPos[0], startPos[1], startPos[2]); int rep = 0; - - while (rep++ < maxDistance + 10) { - currentPos = currentPos.addVector(lookVector[0], lookVector[1], lookVector[2]); - IPos pos = new ScriptBlockPos(new BlockPos(currentPos.xCoord, currentPos.yCoord, currentPos.zCoord)); - - Collections.addAll(entities, getWorld().getEntitiesNear(pos,range)); - - double distance = Math.pow( - Math.pow(currentPos.xCoord-startPos[0],2) - +Math.pow(currentPos.yCoord-startPos[1],2) - +Math.pow(currentPos.zCoord-startPos[2],2) - , 0.5); - if (distance > maxDistance) { - break; - } - } - - return entities.toArray(new IEntity[0]); - } - public ITimers getTimers() { return PlayerDataController.instance.getPlayerData(player).timers; } diff --git a/src/main/java/noppes/npcs/scripted/interfaces/entity/IEntityLivingBase.java b/src/main/java/noppes/npcs/scripted/interfaces/entity/IEntityLivingBase.java index 401ac854b..6b6bc9ff0 100644 --- a/src/main/java/noppes/npcs/scripted/interfaces/entity/IEntityLivingBase.java +++ b/src/main/java/noppes/npcs/scripted/interfaces/entity/IEntityLivingBase.java @@ -1,6 +1,8 @@ package noppes.npcs.scripted.interfaces.entity; import net.minecraft.entity.EntityLivingBase; +import noppes.npcs.scripted.interfaces.IBlock; +import noppes.npcs.scripted.interfaces.IPos; import noppes.npcs.scripted.interfaces.item.IItemStack; import noppes.npcs.scripted.ScriptDamageSource; @@ -50,6 +52,38 @@ public interface IEntityLivingBase extends IEntity extends IEntityLivingBase */ ScriptPixelmonPlayerData getPixelmonData(); - IBlock getLookingAtBlock(int maxDistance); - - IPos getLookingAtPos(int maxDistance); - - IEntity[] getLookingAtEntities(int maxDistance, int range); - ITimers getTimers(); void updatePlayerInventory();