diff --git a/src/main/java/noppes/npcs/scripted/ScriptWorld.java b/src/main/java/noppes/npcs/scripted/ScriptWorld.java index c84774456..f98026e3a 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptWorld.java +++ b/src/main/java/noppes/npcs/scripted/ScriptWorld.java @@ -3,7 +3,6 @@ package noppes.npcs.scripted; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Random; import net.minecraft.block.Block; import net.minecraft.entity.Entity; @@ -21,12 +20,9 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntitySign; import net.minecraft.util.Vec3; import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; import net.minecraft.world.WorldServer; import noppes.npcs.NoppesUtilServer; import noppes.npcs.blocks.tiles.TileBigSign; -import noppes.npcs.controllers.Faction; -import noppes.npcs.controllers.FactionController; import noppes.npcs.controllers.ScriptController; import noppes.npcs.controllers.ServerCloneController; import noppes.npcs.scripted.entity.ScriptEntity; @@ -98,13 +94,21 @@ public class ScriptWorld implements IWorld { } public void setBlock(int x, int y, int z, Block block){ - if(block == null || block == Blocks.air){ + if(block == null || block.isAir(world, x, y, z)){ removeBlock(x, y, z); return; } world.setBlock(x, y, z, block); } + public void setBlock(int x, int y, int z, IBlock block){ + if(block == null || block.getMCBlock().isAir(world, x, y, z)){ + removeBlock(x, y, z); + return; + } + world.setBlock(x, y, z, block.getMCBlock()); + } + /** * @param x World position x * @param y World position y @@ -131,7 +135,7 @@ public class ScriptWorld implements IWorld { world.setBlock(x, y, z, Blocks.air); } - public Vec3 rayCastBlockPos(Vec3 pos, Vec3 look, int maxDistance) { + public IBlock rayCastBlock(Vec3 pos, Vec3 look, int maxDistance) { Vec3 currentPos = pos; int rep = 0; while (rep++ < maxDistance + 10) { currentPos = currentPos.addVector(look.xCoord, look.yCoord, look.zCoord); @@ -145,7 +149,7 @@ public class ScriptWorld implements IWorld { , 0.5); //System.out.println("current distance check: "+distance+" on rep "+rep); if (distance > maxDistance) return null; - return currentPos; + return block; } //System.out.println("ScriptWorld:WARNING: Repeated a ray cast to many times"); 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 855188037..e0b1b3359 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java @@ -1,6 +1,10 @@ package noppes.npcs.scripted.entity; -import net.minecraft.entity.player.EntityPlayer; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -14,30 +18,41 @@ import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.Vec3; import net.minecraft.world.WorldSettings; -import noppes.npcs.*; +import noppes.npcs.CustomNpcsPermissions; +import noppes.npcs.NoppesStringUtils; +import noppes.npcs.NoppesUtilPlayer; +import noppes.npcs.NoppesUtilServer; +import noppes.npcs.Server; import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.EnumQuestType; import noppes.npcs.containers.ContainerCustomGui; -import noppes.npcs.controllers.*; +import noppes.npcs.controllers.CustomGuiController; +import noppes.npcs.controllers.Dialog; +import noppes.npcs.controllers.DialogController; +import noppes.npcs.controllers.PixelmonHelper; +import noppes.npcs.controllers.PlayerData; +import noppes.npcs.controllers.PlayerDataController; +import noppes.npcs.controllers.PlayerDialogData; +import noppes.npcs.controllers.PlayerQuestData; +import noppes.npcs.controllers.Quest; +import noppes.npcs.controllers.QuestController; +import noppes.npcs.controllers.QuestData; import noppes.npcs.entity.EntityDialogNpc; -import noppes.npcs.scripted.CustomNPCsException; import noppes.npcs.scripted.NpcAPI; import noppes.npcs.scripted.ScriptItemStack; import noppes.npcs.scripted.ScriptPixelmonPlayerData; -import noppes.npcs.scripted.ScriptWorld; import noppes.npcs.scripted.constants.EntityType; -import noppes.npcs.scripted.event.FactionEvent; import noppes.npcs.scripted.gui.ScriptGui; import noppes.npcs.scripted.handler.data.IQuest; -import noppes.npcs.scripted.interfaces.*; +import noppes.npcs.scripted.interfaces.IBlock; +import noppes.npcs.scripted.interfaces.IContainer; +import noppes.npcs.scripted.interfaces.ICustomGui; +import noppes.npcs.scripted.interfaces.ICustomOverlay; +import noppes.npcs.scripted.interfaces.IPlayer; +import noppes.npcs.scripted.interfaces.ITimers; import noppes.npcs.scripted.overlay.ScriptOverlay; import noppes.npcs.util.ValueUtil; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - public class ScriptPlayer extends ScriptLivingBase implements IPlayer { public T player; private PlayerData data; @@ -463,11 +478,11 @@ public class ScriptPlayer extends ScriptLivingBase return new ScriptPixelmonPlayerData(player); } - public Vec3 getLookingAtBlock(int maxDistance) { + public IBlock getLookingAtBlock(int maxDistance) { Vec3 posVec = Vec3.createVectorHelper(player.posX, player.posY+player.getEyeHeight(), player.posZ); Vec3 lookVec = player.getLookVec(); - return NpcAPI.Instance().getIWorld(player.dimension).rayCastBlockPos(posVec, lookVec, maxDistance); + return getWorld().rayCastBlock(posVec, lookVec, maxDistance); } public ITimers getTimers() { diff --git a/src/main/java/noppes/npcs/scripted/interfaces/IPlayer.java b/src/main/java/noppes/npcs/scripted/interfaces/IPlayer.java index 6d1799193..cd47334be 100644 --- a/src/main/java/noppes/npcs/scripted/interfaces/IPlayer.java +++ b/src/main/java/noppes/npcs/scripted/interfaces/IPlayer.java @@ -187,7 +187,7 @@ public interface IPlayer extends IEntityLivingBase */ public ScriptPixelmonPlayerData getPixelmonData(); - public Vec3 getLookingAtBlock(int maxDistance); + public IBlock getLookingAtBlock(int 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 64d035d05..7949d9349 100644 --- a/src/main/java/noppes/npcs/scripted/interfaces/IWorld.java +++ b/src/main/java/noppes/npcs/scripted/interfaces/IWorld.java @@ -61,7 +61,7 @@ public interface IWorld { */ public void removeBlock(int x, int y, int z); - public Vec3 rayCastBlockPos(Vec3 pos, Vec3 look, int maxDistance); + public IBlock rayCastBlock(Vec3 pos, Vec3 look, int maxDistance); public Vec3 getNearestAir(Vec3 pos, int maxHeight);