package joshie.harvest.api.npc.task; import joshie.harvest.api.HFApi; import joshie.harvest.api.npc.NPCEntity; import joshie.harvest.api.npc.greeting.Script; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.WorldServer; @HFTask("speech") public class TaskSpeech extends TaskElement { private Script script; private TaskSpeech(Script script) { this.script = script; } public static TaskSpeech of(Script script) { return new TaskSpeech(script); } @Override public void execute(NPCEntity npc) { BlockPos pos = new BlockPos(npc.getAsEntity()); WorldServer server = (WorldServer) npc.getAsEntity().worldObj; for (EntityPlayer player : server.playerEntities) { EntityPlayerMP mp = ((EntityPlayerMP) player); if (mp.getDistanceSq(pos) < 64 * 64) { HFApi.npc.forceScriptOpen(player, npc.getAsEntity(), script); } } super.execute(npc); } @Override public void readFromNBT(NBTTagCompound tag) { script = Script.REGISTRY.getValue(new ResourceLocation(tag.getString("Script"))); } @Override public NBTTagCompound writeToNBT(NBTTagCompound tag) { tag.setString("Script", script.getRegistryName().toString()); return tag; } }