Send all inventory order packets after they've been defined.

This commit is contained in:
UnknownShadow200 2017-08-16 10:13:35 +10:00
parent 0441503bd4
commit 8863b146aa
3 changed files with 17 additions and 9 deletions

View File

@ -264,15 +264,18 @@ namespace MCGalaxy {
internal static void SendLevelCustomBlocks(Player pl) {
BlockDefinition[] defs = pl.level.CustomBlockDefs;
bool supportsOrder = pl.HasCpeExt(CpeExt.InventoryOrder);
BlockDefinition[] defs = pl.level.CustomBlockDefs;
for (int i = 1; i < defs.Length; i++) {
BlockDefinition def = defs[i];
if (def == null) continue;
pl.Send(def.MakeDefinePacket(pl));
if (def.InventoryOrder >= 0 && supportsOrder) {
if (def != null) pl.Send(def.MakeDefinePacket(pl));
}
}
internal static void SendLevelInventoryOrder(Player pl) {
BlockDefinition[] defs = pl.level.CustomBlockDefs;
for (int i = 1; i < defs.Length; i++) {
BlockDefinition def = defs[i];
if (def != null && def.InventoryOrder >= 0) {
pl.Send(Packet.SetInventoryOrder((byte)i, (byte)def.InventoryOrder));
}
}

View File

@ -418,7 +418,7 @@ namespace MCGalaxy.Commands.CPE {
SendEditHelp(p, arg); return;
}
def.InventoryOrder = order - 1;
def.InventoryOrder = order;
BlockDefinition.UpdateOrder(def, global, level);
BlockDefinition.Save(global, level);
Player.Message(p, "Set inventory order for {0} to {1}", blockName, value);

View File

@ -200,9 +200,14 @@ namespace MCGalaxy {
Send(Packet.LevelInitalise());
if (hasBlockDefs) {
if (oldLevel != null && oldLevel != level)
if (oldLevel != null && oldLevel != level) {
RemoveOldLevelCustomBlocks(oldLevel);
}
BlockDefinition.SendLevelCustomBlocks(this);
if (HasCpeExt(CpeExt.InventoryOrder)) {
BlockDefinition.SendLevelInventoryOrder(this);
}
}
using (LevelChunkStream s = new LevelChunkStream(this))