diff --git a/src/main/java/noppes/npcs/DataAdvanced.java b/src/main/java/noppes/npcs/DataAdvanced.java index 3051af8a1..696912d05 100644 --- a/src/main/java/noppes/npcs/DataAdvanced.java +++ b/src/main/java/noppes/npcs/DataAdvanced.java @@ -53,8 +53,9 @@ public class DataAdvanced { public boolean defendFaction = false; public boolean disablePitch = false; - public boolean refuseSoulStone = false; public String soulStonePlayerName = ""; + public boolean refuseSoulStone = false; + public boolean soulStoneInit = false; public DataAdvanced(EntityNPCInterface npc) { this.npc = npc; diff --git a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java index 904b11d15..71b5871e4 100644 --- a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java +++ b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java @@ -218,6 +218,7 @@ public abstract class EntityNPCInterface extends EntityCreature implements IEnti public void onUpdate(){ super.onUpdate(); if(this.ticksExisted % 10 == 0) { + advanced.soulStoneInit = false; EventHooks.onNPCUpdate(this); } this.timers.update(); diff --git a/src/main/java/noppes/npcs/items/ItemSoulstoneFilled.java b/src/main/java/noppes/npcs/items/ItemSoulstoneFilled.java index 3ead74869..b563329e9 100644 --- a/src/main/java/noppes/npcs/items/ItemSoulstoneFilled.java +++ b/src/main/java/noppes/npcs/items/ItemSoulstoneFilled.java @@ -79,6 +79,7 @@ public class ItemSoulstoneFilled extends Item { npc.setHealth(npc.getMaxHealth()); npc.setPosition((float)x + 0.5F, npc.getStartYPos(), (float)z + 0.5F); npc.advanced.soulStonePlayerName = player.getDisplayName(); + npc.advanced.soulStoneInit = true; if(npc.advanced.role == EnumRoleType.Companion && player != null){ PlayerData data = PlayerDataController.instance.getPlayerData(player); if(data.hasCompanion()) diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java b/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java index 83d68da2f..91b704a29 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java @@ -882,6 +882,10 @@ public class ScriptNpc extends ScriptLiving imp public void setRefuseSoulStone(boolean refuse) { npc.advanced.refuseSoulStone = refuse; } + + public boolean isSoulStoneInit() { + return npc.advanced.soulStoneInit; + } public void giveItem(IPlayer player, IItemStack item){ npc.givePlayerItem((EntityPlayer) player.getMCEntity(), item.getMCItemStack()); diff --git a/src/main/java/noppes/npcs/scripted/interfaces/entity/ICustomNpc.java b/src/main/java/noppes/npcs/scripted/interfaces/entity/ICustomNpc.java index 592324fd0..1e0a02af6 100644 --- a/src/main/java/noppes/npcs/scripted/interfaces/entity/ICustomNpc.java +++ b/src/main/java/noppes/npcs/scripted/interfaces/entity/ICustomNpc.java @@ -634,6 +634,11 @@ public interface ICustomNpc extends IEntityLiving { */ String getSoulStonePlayerName(); + /** + * @return true if npc was spawned by soul stone. becomes false after the init function is called. + */ + boolean isSoulStoneInit(); + /** * @return does this npc refuse to be taken by soul stone */