From 15bfbcdbd109da5be5878139a067ee42efbf54ac Mon Sep 17 00:00:00 2001 From: luisc Date: Mon, 18 Oct 2021 07:02:19 -0500 Subject: [PATCH] Added storeAsClone function. Made some fields in Script Entity, NPC, and Player public because of the refactoring. --- .../noppes/npcs/scripted/entity/ScriptEntity.java | 11 +++++++++++ .../java/noppes/npcs/scripted/entity/ScriptNpc.java | 2 +- .../noppes/npcs/scripted/entity/ScriptPlayer.java | 2 +- .../java/noppes/npcs/scripted/interfaces/IEntity.java | 2 ++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java b/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java index ac8fd300e..c50b7be1a 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptEntity.java @@ -20,7 +20,9 @@ import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; import noppes.npcs.NoppesUtilServer; import noppes.npcs.controllers.ScriptController; +import noppes.npcs.controllers.ServerCloneController; import noppes.npcs.entity.EntityNPCInterface; +import noppes.npcs.scripted.CustomNPCsException; import noppes.npcs.scripted.NpcAPI; import noppes.npcs.scripted.ScriptEntityParticle; import noppes.npcs.scripted.ScriptItemStack; @@ -495,4 +497,13 @@ public class ScriptEntity implements IEntity { public void setNbt(INbt nbt) { this.entity.readFromNBT(nbt.getMCNBT()); } + + public void storeAsClone(int tab, String name) { + NBTTagCompound compound = new NBTTagCompound(); + if (!this.entity.writeToNBTOptional(compound)) { + throw new CustomNPCsException("Cannot store dead entities", new Object[0]); + } else { + ServerCloneController.Instance.addClone(compound, name, tab); + } + } } diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java b/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java index 01b96a2b3..2b1b9473c 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptNpc.java @@ -31,7 +31,7 @@ import noppes.npcs.scripted.roles.ScriptRoleTransporter; import noppes.npcs.util.ValueUtil; public class ScriptNpc extends ScriptLiving implements ICustomNpc { - protected EntityCustomNpc npc; + public EntityCustomNpc npc; public ScriptNpc(T npc){ super(npc); diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java index 47e8925ce..0d967cfee 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java @@ -29,7 +29,7 @@ import noppes.npcs.scripted.interfaces.IPlayer; import noppes.npcs.util.ValueUtil; public class ScriptPlayer extends ScriptLivingBase implements IPlayer { - protected T player; + public T player; public ScriptPlayer(T player){ super(player); this.player = player; diff --git a/src/main/java/noppes/npcs/scripted/interfaces/IEntity.java b/src/main/java/noppes/npcs/scripted/interfaces/IEntity.java index 4478e69bc..331557a46 100644 --- a/src/main/java/noppes/npcs/scripted/interfaces/IEntity.java +++ b/src/main/java/noppes/npcs/scripted/interfaces/IEntity.java @@ -300,4 +300,6 @@ public interface IEntity { * @return Returns minecrafts entity */ public T getMCEntity(); + + void storeAsClone(int tab, String name); }