From 9fef65b1948336f47fd7ba19f44f0f333d2b4ba5 Mon Sep 17 00:00:00 2001 From: 1whohears <1whohears28@gmail.com> Date: Sat, 28 May 2022 23:40:01 -0500 Subject: [PATCH] get the name of the player who spawned this npc with soulstone --- src/main/java/noppes/npcs/DataAdvanced.java | 6 ++++++ .../java/noppes/npcs/items/ItemSoulstoneFilled.java | 2 +- .../java/noppes/npcs/scripted/entity/ScriptNpc.java | 8 ++++++++ .../npcs/scripted/interfaces/entity/ICustomNpc.java | 12 +++++++++++- 4 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/main/java/noppes/npcs/DataAdvanced.java b/src/main/java/noppes/npcs/DataAdvanced.java index 67200a374..cb93437c7 100644 --- a/src/main/java/noppes/npcs/DataAdvanced.java +++ b/src/main/java/noppes/npcs/DataAdvanced.java @@ -52,6 +52,8 @@ public class DataAdvanced { public boolean attackOtherFactions = false; public boolean defendFaction = false; public boolean disablePitch = false; + + public String soulStonePlayerName; public DataAdvanced(EntityNPCInterface npc) { this.npc = npc; @@ -83,6 +85,8 @@ public class DataAdvanced { compound.setTag("NPCDialogOptions", nbtDialogs(npc.dialogs)); + compound.setString("SoulStonePlayerName", soulStonePlayerName); + return compound; } @@ -113,6 +117,8 @@ public class DataAdvanced { factions.readFromNBT(compound.getCompoundTag("FactionPoints")); npc.dialogs = getDialogs(compound.getTagList("NPCDialogOptions", 10)); + + soulStonePlayerName = compound.getString("SoulStonePlayerName"); } private HashMap getDialogs(NBTTagList tagList) { diff --git a/src/main/java/noppes/npcs/items/ItemSoulstoneFilled.java b/src/main/java/noppes/npcs/items/ItemSoulstoneFilled.java index 416bb62a3..3ead74869 100644 --- a/src/main/java/noppes/npcs/items/ItemSoulstoneFilled.java +++ b/src/main/java/noppes/npcs/items/ItemSoulstoneFilled.java @@ -78,7 +78,7 @@ public class ItemSoulstoneFilled extends Item { npc.ai.startPos = new int[]{x, y, z}; npc.setHealth(npc.getMaxHealth()); npc.setPosition((float)x + 0.5F, npc.getStartYPos(), (float)z + 0.5F); - + npc.advanced.soulStonePlayerName = player.getDisplayName(); 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 ef258ed41..927292f89 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java @@ -862,6 +862,14 @@ public class ScriptNpc extends ScriptLiving imp npc.stats.canDespawn = canDespawn; npc.stats.playerSetCanDespawn = canDespawn; } + + public boolean spawnedFromSoulStone() { + return npc.advanced.soulStonePlayerName != null; + } + + public String getSoulStonePlayerName() { + return npc.advanced.soulStonePlayerName; + } 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 754395065..452b77b08 100644 --- a/src/main/java/noppes/npcs/scripted/interfaces/entity/ICustomNpc.java +++ b/src/main/java/noppes/npcs/scripted/interfaces/entity/ICustomNpc.java @@ -623,7 +623,17 @@ public interface ICustomNpc extends IEntityLiving { * @param canDespawn True if the NPC should naturally despawn. False otherwise. */ void setNaturallyDespawns(boolean canDespawn); - + + /** + * @return true if this npc was spawned by a player using soulstone + */ + boolean spawnedFromSoulStone(); + + /** + * @return the name of the player who spawned this npc using soulstone. null if not spawned by soulstone + */ + String getSoulStonePlayerName(); + /** * @param player The player to give the item to * @param item The item given to the player