public static bool SetBlock(this IBlockAccess world, int x, int y, int z, string blockName, params string[] args) { IBlock block = GameData.JavaEdition.GetBlock(blockName); if (args == null || args.Length == 0) { return(world.SetBlock(x, y, z, block.DefaultBlockSet)); } if (args.Length == 1) { TagCompound tag = NBTFile.FromJson(args[0]); return(world.SetBlock(x, y, z, new BlockSet(block, tag))); } else if ((args.Length & 1) == 0) { Dictionary <string, string> ps1 = PropertyConverter.From(args); foreach (string key in block.DefaultBlockSet.Properties.Keys) { if (!ps1.ContainsKey(key)) { ps1.Add(key, block.DefaultBlockSet.Properties[key]); } } return(world.SetBlock(x, y, z, new BlockSet(block, ps1))); } return(world.SetBlock(x, y, z, block.DefaultBlockSet)); }