Last active
July 2, 2016 16:26
-
-
Save NiclasOlofsson/5ac69d743c58b8910697732b322fc2e3 to your computer and use it in GitHub Desktop.
Hologram class based on invisible players.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Hologram : Mob | |
{ | |
public UUID Uuid { get; private set; } | |
public string Name { get; private set; } | |
public bool Silent { get; set; } | |
public bool HideNameTag { get; set; } | |
public bool NoAi { get; set; } | |
public Hologram(Level level) : base(63, level) | |
{ | |
Uuid = new UUID(Guid.NewGuid().ToByteArray()); | |
Width = 0.6; | |
Length = 0.6; | |
Height = 1.80; | |
IsSpawned = false; | |
IsInvisible = true; | |
HealthManager = new ActionHealthManager(this, (source) => | |
{ | |
}); | |
} | |
[Wired] | |
public void SetNameTag(string nameTag) | |
{ | |
NameTag = nameTag; | |
BroadcastSetEntityData(); | |
} | |
public override MetadataDictionary GetMetadata() | |
{ | |
MetadataDictionary metadata = base.GetMetadata(); | |
metadata[0] = new MetadataByte(GetDataValue()); | |
metadata[1] = new MetadataShort(HealthManager.Air); | |
metadata[2] = new MetadataString(NameTag ?? Name); | |
metadata[3] = new MetadataByte(!HideNameTag); | |
metadata[4] = new MetadataByte(Silent); | |
metadata[7] = new MetadataInt(0); // Potion Color | |
metadata[8] = new MetadataByte(0); // Potion Ambient | |
metadata[15] = new MetadataByte(NoAi); | |
metadata[16] = new MetadataByte(0); // Player flags | |
metadata[23] = new MetadataInt(-1); // Leads EID (target or holder?) | |
metadata[24] = new MetadataByte(0); // Leads on/off | |
return metadata; | |
} | |
public override void SpawnToPlayers(Player[] players) | |
{ | |
{ | |
McpeAddPlayer message = McpeAddPlayer.CreateObject(); | |
message.uuid = Uuid; | |
message.username = NameTag ?? Name; | |
message.entityId = EntityId; | |
message.x = KnownPosition.X; | |
message.y = (float) (KnownPosition.Y - Height); | |
message.z = KnownPosition.Z; | |
message.yaw = KnownPosition.Yaw; | |
message.headYaw = KnownPosition.HeadYaw; | |
message.pitch = KnownPosition.Pitch; | |
message.metadata = GetMetadata(); | |
Level.RelayBroadcast(players, message); | |
} | |
} | |
public override void DespawnFromPlayers(Player[] players) | |
{ | |
McpeRemoveEntity mcpeRemovePlayer = McpeRemoveEntity.CreateObject(); | |
mcpeRemovePlayer.entityId = EntityId; | |
Level.RelayBroadcast(players, mcpeRemovePlayer); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment