From 77ee4037207b59f57eeb8e2188076b42ffe46f54 Mon Sep 17 00:00:00 2001 From: 1whohears <1whohears28@gmail.com> Date: Thu, 26 May 2022 03:00:49 -0500 Subject: [PATCH] RoleFollowers will not despawn if they have an owner RoleFollowers canDespawn field will be changed back to the value set by the player in the gui/api if they stop following a player --- src/main/java/noppes/npcs/DataStats.java | 7 +++++-- src/main/java/noppes/npcs/client/gui/SubGuiNpcRespawn.java | 1 + src/main/java/noppes/npcs/roles/RoleFollower.java | 2 ++ src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java | 1 + 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/noppes/npcs/DataStats.java b/src/main/java/noppes/npcs/DataStats.java index acb1c691d..e9c1e6313 100644 --- a/src/main/java/noppes/npcs/DataStats.java +++ b/src/main/java/noppes/npcs/DataStats.java @@ -27,6 +27,7 @@ public class DataStats { public int spawnCycle = 0; public boolean hideKilledBody = false; public boolean canDespawn = false; + public boolean playerSetCanDespawn = false; public Resistances resistances = new Resistances(); @@ -110,8 +111,9 @@ public class DataStats { compound.setBoolean("CanDrown", canDrown); compound.setBoolean("BurnInSun", burnInSun); compound.setBoolean("NoFallDamage", noFallDamage); - compound.setBoolean("CanDespawn", canDespawn); compound.setBoolean("AttackInvisible", attackInvisible); + compound.setBoolean("CanDespawn", canDespawn); + compound.setBoolean("PlayerSetCanDespawn", playerSetCanDespawn); return compound; } @@ -169,8 +171,9 @@ public class DataStats { canDrown = compound.getBoolean("CanDrown"); burnInSun = compound.getBoolean("BurnInSun"); noFallDamage = compound.getBoolean("NoFallDamage"); - canDespawn = compound.getBoolean("CanDespawn"); attackInvisible = compound.getBoolean("AttackInvisible"); + canDespawn = compound.getBoolean("CanDespawn"); + playerSetCanDespawn = compound.getBoolean("PlayerSetCanDespawn"); npc.setImmuneToFire(immuneToFire); } diff --git a/src/main/java/noppes/npcs/client/gui/SubGuiNpcRespawn.java b/src/main/java/noppes/npcs/client/gui/SubGuiNpcRespawn.java index 16d5f191c..0779ac282 100644 --- a/src/main/java/noppes/npcs/client/gui/SubGuiNpcRespawn.java +++ b/src/main/java/noppes/npcs/client/gui/SubGuiNpcRespawn.java @@ -55,6 +55,7 @@ public class SubGuiNpcRespawn extends SubGuiInterface implements ITextfieldListe } else if(button.id == 1){ stats.canDespawn = button.getValue() == 1; + stats.playerSetCanDespawn = stats.canDespawn; } else if(button.id == 4){ stats.hideKilledBody = button.getValue() == 1; diff --git a/src/main/java/noppes/npcs/roles/RoleFollower.java b/src/main/java/noppes/npcs/roles/RoleFollower.java index 67a578f3c..c0f1960d2 100644 --- a/src/main/java/noppes/npcs/roles/RoleFollower.java +++ b/src/main/java/noppes/npcs/roles/RoleFollower.java @@ -104,6 +104,7 @@ public class RoleFollower extends RoleInterface{ daysHired = 0; hiredTime = 0; isFollowing = true; + npc.stats.canDespawn = npc.stats.playerSetCanDespawn; } public int getDaysLeft(){ @@ -150,6 +151,7 @@ public class RoleFollower extends RoleInterface{ if(ownerUUID == null || id == null || !ownerUUID.equals(id)) killed(); ownerUUID = id.toString(); + npc.stats.canDespawn = false; } diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java b/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java index dca330886..550a1eaa2 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java @@ -867,6 +867,7 @@ public class ScriptNpc extends ScriptLiving imp public void setNaturallyDespawns(boolean canDespawn) { npc.stats.canDespawn = canDespawn; + npc.stats.playerSetCanDespawn = canDespawn; } public void giveItem(ScriptPlayer player, ScriptItemStack item){