public override void FromBytes(BinaryReader reader, bool forClient) { base.FromBytes(reader, forClient); initialPos = new BlockPos(); initialPos.X = reader.ReadInt32(); initialPos.Y = reader.ReadInt32(); initialPos.Z = reader.ReadInt32(); blockCode = new AssetLocation(reader.ReadString()); bool beIsNull = reader.ReadBoolean(); if (!beIsNull) { blockEntityAttributes = new TreeAttribute(); blockEntityAttributes.FromBytes(reader); blockEntityClass = reader.ReadString(); } if (WatchedAttributes.HasAttribute("fallSound")) { fallSound = new AssetLocation(WatchedAttributes.GetString("fallSound")); } canFallSideways = WatchedAttributes.GetBool("canFallSideways"); dustIntensity = WatchedAttributes.GetFloat("dustIntensity"); DoRemoveBlock = reader.ReadBoolean(); }
public override void FromBytes(BinaryReader reader, bool forClient) { base.FromBytes(reader, forClient); lastRunningHeldUseAnimation = WatchedAttributes.GetString("lrHeldUseAnim"); lastRunningHeldHitAnimation = WatchedAttributes.GetString("lrHeldHitAnim"); lastRunningRightHeldIdleAnimation = WatchedAttributes.GetString("lrRightHeldIdleAnim"); }
public override void Initialize(EntityProperties properties, ICoreAPI api, long InChunkIndex3d) { if (removedBlockentity != null) { this.blockEntityAttributes = new TreeAttribute(); removedBlockentity.ToTreeAttributes(blockEntityAttributes); blockEntityClass = api.World.ClassRegistry.GetBlockEntityClass(removedBlockentity.GetType()); } SimulationRange = (int)(0.75f * GlobalConstants.DefaultTrackingRange); base.Initialize(properties, api, InChunkIndex3d); // Need to capture this now before we remove the block and start to fall drops = Block.GetDrops(api.World, initialPos, null); lightHsv = Block.GetLightHsv(World.BlockAccessor, initialPos); SidedPos.Motion.Y = -0.02; blockAsStack = new ItemStack(Block); if (api.Side == EnumAppSide.Client && fallSound != null && fallingNow.Count < 100) { fallingNow.Add(EntityId); ICoreClientAPI capi = api as ICoreClientAPI; sound = capi.World.LoadSound(new SoundParams() { Location = fallSound.WithPathPrefixOnce("sounds/").WithPathAppendixOnce(".ogg"), Position = new Vec3f((float)Pos.X, (float)Pos.Y, (float)Pos.Z), Range = 32, Pitch = 0.8f + (float)capi.World.Rand.NextDouble() * 0.3f, Volume = 1, SoundType = EnumSoundType.Ambient }); sound.Start(); soundStartDelay = 0.05f + (float)capi.World.Rand.NextDouble() / 3f; } canFallSideways = WatchedAttributes.GetBool("canFallSideways"); dustIntensity = WatchedAttributes.GetFloat("dustIntensity"); if (WatchedAttributes.HasAttribute("fallSound")) { fallSound = new AssetLocation(WatchedAttributes.GetString("fallSound")); } if (api.World.Side == EnumAppSide.Client) { particleSys = api.ModLoader.GetModSystem <FallingBlockParticlesModSystem>(); particleSys.Register(this); physicsBh = GetBehavior <EntityBehaviorPassivePhysics>(); } }
public override void Initialize(EntityProperties properties, ICoreAPI api, long InChunkIndex3d) { if (removedBlockentity != null) { this.blockEntityAttributes = new TreeAttribute(); removedBlockentity.ToTreeAttributes(blockEntityAttributes); blockEntityClass = api.World.ClassRegistry.GetBlockEntityClass(removedBlockentity.GetType()); } SimulationRange = 3 * api.World.BlockAccessor.ChunkSize; base.Initialize(properties, api, InChunkIndex3d); // Need to capture this now before we remove the block and start to fall drops = Block.GetDrops(api.World, initialPos, null); lightHsv = Block.GetLightHsv(World.BlockAccessor, initialPos); LocalPos.Motion.Y = -0.02; blockAsStack = new ItemStack(Block); if (api.Side == EnumAppSide.Client && fallSound != null) { ICoreClientAPI capi = api as ICoreClientAPI; sound = capi.World.LoadSound(new SoundParams() { Location = fallSound.WithPathPrefixOnce("sounds/").WithPathAppendixOnce(".ogg"), Position = new Vec3f((float)Pos.X, (float)Pos.Y, (float)Pos.Z), Range = 32, Pitch = 0.8f + (float)capi.World.Rand.NextDouble() * 0.3f, Volume = 1, SoundType = EnumSoundType.Ambient }); soundStartDelay = 0.05f + (float)capi.World.Rand.NextDouble() / 3f; } canFallSideways = WatchedAttributes.GetBool("canFallSideways"); dustyFall = WatchedAttributes.GetBool("dustyFall"); if (WatchedAttributes.HasAttribute("fallSound")) { fallSound = new AssetLocation(WatchedAttributes.GetString("fallSound")); } }
public override void FromBytes(BinaryReader reader, bool forClient) { base.FromBytes(reader, forClient); if (WatchedAttributes != null) { string inventoryID = WatchedAttributes.GetString("invid"); int qslots = WatchedAttributes.GetInt("qslots", 0); Inventory = new InventoryGeneric(qslots, inventoryID, Api); Inventory.FromTreeAttributes(WatchedAttributes); if (Api != null) { Inventory.ResolveBlocksOrItems(); } } }
public override string GetInfoText() { StringBuilder sb = new StringBuilder(); if (!Alive) { sb.AppendLine(Lang.Get(Code.Domain + ":item-dead-creature-" + Code.Path)); } else { sb.AppendLine(Lang.Get(Code.Domain + ":item-creature-" + Code.Path)); } string charClass = WatchedAttributes.GetString("characterClass"); if (Lang.HasTranslation("characterclass-" + charClass)) { sb.AppendLine(Lang.Get("characterclass-" + charClass)); } return(sb.ToString()); }
public override void OnInteract(EntityAgent byEntity, IItemSlot slot, Vec3d hitPosition, int mode) { if (!Alive || World.Side == EnumAppSide.Client || mode == 0) { base.OnInteract(byEntity, slot, hitPosition, mode); } string owneruid = WatchedAttributes.GetString("ownerUid", null); string agentUid = (byEntity as EntityPlayer)?.PlayerUID; if (agentUid != null && (owneruid == null || owneruid == "" || owneruid == agentUid) && byEntity.Controls.Sneak) { ItemStack stack = new ItemStack(byEntity.World.GetItem(new AssetLocation("strawdummy"))); if (!byEntity.TryGiveItemStack(stack)) { byEntity.World.SpawnItemEntity(stack, ServerPos.XYZ); } Die(); return; } base.OnInteract(byEntity, slot, hitPosition, mode); }