/// <summary> /// Attempts to un-mount the player. /// </summary> /// <returns>Whether or not unmounting was successful</returns> public bool TryUnmount() { if (MountedOn?.SuggestedAnimation != null) { string anim = MountedOn.SuggestedAnimation.ToLowerInvariant(); AnimManager?.StopAnimation(anim); } MountedOn?.DidUnmount(this); this.MountedOn = null; if (WatchedAttributes.HasAttribute("mountedOn")) { WatchedAttributes.RemoveAttribute("mountedOn"); } return(true); }
public override void Initialize(EntityProperties properties, ICoreAPI api, long InChunkIndex3d) { base.Initialize(properties, api, InChunkIndex3d); if (World.Side == EnumAppSide.Server) { servercontrols = controls; } if (WatchedAttributes["mountedOn"] != null) { MountedOn = World.ClassRegistry.CreateMountable(WatchedAttributes["mountedOn"] as TreeAttribute); if (MountedOn != null) { MountedOn.DidMount(this); } } }
/// <summary> /// Serializes the slots contents to be stored in the SaveGame /// </summary> /// <returns></returns> public override void ToBytes(BinaryWriter writer, bool forClient) { if (MountedOn != null) { TreeAttribute mountableTree = new TreeAttribute(); MountedOn?.MountableToTreeAttributes(mountableTree); WatchedAttributes["mountedOn"] = mountableTree; } else { if (WatchedAttributes.HasAttribute("mountedOn")) { WatchedAttributes.RemoveAttribute("mountedOn"); } } base.ToBytes(writer, forClient); controls.ToBytes(writer); }