Fix blockprops from gui not updating loaded levels. Partially addresses #473, still need to fix /blockprops.

This commit is contained in:
UnknownShadow200 2017-07-16 21:07:51 +10:00
parent 5f8827a575
commit 253cb65f85
4 changed files with 20 additions and 9 deletions

View File

@ -178,10 +178,15 @@ namespace MCGalaxy {
public static void SetBlocks() { public static void SetBlocks() {
SetCoreProperties(); SetCoreProperties();
BlockProps.Load("core", Block.Props, false); BlockProps.Load("core", Block.Props, false);
BlockDefinition.UpdateGlobalBlockProps();
BlockPerms.Load(); BlockPerms.Load();
UpdateLoadedLevels();
}
public static void UpdateLoadedLevels() {
Level[] loaded = LevelInfo.Loaded.Items; Level[] loaded = LevelInfo.Loaded.Items;
foreach (Level lvl in loaded) { foreach (Level lvl in loaded) {
lvl.UpdateBlockProps();
lvl.UpdateBlockHandlers(); lvl.UpdateBlockHandlers();
} }
} }

View File

@ -46,7 +46,7 @@ namespace MCGalaxy {
public const string GlobalPath = "blockdefs/global.json", GlobalBackupPath = "blockdefs/global.json.bak"; public const string GlobalPath = "blockdefs/global.json", GlobalBackupPath = "blockdefs/global.json.bak";
public static BlockDefinition[] GlobalDefs; public static BlockDefinition[] GlobalDefs;
public static Blocks.BlockProps[] GlobalProps; public static BlockProps[] GlobalProps = new BlockProps[Block.Count * 2];
public BlockDefinition Copy() { public BlockDefinition Copy() {
BlockDefinition def = new BlockDefinition(); BlockDefinition def = new BlockDefinition();
@ -134,8 +134,7 @@ namespace MCGalaxy {
if (oldDefs != null) UpdateLoadedLevels(oldDefs); if (oldDefs != null) UpdateLoadedLevels(oldDefs);
} }
public static void LoadGlobalProps() { public static void UpdateGlobalBlockProps() {
GlobalProps = new BlockProps[Block.Count * 2];
for (int i = 0; i < Block.Count; i++) { for (int i = 0; i < Block.Count; i++) {
GlobalProps[i] = Block.Props[i]; GlobalProps[i] = Block.Props[i];
GlobalProps[i + Block.Count] = BlockProps.MakeDefault(); GlobalProps[i + Block.Count] = BlockProps.MakeDefault();

View File

@ -382,7 +382,7 @@ namespace MCGalaxy {
lvl.UpdateCustomBlock((byte)i, defs[i]); lvl.UpdateCustomBlock((byte)i, defs[i]);
} }
MCGalaxy.Blocks.BlockProps.Load("lvl_" + lvl.MapName, lvl.BlockProps, true); lvl.UpdateBlockProps();
lvl.UpdateBlockHandlers(); lvl.UpdateBlockHandlers();
} }
@ -470,6 +470,13 @@ namespace MCGalaxy {
public ushort smallX, smallY, smallZ; public ushort smallX, smallY, smallZ;
} }
public void UpdateBlockProps() {
for (int i = 0; i < BlockProps.Length; i++) {
BlockProps[i] = BlockDefinition.GlobalProps[i];
}
MCGalaxy.Blocks.BlockProps.Load("lvl_" + MapName, BlockProps, true);
}
public void UpdateBlockHandlers() { public void UpdateBlockHandlers() {
for (int i = 0; i < BlockProps.Length; i++) { for (int i = 0; i < BlockProps.Length; i++) {
UpdateBlockHandler(ExtBlock.FromIndex(i)); UpdateBlockHandler(ExtBlock.FromIndex(i));

View File

@ -203,7 +203,7 @@ namespace MCGalaxy {
Command.InitAll(); Command.InitAll();
CommandPerms.Load(); CommandPerms.Load();
Block.SetBlocks(); Block.SetBlocks();
BlockDefinition.LoadGlobalProps(); BlockDefinition.UpdateGlobalBlockProps();
Awards.Load(); Awards.Load();
Economy.Load(); Economy.Load();
WarpList.Global.Load(null); WarpList.Global.Load(null);