diff --git a/src/api b/src/api index 6fc9c2f6e..34d7c5049 160000 --- a/src/api +++ b/src/api @@ -1 +1 @@ -Subproject commit 6fc9c2f6e8b0024dc7d98abf0663887138938bf0 +Subproject commit 34d7c504964517ed8236dc24310dca62af8bd92e diff --git a/src/main/java/noppes/npcs/controllers/ServerCloneController.java b/src/main/java/noppes/npcs/controllers/ServerCloneController.java index 354eab420..17f9bef44 100644 --- a/src/main/java/noppes/npcs/controllers/ServerCloneController.java +++ b/src/main/java/noppes/npcs/controllers/ServerCloneController.java @@ -339,7 +339,13 @@ public class ServerCloneController implements ICloneHandler { } } - public void set(int tab, String name, IEntity entity) { + public boolean has(int tab, String name) { + NBTTagCompound compound = this.getCloneData((ICommandSender)null, name, tab); + return compound != null; + } + + + public void set(int tab, String name, IEntity entity) { NBTTagCompound compound = new NBTTagCompound(); if (!entity.getMCEntity().writeMountToNBT(compound)) throw new CustomNPCsException("Cannot save dead entities", new Object[0]); diff --git a/src/main/java/noppes/npcs/scripted/ScriptWorld.java b/src/main/java/noppes/npcs/scripted/ScriptWorld.java index a1612b840..168748d58 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptWorld.java +++ b/src/main/java/noppes/npcs/scripted/ScriptWorld.java @@ -14,10 +14,8 @@ import net.minecraft.nbt.NBTTagString; import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntitySign; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.MathHelper; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.Vec3; +import net.minecraft.util.*; +import net.minecraft.util.math.BlockPos; import net.minecraft.world.WorldServer; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.BlockSnapshot; @@ -1373,4 +1371,9 @@ public class ScriptWorld implements IWorld { public String toString() { return "DIM" + this.getDimensionID(); } + + @Override + public void broadcast(String message){ + world.func_73046_m().getConfigurationManager().sendChatMsg(new ChatComponentText(message)); + } } diff --git a/src/main/java/noppes/npcs/scripted/item/ScriptItemStack.java b/src/main/java/noppes/npcs/scripted/item/ScriptItemStack.java index 82e5fec23..d1ad1f2f3 100644 --- a/src/main/java/noppes/npcs/scripted/item/ScriptItemStack.java +++ b/src/main/java/noppes/npcs/scripted/item/ScriptItemStack.java @@ -6,10 +6,7 @@ import net.minecraft.enchantment.Enchantment; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.init.Blocks; import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.item.ItemFood; -import net.minecraft.item.ItemStack; -import net.minecraft.item.ItemSword; +import net.minecraft.item.*; import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTBase.NBTPrimitive; import net.minecraft.nbt.NBTTagCompound; @@ -19,6 +16,7 @@ import net.minecraftforge.common.IPlantable; import noppes.npcs.NoppesUtilPlayer; import noppes.npcs.api.INbt; import noppes.npcs.api.item.IItemStack; +import noppes.npcs.items.ItemScripted; import noppes.npcs.scripted.CustomNPCsException; import noppes.npcs.scripted.NpcAPI; import noppes.npcs.scripted.ScriptNbt; @@ -310,6 +308,33 @@ public class ScriptItemStack implements IItemStack { } } + private static ScriptItemStack createNew(ItemStack item){ + if(item == null) + return null; + + if(item.getItem() instanceof ItemScripted) { + return new ScriptCustomItem(item); + } + if(item.getItem() == Items.written_book || item.getItem() == Items.writable_book || item.getItem() instanceof ItemWritableBook || item.getItem() instanceof ItemEditableBook) + return new ScriptItemBook(item); + if(item.getItem() instanceof ItemArmor) + return new ScriptItemArmor(item); + if (item.getItem() instanceof ItemBlock) + return new ScriptItemBlock(item); + + return new ScriptItemStack(item); + } + + @Override + public IItemStack copy() { + return createNew(item.copy()); + } + + @Override + public int getMaxItemDamage(){ + return item.getMaxDamage(); + } + /** * @since 1.7.10d * @return Returns whether this item is a book